elseware-ui 2.37.1 → 2.38.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/dist/index.css +864 -4673
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +875 -26
- package/dist/index.d.ts +875 -26
- package/dist/index.js +2809 -385
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2757 -386
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -2
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ var jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
var bs = require('react-icons/bs');
|
|
7
7
|
var fa = require('react-icons/fa');
|
|
8
8
|
var recharts = require('recharts');
|
|
9
|
-
var
|
|
9
|
+
var classNames66 = require('classnames');
|
|
10
10
|
var fa6 = require('react-icons/fa6');
|
|
11
11
|
var ReactWorldFlags = require('react-world-flags');
|
|
12
12
|
var emojiFlags = require('emoji-flags');
|
|
@@ -18,9 +18,40 @@ var framerMotion = require('framer-motion');
|
|
|
18
18
|
var ai = require('react-icons/ai');
|
|
19
19
|
var reactBeautifulDnd = require('react-beautiful-dnd');
|
|
20
20
|
var md = require('react-icons/md');
|
|
21
|
-
require('@mdxeditor/editor/style.css');
|
|
22
|
-
var editor = require('@mdxeditor/editor');
|
|
23
21
|
var bi = require('react-icons/bi');
|
|
22
|
+
var ReactMarkdown = require('react-markdown');
|
|
23
|
+
var remarkGfm = require('remark-gfm');
|
|
24
|
+
var rehypeRaw = require('rehype-raw');
|
|
25
|
+
var rehypeSanitize = require('rehype-sanitize');
|
|
26
|
+
var reactSyntaxHighlighter = require('react-syntax-highlighter');
|
|
27
|
+
var prism = require('react-syntax-highlighter/dist/esm/styles/prism');
|
|
28
|
+
var bash = require('react-syntax-highlighter/dist/esm/languages/prism/bash');
|
|
29
|
+
var c = require('react-syntax-highlighter/dist/esm/languages/prism/c');
|
|
30
|
+
var cpp = require('react-syntax-highlighter/dist/esm/languages/prism/cpp');
|
|
31
|
+
var css = require('react-syntax-highlighter/dist/esm/languages/prism/css');
|
|
32
|
+
var go = require('react-syntax-highlighter/dist/esm/languages/prism/go');
|
|
33
|
+
var java = require('react-syntax-highlighter/dist/esm/languages/prism/java');
|
|
34
|
+
var javascript = require('react-syntax-highlighter/dist/esm/languages/prism/javascript');
|
|
35
|
+
var json = require('react-syntax-highlighter/dist/esm/languages/prism/json');
|
|
36
|
+
var jsx210 = require('react-syntax-highlighter/dist/esm/languages/prism/jsx');
|
|
37
|
+
var markup = require('react-syntax-highlighter/dist/esm/languages/prism/markup');
|
|
38
|
+
var python = require('react-syntax-highlighter/dist/esm/languages/prism/python');
|
|
39
|
+
var rust = require('react-syntax-highlighter/dist/esm/languages/prism/rust');
|
|
40
|
+
var scss = require('react-syntax-highlighter/dist/esm/languages/prism/scss');
|
|
41
|
+
var sql = require('react-syntax-highlighter/dist/esm/languages/prism/sql');
|
|
42
|
+
var tsx = require('react-syntax-highlighter/dist/esm/languages/prism/tsx');
|
|
43
|
+
var typescript = require('react-syntax-highlighter/dist/esm/languages/prism/typescript');
|
|
44
|
+
var yaml = require('react-syntax-highlighter/dist/esm/languages/prism/yaml');
|
|
45
|
+
var CodeMirror = require('@uiw/react-codemirror');
|
|
46
|
+
var langMarkdown = require('@codemirror/lang-markdown');
|
|
47
|
+
var themeOneDark = require('@codemirror/theme-one-dark');
|
|
48
|
+
var editor = require('@mdxeditor/editor');
|
|
49
|
+
require('@mdxeditor/editor/style.css');
|
|
50
|
+
var react = require('@milkdown/react');
|
|
51
|
+
var core = require('@milkdown/kit/core');
|
|
52
|
+
var commonmark = require('@milkdown/kit/preset/commonmark');
|
|
53
|
+
var gfm = require('@milkdown/kit/preset/gfm');
|
|
54
|
+
var listener = require('@milkdown/kit/plugin/listener');
|
|
24
55
|
|
|
25
56
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
57
|
|
|
@@ -43,10 +74,32 @@ function _interopNamespace(e) {
|
|
|
43
74
|
}
|
|
44
75
|
|
|
45
76
|
var React2__default = /*#__PURE__*/_interopDefault(React2);
|
|
46
|
-
var
|
|
77
|
+
var classNames66__default = /*#__PURE__*/_interopDefault(classNames66);
|
|
47
78
|
var ReactWorldFlags__default = /*#__PURE__*/_interopDefault(ReactWorldFlags);
|
|
48
79
|
var emojiFlags__default = /*#__PURE__*/_interopDefault(emojiFlags);
|
|
49
80
|
var d3__namespace = /*#__PURE__*/_interopNamespace(d3);
|
|
81
|
+
var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
|
|
82
|
+
var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
|
|
83
|
+
var rehypeRaw__default = /*#__PURE__*/_interopDefault(rehypeRaw);
|
|
84
|
+
var rehypeSanitize__default = /*#__PURE__*/_interopDefault(rehypeSanitize);
|
|
85
|
+
var bash__default = /*#__PURE__*/_interopDefault(bash);
|
|
86
|
+
var c__default = /*#__PURE__*/_interopDefault(c);
|
|
87
|
+
var cpp__default = /*#__PURE__*/_interopDefault(cpp);
|
|
88
|
+
var css__default = /*#__PURE__*/_interopDefault(css);
|
|
89
|
+
var go__default = /*#__PURE__*/_interopDefault(go);
|
|
90
|
+
var java__default = /*#__PURE__*/_interopDefault(java);
|
|
91
|
+
var javascript__default = /*#__PURE__*/_interopDefault(javascript);
|
|
92
|
+
var json__default = /*#__PURE__*/_interopDefault(json);
|
|
93
|
+
var jsx210__default = /*#__PURE__*/_interopDefault(jsx210);
|
|
94
|
+
var markup__default = /*#__PURE__*/_interopDefault(markup);
|
|
95
|
+
var python__default = /*#__PURE__*/_interopDefault(python);
|
|
96
|
+
var rust__default = /*#__PURE__*/_interopDefault(rust);
|
|
97
|
+
var scss__default = /*#__PURE__*/_interopDefault(scss);
|
|
98
|
+
var sql__default = /*#__PURE__*/_interopDefault(sql);
|
|
99
|
+
var tsx__default = /*#__PURE__*/_interopDefault(tsx);
|
|
100
|
+
var typescript__default = /*#__PURE__*/_interopDefault(typescript);
|
|
101
|
+
var yaml__default = /*#__PURE__*/_interopDefault(yaml);
|
|
102
|
+
var CodeMirror__default = /*#__PURE__*/_interopDefault(CodeMirror);
|
|
50
103
|
|
|
51
104
|
// node_modules/clsx/dist/clsx.mjs
|
|
52
105
|
function r(e) {
|
|
@@ -166,7 +219,7 @@ var CURRENCIES = [
|
|
|
166
219
|
|
|
167
220
|
// src/utils/currency.ts
|
|
168
221
|
var getCurrencySymbol = (code) => {
|
|
169
|
-
const currency = CURRENCIES.find((
|
|
222
|
+
const currency = CURRENCIES.find((c2) => c2.code === code);
|
|
170
223
|
return currency ? currency.symbol : null;
|
|
171
224
|
};
|
|
172
225
|
|
|
@@ -3760,7 +3813,7 @@ function renderTransitionChild(children, className) {
|
|
|
3760
3813
|
}
|
|
3761
3814
|
const element = child;
|
|
3762
3815
|
return React2__default.default.cloneElement(element, {
|
|
3763
|
-
className:
|
|
3816
|
+
className: classNames66__default.default(element.props.className, className)
|
|
3764
3817
|
});
|
|
3765
3818
|
}
|
|
3766
3819
|
function TransitionBase({
|
|
@@ -3780,7 +3833,7 @@ function TransitionBase({
|
|
|
3780
3833
|
if (!mounted && unmountOnExit) {
|
|
3781
3834
|
return null;
|
|
3782
3835
|
}
|
|
3783
|
-
const transitionClassName =
|
|
3836
|
+
const transitionClassName = classNames66__default.default(
|
|
3784
3837
|
visibility ? enterClassName : leaveClassName,
|
|
3785
3838
|
active ? visibleClassName : hiddenClassName
|
|
3786
3839
|
);
|
|
@@ -3955,7 +4008,7 @@ function Accordion({
|
|
|
3955
4008
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
3956
4009
|
"div",
|
|
3957
4010
|
{
|
|
3958
|
-
className:
|
|
4011
|
+
className: classNames66__default.default(
|
|
3959
4012
|
"inline-flex gap-3 items-center px-3 py-2 w-full eui-gradient-to-r-general-xs",
|
|
3960
4013
|
{
|
|
3961
4014
|
"hover:cursor-pointer": toggleOnSummaryClick
|
|
@@ -3976,7 +4029,7 @@ function Accordion({
|
|
|
3976
4029
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3977
4030
|
fa6.FaCircleChevronDown,
|
|
3978
4031
|
{
|
|
3979
|
-
className:
|
|
4032
|
+
className: classNames66__default.default("text-xl transition-transform duration-300", {
|
|
3980
4033
|
"rotate-180": collapse
|
|
3981
4034
|
})
|
|
3982
4035
|
}
|
|
@@ -3990,7 +4043,7 @@ function Accordion({
|
|
|
3990
4043
|
/* @__PURE__ */ jsxRuntime.jsx(TransitionAccordion_default, { visibility: collapse, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3991
4044
|
"div",
|
|
3992
4045
|
{
|
|
3993
|
-
className:
|
|
4046
|
+
className: classNames66__default.default(
|
|
3994
4047
|
"border-t border-t-eui-dark-400/40 eui-text-sm",
|
|
3995
4048
|
{
|
|
3996
4049
|
"p-5": enableChildrenPadding
|
|
@@ -4074,7 +4127,7 @@ function CardHeader({ icon, title, description, className }) {
|
|
|
4074
4127
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4075
4128
|
"div",
|
|
4076
4129
|
{
|
|
4077
|
-
className:
|
|
4130
|
+
className: classNames66__default.default(
|
|
4078
4131
|
"flex items-start gap-4 p-6 border-b border-white/10",
|
|
4079
4132
|
className
|
|
4080
4133
|
),
|
|
@@ -4090,14 +4143,14 @@ function CardHeader({ icon, title, description, className }) {
|
|
|
4090
4143
|
}
|
|
4091
4144
|
var CardHeader_default = CardHeader;
|
|
4092
4145
|
function CardContent({ children, className }) {
|
|
4093
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
4146
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames66__default.default("p-6 text-gray-300 text-sm", className), children });
|
|
4094
4147
|
}
|
|
4095
4148
|
var CardContent_default = CardContent;
|
|
4096
4149
|
function CardFooter({ children, className }) {
|
|
4097
4150
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4098
4151
|
"div",
|
|
4099
4152
|
{
|
|
4100
|
-
className:
|
|
4153
|
+
className: classNames66__default.default(
|
|
4101
4154
|
"flex items-center gap-3 p-5 border-t border-white/10 text-sm text-gray-400",
|
|
4102
4155
|
className
|
|
4103
4156
|
),
|
|
@@ -4139,7 +4192,7 @@ function GradientAnimation({
|
|
|
4139
4192
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4140
4193
|
"div",
|
|
4141
4194
|
{
|
|
4142
|
-
className:
|
|
4195
|
+
className: classNames66__default.default("absolute inset-0"),
|
|
4143
4196
|
style: {
|
|
4144
4197
|
background: `linear-gradient(${cfg.angle}deg, ${cfg.colors?.join(",")})`,
|
|
4145
4198
|
backgroundSize: cfg.backgroundSize,
|
|
@@ -4285,7 +4338,7 @@ function MotionSurface({
|
|
|
4285
4338
|
}) {
|
|
4286
4339
|
const AnimationComponent = animationVariant === "custom" ? CustomAnimation : animationRegistry[animationVariant];
|
|
4287
4340
|
const OverlayComponent = overlay === "custom" ? CustomOverlay : overlayRegistry[overlay];
|
|
4288
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
4341
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: classNames66__default.default("relative overflow-hidden", className), children: [
|
|
4289
4342
|
AnimationComponent && /* @__PURE__ */ jsxRuntime.jsx(AnimationComponent, { config: animationConfig, animated }),
|
|
4290
4343
|
OverlayComponent && /* @__PURE__ */ jsxRuntime.jsx(OverlayComponent, { config: overlayConfig }),
|
|
4291
4344
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative z-10", children })
|
|
@@ -5689,7 +5742,7 @@ var Backdrop = ({ children, styles }) => {
|
|
|
5689
5742
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
5690
5743
|
"div",
|
|
5691
5744
|
{
|
|
5692
|
-
className:
|
|
5745
|
+
className: classNames66__default.default({
|
|
5693
5746
|
"bg-black/75 top-0 bottom-0 left-0 right-0 z-50 fixed inset-0 flex items-center justify-center overflow-hidden": true,
|
|
5694
5747
|
[`${styles}`]: styles
|
|
5695
5748
|
}),
|
|
@@ -6213,7 +6266,7 @@ var Form = ({
|
|
|
6213
6266
|
/* @__PURE__ */ jsxRuntime.jsx(UnsavedChangesGuard_default, { formik: formik$1, enabled: warnOnUnsavedChanges }),
|
|
6214
6267
|
/* @__PURE__ */ jsxRuntime.jsx(DirtyObserver_default, { formik: formik$1, onDirtyChange }),
|
|
6215
6268
|
/* @__PURE__ */ jsxRuntime.jsx(FormObserver_default, { formik: formik$1, onChange }),
|
|
6216
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className:
|
|
6269
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames66__default.default(styles), children })
|
|
6217
6270
|
] })
|
|
6218
6271
|
}
|
|
6219
6272
|
);
|
|
@@ -6255,16 +6308,16 @@ function normalizeToastStatus(status = "default" /* default */) {
|
|
|
6255
6308
|
}
|
|
6256
6309
|
function emit() {
|
|
6257
6310
|
const snapshot = [...toasts];
|
|
6258
|
-
listeners.forEach((
|
|
6259
|
-
|
|
6311
|
+
listeners.forEach((listener2) => {
|
|
6312
|
+
listener2(snapshot);
|
|
6260
6313
|
});
|
|
6261
6314
|
}
|
|
6262
6315
|
var toastStore = {
|
|
6263
|
-
subscribe(
|
|
6264
|
-
listeners.add(
|
|
6265
|
-
|
|
6316
|
+
subscribe(listener2) {
|
|
6317
|
+
listeners.add(listener2);
|
|
6318
|
+
listener2([...toasts]);
|
|
6266
6319
|
return () => {
|
|
6267
|
-
listeners.delete(
|
|
6320
|
+
listeners.delete(listener2);
|
|
6268
6321
|
};
|
|
6269
6322
|
},
|
|
6270
6323
|
getSnapshot() {
|
|
@@ -6730,7 +6783,7 @@ function FormResponse({
|
|
|
6730
6783
|
return /* @__PURE__ */ jsxRuntime.jsx(Transition.TransitionDropdown, { visibility: text ? true : false, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
6731
6784
|
"div",
|
|
6732
6785
|
{
|
|
6733
|
-
className:
|
|
6786
|
+
className: classNames66__default.default({
|
|
6734
6787
|
"font-poppins font-light text-sm": true,
|
|
6735
6788
|
[`${variantsLite[variant]}`]: variant,
|
|
6736
6789
|
[`${shapes[shape]}`]: shape,
|
|
@@ -6847,7 +6900,7 @@ var ThemeSwitch = () => {
|
|
|
6847
6900
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6848
6901
|
"div",
|
|
6849
6902
|
{
|
|
6850
|
-
className:
|
|
6903
|
+
className: classNames66__default.default(
|
|
6851
6904
|
"w-6 h-6 bg-white dark:bg-gray-600 rounded-full shadow-md transition-transform duration-300",
|
|
6852
6905
|
theme === "dark" ? "translate-x-8" : "translate-x-0"
|
|
6853
6906
|
)
|
|
@@ -18228,12 +18281,12 @@ function WorldMap({
|
|
|
18228
18281
|
const mode = isDarkMode ? mapStyles.dark : mapStyles.light;
|
|
18229
18282
|
const resolvedData = React2.useMemo(() => {
|
|
18230
18283
|
return data.map((item) => {
|
|
18231
|
-
const
|
|
18232
|
-
if (!
|
|
18284
|
+
const c2 = COUNTRIES.find((x) => x.code === item.code);
|
|
18285
|
+
if (!c2) return null;
|
|
18233
18286
|
return {
|
|
18234
18287
|
...item,
|
|
18235
|
-
name:
|
|
18236
|
-
coordinates:
|
|
18288
|
+
name: c2.name,
|
|
18289
|
+
coordinates: c2.coordinates
|
|
18237
18290
|
};
|
|
18238
18291
|
}).filter(Boolean);
|
|
18239
18292
|
}, [data]);
|
|
@@ -18395,7 +18448,7 @@ function InputResponse({
|
|
|
18395
18448
|
return /* @__PURE__ */ jsxRuntime.jsx(Transition.TransitionDropdown, { visibility, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
18396
18449
|
"div",
|
|
18397
18450
|
{
|
|
18398
|
-
className:
|
|
18451
|
+
className: classNames66__default.default({
|
|
18399
18452
|
"font-medium text-sm py-1 px-2": true,
|
|
18400
18453
|
[`${textVariants[variant]}`]: variant,
|
|
18401
18454
|
"transition-all ease-in-out": true,
|
|
@@ -18410,7 +18463,7 @@ function InputLabel({ text, children, styles }) {
|
|
|
18410
18463
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
18411
18464
|
"label",
|
|
18412
18465
|
{
|
|
18413
|
-
className:
|
|
18466
|
+
className: classNames66__default.default({
|
|
18414
18467
|
"px-0 eui-text-sm text-[13.5px] pointer-events-none select-none": true,
|
|
18415
18468
|
"transition-all ease-in-out": true,
|
|
18416
18469
|
[`${styles}`]: styles
|
|
@@ -18462,7 +18515,7 @@ var Input = ({
|
|
|
18462
18515
|
...field,
|
|
18463
18516
|
...props,
|
|
18464
18517
|
placeholder,
|
|
18465
|
-
className:
|
|
18518
|
+
className: classNames66__default.default({
|
|
18466
18519
|
"border peer w-full bg-eui-primary-300/10 pt-5 px-3 pb-2 text-md eui-text-md placeholder-transparent placeholder-shown:p-3 focus:outline-none h-[50px]": true,
|
|
18467
18520
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
18468
18521
|
"border-eui-danger-500": meta.touched && meta.error,
|
|
@@ -18507,7 +18560,7 @@ var InputFile = ({
|
|
|
18507
18560
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
18508
18561
|
"div",
|
|
18509
18562
|
{
|
|
18510
|
-
className:
|
|
18563
|
+
className: classNames66__default.default(
|
|
18511
18564
|
"border rounded-sm bg-eui-primary-300/10 px-3 pt-3 text-md text-eui-dark-100 cursor-pointer h-[50px] flex items-center",
|
|
18512
18565
|
{
|
|
18513
18566
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
@@ -18533,7 +18586,7 @@ var InputFile = ({
|
|
|
18533
18586
|
InputLabel_default,
|
|
18534
18587
|
{
|
|
18535
18588
|
text: placeholder,
|
|
18536
|
-
styles:
|
|
18589
|
+
styles: classNames66__default.default({
|
|
18537
18590
|
"absolute left-2 eui-text-sm peer-placeholder-shown:text-base peer-placeholder-shown:top-3 pointer-events-none": true,
|
|
18538
18591
|
"top-[0.7px]": showFloatingLabel,
|
|
18539
18592
|
"top-[13px] text-base": !showFloatingLabel
|
|
@@ -18586,7 +18639,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18586
18639
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsxRuntime.jsx(formik.FieldArray, { name, children: ({ push, remove, move }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18587
18640
|
"div",
|
|
18588
18641
|
{
|
|
18589
|
-
className:
|
|
18642
|
+
className: classNames66__default.default(
|
|
18590
18643
|
"flex w-full flex-col space-y-2 bg-eui-primary-300/10",
|
|
18591
18644
|
shapes[resolvedShape]
|
|
18592
18645
|
),
|
|
@@ -18615,7 +18668,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18615
18668
|
ref: provided2.innerRef,
|
|
18616
18669
|
...draggableProps,
|
|
18617
18670
|
style: draggableStyle,
|
|
18618
|
-
className:
|
|
18671
|
+
className: classNames66__default.default(
|
|
18619
18672
|
"flex items-center space-x-2 bg-eui-primary-300/10 p-2",
|
|
18620
18673
|
shapes[resolvedShape]
|
|
18621
18674
|
),
|
|
@@ -18626,7 +18679,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18626
18679
|
{
|
|
18627
18680
|
name: `${name}[${index}]`,
|
|
18628
18681
|
placeholder: `Item ${index + 1}`,
|
|
18629
|
-
className:
|
|
18682
|
+
className: classNames66__default.default(
|
|
18630
18683
|
"peer h-[50px] w-full border bg-eui-primary-300/10 px-3 pb-2 pt-5 text-md placeholder-transparent placeholder-shown:p-3 focus:outline-none eui-text-md",
|
|
18631
18684
|
shapes[resolvedShape],
|
|
18632
18685
|
hasItemError ? "border-eui-danger-500" : "border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -18722,7 +18775,7 @@ var InputListGroup = ({
|
|
|
18722
18775
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
18723
18776
|
"div",
|
|
18724
18777
|
{
|
|
18725
|
-
className:
|
|
18778
|
+
className: classNames66__default.default(
|
|
18726
18779
|
"flex flex-col gap-2 bg-eui-primary-300/10 p-3",
|
|
18727
18780
|
shapes[resolvedShape]
|
|
18728
18781
|
),
|
|
@@ -18734,7 +18787,7 @@ var InputListGroup = ({
|
|
|
18734
18787
|
{
|
|
18735
18788
|
name: `${name}[${groupIndex}].name`,
|
|
18736
18789
|
placeholder: `Group ${groupIndex + 1}`,
|
|
18737
|
-
className:
|
|
18790
|
+
className: classNames66__default.default(
|
|
18738
18791
|
"h-[40px] w-full border bg-eui-primary-300/10 px-3 py-2 text-md focus:outline-none",
|
|
18739
18792
|
shapes[resolvedShape],
|
|
18740
18793
|
"border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -18765,7 +18818,7 @@ var InputListGroup = ({
|
|
|
18765
18818
|
{
|
|
18766
18819
|
ref: provided.innerRef,
|
|
18767
18820
|
...provided.droppableProps,
|
|
18768
|
-
className:
|
|
18821
|
+
className: classNames66__default.default(
|
|
18769
18822
|
"space-y-2 bg-eui-primary-300/10 p-2",
|
|
18770
18823
|
shapes[resolvedShape]
|
|
18771
18824
|
),
|
|
@@ -18785,7 +18838,7 @@ var InputListGroup = ({
|
|
|
18785
18838
|
ref: provided2.innerRef,
|
|
18786
18839
|
...draggableProps,
|
|
18787
18840
|
style: draggableStyle,
|
|
18788
|
-
className:
|
|
18841
|
+
className: classNames66__default.default(
|
|
18789
18842
|
"flex items-center gap-2 bg-eui-primary-300/10 p-2",
|
|
18790
18843
|
shapes[resolvedShape]
|
|
18791
18844
|
),
|
|
@@ -18796,7 +18849,7 @@ var InputListGroup = ({
|
|
|
18796
18849
|
{
|
|
18797
18850
|
name: `${itemsFieldName}[${itemIndex}]`,
|
|
18798
18851
|
placeholder: `Item ${itemIndex + 1}`,
|
|
18799
|
-
className:
|
|
18852
|
+
className: classNames66__default.default(
|
|
18800
18853
|
"h-[40px] w-full border bg-eui-primary-300/10 px-3 py-2 text-md focus:outline-none",
|
|
18801
18854
|
shapes[resolvedShape],
|
|
18802
18855
|
"border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -19010,7 +19063,7 @@ var DateSelector = ({
|
|
|
19010
19063
|
...field,
|
|
19011
19064
|
...props,
|
|
19012
19065
|
placeholder,
|
|
19013
|
-
className:
|
|
19066
|
+
className: classNames66__default.default({
|
|
19014
19067
|
"border border-eui-primary-400 peer w-full bg-eui-primary-300/10 pt-5 px-3 pb-2 text-md eui-text-md placeholder-transparent placeholder-shown:p-3 focus:border-eui-secondary-500 focus:outline-none h-[50px]": true,
|
|
19015
19068
|
"border-eui-danger-500": meta.touched && meta.error,
|
|
19016
19069
|
"transition-all ease-in-out": true,
|
|
@@ -19119,7 +19172,7 @@ var ImageInput = React2.forwardRef(
|
|
|
19119
19172
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19120
19173
|
"label",
|
|
19121
19174
|
{
|
|
19122
|
-
className:
|
|
19175
|
+
className: classNames66__default.default({
|
|
19123
19176
|
"border-2 border-dashed border-gray-700 bg-gray-900 h-[200px] w-[300px] flex flex-col gap-2 items-center justify-center group": true,
|
|
19124
19177
|
"hover:cursor-pointer hover:border-solid hover:border-gray-600 hover:bg-gray-900/80": true,
|
|
19125
19178
|
"transition-all ease-in-out duration-150": true
|
|
@@ -19236,7 +19289,7 @@ function Radio({
|
|
|
19236
19289
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19237
19290
|
"div",
|
|
19238
19291
|
{
|
|
19239
|
-
className:
|
|
19292
|
+
className: classNames66__default.default({
|
|
19240
19293
|
"flex flex-row gap-2 items-center mx-1 my-2": true
|
|
19241
19294
|
}),
|
|
19242
19295
|
children: [
|
|
@@ -19249,7 +19302,7 @@ function Radio({
|
|
|
19249
19302
|
...props,
|
|
19250
19303
|
value: option.value,
|
|
19251
19304
|
checked: field2.value === option.value,
|
|
19252
|
-
className:
|
|
19305
|
+
className: classNames66__default.default({
|
|
19253
19306
|
"appearance-none w-4 h-4 border-2 border-eui-primary-400 rounded-full cursor-pointer transition-all duration-300": true,
|
|
19254
19307
|
// base radio button styles
|
|
19255
19308
|
"checked:bg-eui-secondary-700 checked:border-eui-primary-400": field2.value === option.value
|
|
@@ -19261,7 +19314,7 @@ function Radio({
|
|
|
19261
19314
|
"label",
|
|
19262
19315
|
{
|
|
19263
19316
|
htmlFor: option.value,
|
|
19264
|
-
className:
|
|
19317
|
+
className: classNames66__default.default({
|
|
19265
19318
|
"eui-text-md text-sm": true
|
|
19266
19319
|
}),
|
|
19267
19320
|
children: option.label
|
|
@@ -19304,7 +19357,7 @@ function StarRatingInput({
|
|
|
19304
19357
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19305
19358
|
"div",
|
|
19306
19359
|
{
|
|
19307
|
-
className:
|
|
19360
|
+
className: classNames66__default.default({
|
|
19308
19361
|
"inline-flex gap-[4px] text-[20px]": true,
|
|
19309
19362
|
[`${styles}`]: styles
|
|
19310
19363
|
}),
|
|
@@ -19317,7 +19370,7 @@ function StarRatingInput({
|
|
|
19317
19370
|
onClick: () => handleOnClick(index),
|
|
19318
19371
|
onMouseEnter: () => setHover(index),
|
|
19319
19372
|
onMouseLeave: () => setHover(null),
|
|
19320
|
-
className:
|
|
19373
|
+
className: classNames66__default.default({
|
|
19321
19374
|
"text-yellow-600": index <= (hover ?? rating - 1),
|
|
19322
19375
|
"text-gray-400": index > (hover ?? rating - 1)
|
|
19323
19376
|
}),
|
|
@@ -19361,7 +19414,7 @@ function Select({
|
|
|
19361
19414
|
{
|
|
19362
19415
|
as: "select",
|
|
19363
19416
|
...props,
|
|
19364
|
-
className:
|
|
19417
|
+
className: classNames66__default.default({
|
|
19365
19418
|
"border peer w-full bg-eui-primary-300/10 pt-5 px-3 pb-2 text-md eui-text-md placeholder-transparent placeholder-shown:p-3 focus:border-eui-secondary-500 focus:outline-none h-[50px]": true,
|
|
19366
19419
|
"border-eui-primary-400": !(meta.touched && meta.error),
|
|
19367
19420
|
"border-red-500": meta.touched && meta.error,
|
|
@@ -19413,7 +19466,7 @@ function Switch({
|
|
|
19413
19466
|
"div",
|
|
19414
19467
|
{
|
|
19415
19468
|
onClick: () => helpers.setValue(!field.value),
|
|
19416
|
-
className:
|
|
19469
|
+
className: classNames66__default.default(
|
|
19417
19470
|
"w-11 h-6 bg-gray-200 peer-focus:outline-none rounded-full peer dark:bg-eui-dark-100",
|
|
19418
19471
|
"peer-checked:after:translate-x-full peer-checked:after:border-white",
|
|
19419
19472
|
"after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white",
|
|
@@ -19470,7 +19523,7 @@ function Tags({
|
|
|
19470
19523
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
19471
19524
|
"div",
|
|
19472
19525
|
{
|
|
19473
|
-
className:
|
|
19526
|
+
className: classNames66__default.default(
|
|
19474
19527
|
"border rounded-sm flex flex-wrap items-center gap-2 px-2 pt-2 pb-6 min-h-[3rem]",
|
|
19475
19528
|
{
|
|
19476
19529
|
"bg-eui-primary-300/10 eui-text-md": true,
|
|
@@ -19518,7 +19571,7 @@ function Tags({
|
|
|
19518
19571
|
InputLabel_default,
|
|
19519
19572
|
{
|
|
19520
19573
|
text: placeholder,
|
|
19521
|
-
styles:
|
|
19574
|
+
styles: classNames66__default.default(
|
|
19522
19575
|
"absolute left-2 transition-all pointer-events-none text-eui-dark-200",
|
|
19523
19576
|
input.length > 0 || field.value.length > 0 ? "top-[2px] text-[13.5px]" : "top-3 text-base"
|
|
19524
19577
|
)
|
|
@@ -19559,7 +19612,7 @@ function TextArea({
|
|
|
19559
19612
|
as: "textarea",
|
|
19560
19613
|
...field,
|
|
19561
19614
|
...props,
|
|
19562
|
-
className:
|
|
19615
|
+
className: classNames66__default.default({
|
|
19563
19616
|
"border peer w-full bg-eui-primary-300/10 eui-text-md outline-none px-3 py-5 resize-none focus:resize-none focus:outline-none": true,
|
|
19564
19617
|
"transition-all ease-in-out": true,
|
|
19565
19618
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
@@ -19573,7 +19626,7 @@ function TextArea({
|
|
|
19573
19626
|
InputLabel_default,
|
|
19574
19627
|
{
|
|
19575
19628
|
text: placeholder,
|
|
19576
|
-
styles:
|
|
19629
|
+
styles: classNames66__default.default(
|
|
19577
19630
|
"absolute left-2 transition-all pointer-events-none text-eui-dark-200",
|
|
19578
19631
|
field.value ? "top-[2px] text-[13.5px]" : "top-3 text-base"
|
|
19579
19632
|
)
|
|
@@ -19596,31 +19649,30 @@ function TextArea({
|
|
|
19596
19649
|
] });
|
|
19597
19650
|
}
|
|
19598
19651
|
var TextArea_default = TextArea;
|
|
19599
|
-
|
|
19600
|
-
children,
|
|
19601
|
-
|
|
19602
|
-
|
|
19603
|
-
|
|
19604
|
-
|
|
19605
|
-
|
|
19606
|
-
|
|
19607
|
-
|
|
19608
|
-
|
|
19609
|
-
|
|
19610
|
-
|
|
19611
|
-
|
|
19612
|
-
|
|
19613
|
-
|
|
19614
|
-
|
|
19615
|
-
|
|
19616
|
-
|
|
19617
|
-
}
|
|
19652
|
+
var ContentArea = React2.forwardRef(
|
|
19653
|
+
({ children, styles, enablePadding = false }, ref) => {
|
|
19654
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19655
|
+
"div",
|
|
19656
|
+
{
|
|
19657
|
+
ref,
|
|
19658
|
+
className: classNames66__default.default({
|
|
19659
|
+
"min-h-screen h-full w-full transition-all duration-[200ms]": true,
|
|
19660
|
+
"py-3 px-5": !enablePadding,
|
|
19661
|
+
"py-3 px-5 lg:px-[150px]": enablePadding,
|
|
19662
|
+
[`${styles}`]: Boolean(styles)
|
|
19663
|
+
}),
|
|
19664
|
+
children
|
|
19665
|
+
}
|
|
19666
|
+
);
|
|
19667
|
+
}
|
|
19668
|
+
);
|
|
19669
|
+
ContentArea.displayName = "ContentArea";
|
|
19618
19670
|
var ContentArea_default = ContentArea;
|
|
19619
19671
|
function FlexCol({ children, gap = 3, styles }) {
|
|
19620
19672
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19621
19673
|
"div",
|
|
19622
19674
|
{
|
|
19623
|
-
className:
|
|
19675
|
+
className: classNames66__default.default({
|
|
19624
19676
|
[`flex flex-col gap-${gap}`]: true,
|
|
19625
19677
|
[`${styles}`]: styles
|
|
19626
19678
|
}),
|
|
@@ -19633,7 +19685,7 @@ function FlexRow({ children, gap = 3, styles }) {
|
|
|
19633
19685
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19634
19686
|
"div",
|
|
19635
19687
|
{
|
|
19636
|
-
className:
|
|
19688
|
+
className: classNames66__default.default({
|
|
19637
19689
|
[`flex flex-row gap-${gap}`]: true,
|
|
19638
19690
|
[`${styles}`]: styles
|
|
19639
19691
|
}),
|
|
@@ -19652,7 +19704,7 @@ function Grid({ children, styles }) {
|
|
|
19652
19704
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19653
19705
|
"div",
|
|
19654
19706
|
{
|
|
19655
|
-
className:
|
|
19707
|
+
className: classNames66__default.default({
|
|
19656
19708
|
[`grid`]: true,
|
|
19657
19709
|
[`${styles}`]: styles
|
|
19658
19710
|
}),
|
|
@@ -19669,7 +19721,7 @@ var Layout = ({
|
|
|
19669
19721
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19670
19722
|
"div",
|
|
19671
19723
|
{
|
|
19672
|
-
className:
|
|
19724
|
+
className: classNames66__default.default({
|
|
19673
19725
|
// "flex h-full w-screen bg-gray-100 overflow-auto": true,
|
|
19674
19726
|
"flex bg-eui-light-600": true,
|
|
19675
19727
|
"flex-col": flexDirection === "vertical",
|
|
@@ -19688,7 +19740,7 @@ var Header = ({
|
|
|
19688
19740
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19689
19741
|
"div",
|
|
19690
19742
|
{
|
|
19691
|
-
className:
|
|
19743
|
+
className: classNames66__default.default({
|
|
19692
19744
|
static: position === "static",
|
|
19693
19745
|
fixed: position === "fixed",
|
|
19694
19746
|
sticky: position === "sticky",
|
|
@@ -19728,7 +19780,7 @@ var Content = ({
|
|
|
19728
19780
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19729
19781
|
"div",
|
|
19730
19782
|
{
|
|
19731
|
-
className:
|
|
19783
|
+
className: classNames66__default.default({
|
|
19732
19784
|
"w-full min-h-screen transition-all duration-200 eui-bg-sm": true,
|
|
19733
19785
|
"md:pl-[300px]": !overlayedSidebar && sidebarVisible && !isMobile,
|
|
19734
19786
|
// Shift when sidebar is open (desktop)
|
|
@@ -19744,7 +19796,7 @@ var Footer = ({ children, styles }) => {
|
|
|
19744
19796
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
19745
19797
|
"div",
|
|
19746
19798
|
{
|
|
19747
|
-
className:
|
|
19799
|
+
className: classNames66__default.default({
|
|
19748
19800
|
"bottom-0 w-full h-fit": true,
|
|
19749
19801
|
"border-t border-eui-dark-500/40 dark:border-eui-secondary-800 eui-bg-md": !styles,
|
|
19750
19802
|
[`${styles}`]: styles
|
|
@@ -19817,269 +19869,6 @@ function BlockGroup({
|
|
|
19817
19869
|
] });
|
|
19818
19870
|
}
|
|
19819
19871
|
var BlockGroup_default = BlockGroup;
|
|
19820
|
-
var useTheme = () => {
|
|
19821
|
-
const context = React2.useContext(ThemeContext);
|
|
19822
|
-
if (!context) {
|
|
19823
|
-
throw new Error("useTheme must be used within a ThemeProvider");
|
|
19824
|
-
}
|
|
19825
|
-
return context;
|
|
19826
|
-
};
|
|
19827
|
-
var useTheme_default = useTheme;
|
|
19828
|
-
function MarkdownEditor({
|
|
19829
|
-
styles,
|
|
19830
|
-
...props
|
|
19831
|
-
}) {
|
|
19832
|
-
const [field, meta, helpers] = formik.useField(props);
|
|
19833
|
-
const { theme } = useTheme_default();
|
|
19834
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
19835
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames17__default.default(theme === "dark" ? "dark" : "", styles), children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19836
|
-
editor.MDXEditor,
|
|
19837
|
-
{
|
|
19838
|
-
markdown: field.value,
|
|
19839
|
-
onChange: (val) => helpers.setValue(val),
|
|
19840
|
-
className: "rounded border border-gray-300 dark:border-gray-700",
|
|
19841
|
-
plugins: [
|
|
19842
|
-
editor.headingsPlugin(),
|
|
19843
|
-
editor.linkPlugin(),
|
|
19844
|
-
editor.listsPlugin(),
|
|
19845
|
-
editor.imagePlugin(),
|
|
19846
|
-
editor.tablePlugin(),
|
|
19847
|
-
editor.linkDialogPlugin({}),
|
|
19848
|
-
editor.thematicBreakPlugin(),
|
|
19849
|
-
editor.quotePlugin(),
|
|
19850
|
-
editor.toolbarPlugin({
|
|
19851
|
-
toolbarContents: () => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
19852
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.UndoRedo, {}),
|
|
19853
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19854
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.BlockTypeSelect, {}),
|
|
19855
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19856
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.BoldItalicUnderlineToggles, {}),
|
|
19857
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19858
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.StrikeThroughSupSubToggles, {}),
|
|
19859
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19860
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.ListsToggle, {}),
|
|
19861
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19862
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.CreateLink, {}),
|
|
19863
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertImage, {}),
|
|
19864
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
19865
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertTable, {}),
|
|
19866
|
-
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertThematicBreak, {})
|
|
19867
|
-
] })
|
|
19868
|
-
})
|
|
19869
|
-
]
|
|
19870
|
-
}
|
|
19871
|
-
) }),
|
|
19872
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
19873
|
-
InputResponse_default,
|
|
19874
|
-
{
|
|
19875
|
-
name: field.name,
|
|
19876
|
-
visibility: meta.touched && meta.error ? true : false,
|
|
19877
|
-
variant: "danger"
|
|
19878
|
-
}
|
|
19879
|
-
)
|
|
19880
|
-
] });
|
|
19881
|
-
}
|
|
19882
|
-
var MarkdownEditor_default = MarkdownEditor;
|
|
19883
|
-
var MarkdownContext = React2.createContext(null);
|
|
19884
|
-
|
|
19885
|
-
// src/components/markdown/hooks/useMarkdown.tsx
|
|
19886
|
-
function useMarkdown() {
|
|
19887
|
-
return React2.useContext(MarkdownContext);
|
|
19888
|
-
}
|
|
19889
|
-
|
|
19890
|
-
// src/components/markdown/utils/generateHeadingNumbers.ts
|
|
19891
|
-
function generateHeadingNumbers(headings) {
|
|
19892
|
-
const counters = [0, 0, 0, 0, 0, 0];
|
|
19893
|
-
return headings.map((heading) => {
|
|
19894
|
-
const level = heading.level;
|
|
19895
|
-
counters[level - 1]++;
|
|
19896
|
-
for (let i = level; i < counters.length; i++) {
|
|
19897
|
-
counters[i] = 0;
|
|
19898
|
-
}
|
|
19899
|
-
const numbering = counters.slice(0, level).filter((n) => n > 0).join(".");
|
|
19900
|
-
return {
|
|
19901
|
-
...heading,
|
|
19902
|
-
numbering
|
|
19903
|
-
};
|
|
19904
|
-
});
|
|
19905
|
-
}
|
|
19906
|
-
|
|
19907
|
-
// src/components/markdown/utils/sanitizeHeading.ts
|
|
19908
|
-
function sanitizeHeading(text) {
|
|
19909
|
-
return text.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu, "").replace(/\s+/g, " ").trim();
|
|
19910
|
-
}
|
|
19911
|
-
function MarkdownTOC({ title = "Table of Contents" }) {
|
|
19912
|
-
const context = useMarkdown();
|
|
19913
|
-
if (!context) {
|
|
19914
|
-
return null;
|
|
19915
|
-
}
|
|
19916
|
-
const { headings, activeHeading } = context;
|
|
19917
|
-
const numberedHeadings = generateHeadingNumbers(headings);
|
|
19918
|
-
const scrollToHeading = (id) => {
|
|
19919
|
-
const element = document.getElementById(id);
|
|
19920
|
-
if (!element) return;
|
|
19921
|
-
element.scrollIntoView({
|
|
19922
|
-
behavior: "smooth",
|
|
19923
|
-
block: "start"
|
|
19924
|
-
});
|
|
19925
|
-
};
|
|
19926
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
19927
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19928
|
-
"h2",
|
|
19929
|
-
{
|
|
19930
|
-
className: "\n text-sm\n font-semibold\n uppercase\n tracking-wide\n text-gray-900\n dark:text-gray-100\n ",
|
|
19931
|
-
children: title
|
|
19932
|
-
}
|
|
19933
|
-
) }),
|
|
19934
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-1", children: numberedHeadings.map((heading) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
19935
|
-
"button",
|
|
19936
|
-
{
|
|
19937
|
-
onClick: () => scrollToHeading(heading.id),
|
|
19938
|
-
className: classNames17__default.default(
|
|
19939
|
-
"block w-full text-left text-sm transition-all ease-in-out duration-150",
|
|
19940
|
-
"hover:text-primary",
|
|
19941
|
-
activeHeading === heading.id ? "text-primary font-semibold underline" : "text-gray-500 dark:text-gray-400"
|
|
19942
|
-
),
|
|
19943
|
-
style: {
|
|
19944
|
-
paddingLeft: `${(heading.level - 1) * 12}px`
|
|
19945
|
-
},
|
|
19946
|
-
children: [
|
|
19947
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-2 opacity-70", children: heading.numbering }),
|
|
19948
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { children: sanitizeHeading(heading.text) })
|
|
19949
|
-
]
|
|
19950
|
-
},
|
|
19951
|
-
heading.id
|
|
19952
|
-
)) })
|
|
19953
|
-
] });
|
|
19954
|
-
}
|
|
19955
|
-
var MarkdownTOC_default = MarkdownTOC;
|
|
19956
|
-
function MarkdownViewer({ value }) {
|
|
19957
|
-
const { theme } = useTheme_default();
|
|
19958
|
-
const context = useMarkdown();
|
|
19959
|
-
const markdown = value ?? context?.markdown ?? "";
|
|
19960
|
-
const headings = context?.headings ?? [];
|
|
19961
|
-
const setActiveHeading = context?.setActiveHeading;
|
|
19962
|
-
React2.useEffect(() => {
|
|
19963
|
-
const timeout = setTimeout(() => {
|
|
19964
|
-
headings.forEach((heading) => {
|
|
19965
|
-
const headingEls = document.querySelectorAll("h1,h2,h3,h4,h5,h6");
|
|
19966
|
-
headingEls.forEach((el) => {
|
|
19967
|
-
if (el.textContent?.trim() === heading.text.trim()) {
|
|
19968
|
-
el.id = heading.id;
|
|
19969
|
-
}
|
|
19970
|
-
});
|
|
19971
|
-
});
|
|
19972
|
-
if (!setActiveHeading) return;
|
|
19973
|
-
const observer = new IntersectionObserver(
|
|
19974
|
-
(entries) => {
|
|
19975
|
-
entries.forEach((entry) => {
|
|
19976
|
-
if (entry.isIntersecting) {
|
|
19977
|
-
setActiveHeading(entry.target.id);
|
|
19978
|
-
}
|
|
19979
|
-
});
|
|
19980
|
-
},
|
|
19981
|
-
{
|
|
19982
|
-
rootMargin: "-20% 0px -70% 0px"
|
|
19983
|
-
}
|
|
19984
|
-
);
|
|
19985
|
-
headings.forEach((heading) => {
|
|
19986
|
-
const el = document.getElementById(heading.id);
|
|
19987
|
-
if (el) {
|
|
19988
|
-
observer.observe(el);
|
|
19989
|
-
}
|
|
19990
|
-
});
|
|
19991
|
-
return () => observer.disconnect();
|
|
19992
|
-
}, 0);
|
|
19993
|
-
return () => clearTimeout(timeout);
|
|
19994
|
-
}, [headings, setActiveHeading]);
|
|
19995
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: theme === "dark" ? "dark" : "", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
19996
|
-
editor.MDXEditor,
|
|
19997
|
-
{
|
|
19998
|
-
markdown,
|
|
19999
|
-
readOnly: true,
|
|
20000
|
-
className: "markdown-body max-w-none",
|
|
20001
|
-
plugins: [
|
|
20002
|
-
editor.headingsPlugin(),
|
|
20003
|
-
editor.linkPlugin(),
|
|
20004
|
-
editor.listsPlugin(),
|
|
20005
|
-
editor.imagePlugin(),
|
|
20006
|
-
editor.tablePlugin(),
|
|
20007
|
-
editor.quotePlugin(),
|
|
20008
|
-
editor.thematicBreakPlugin(),
|
|
20009
|
-
editor.linkDialogPlugin({}),
|
|
20010
|
-
editor.markdownShortcutPlugin(),
|
|
20011
|
-
editor.frontmatterPlugin(),
|
|
20012
|
-
editor.codeBlockPlugin({
|
|
20013
|
-
defaultCodeBlockLanguage: "txt",
|
|
20014
|
-
codeBlockEditorDescriptors: []
|
|
20015
|
-
}),
|
|
20016
|
-
editor.codeMirrorPlugin({
|
|
20017
|
-
codeBlockLanguages: {
|
|
20018
|
-
js: "JavaScript",
|
|
20019
|
-
ts: "TypeScript",
|
|
20020
|
-
jsx: "React JSX",
|
|
20021
|
-
tsx: "React TSX",
|
|
20022
|
-
html: "HTML",
|
|
20023
|
-
css: "CSS",
|
|
20024
|
-
scss: "SCSS",
|
|
20025
|
-
json: "JSON",
|
|
20026
|
-
bash: "Bash",
|
|
20027
|
-
shell: "Shell",
|
|
20028
|
-
zsh: "ZSH",
|
|
20029
|
-
yaml: "YAML",
|
|
20030
|
-
yml: "YAML",
|
|
20031
|
-
md: "Markdown",
|
|
20032
|
-
py: "Python",
|
|
20033
|
-
java: "Java",
|
|
20034
|
-
cpp: "C++",
|
|
20035
|
-
c: "C",
|
|
20036
|
-
go: "Go",
|
|
20037
|
-
rust: "Rust",
|
|
20038
|
-
php: "PHP",
|
|
20039
|
-
sql: "SQL"
|
|
20040
|
-
}
|
|
20041
|
-
})
|
|
20042
|
-
]
|
|
20043
|
-
},
|
|
20044
|
-
markdown
|
|
20045
|
-
) });
|
|
20046
|
-
}
|
|
20047
|
-
var MarkdownViewer_default = MarkdownViewer;
|
|
20048
|
-
|
|
20049
|
-
// src/components/markdown/utils/slugify.ts
|
|
20050
|
-
function slugify(text) {
|
|
20051
|
-
return text.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-");
|
|
20052
|
-
}
|
|
20053
|
-
|
|
20054
|
-
// src/components/markdown/utils/extractHeadings.ts
|
|
20055
|
-
function extractHeadings(markdown) {
|
|
20056
|
-
return markdown.split("\n").filter((line) => /^#{1,6}\s/.test(line)).map((line) => {
|
|
20057
|
-
const level = line.match(/^#+/)?.[0].length || 1;
|
|
20058
|
-
const text = line.replace(/^#{1,6}\s/, "");
|
|
20059
|
-
return {
|
|
20060
|
-
id: slugify(text),
|
|
20061
|
-
text,
|
|
20062
|
-
level
|
|
20063
|
-
};
|
|
20064
|
-
});
|
|
20065
|
-
}
|
|
20066
|
-
function MarkdownProvider({ markdown, children }) {
|
|
20067
|
-
const [activeHeading, setActiveHeading] = React2.useState("");
|
|
20068
|
-
const headings = React2.useMemo(() => extractHeadings(markdown), [markdown]);
|
|
20069
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20070
|
-
MarkdownContext.Provider,
|
|
20071
|
-
{
|
|
20072
|
-
value: {
|
|
20073
|
-
markdown,
|
|
20074
|
-
headings,
|
|
20075
|
-
activeHeading,
|
|
20076
|
-
setActiveHeading
|
|
20077
|
-
},
|
|
20078
|
-
children
|
|
20079
|
-
}
|
|
20080
|
-
);
|
|
20081
|
-
}
|
|
20082
|
-
var MarkdownProvider_default = MarkdownProvider;
|
|
20083
19872
|
function BreadcrumbItem({
|
|
20084
19873
|
title,
|
|
20085
19874
|
href = "#",
|
|
@@ -20091,7 +19880,7 @@ function BreadcrumbItem({
|
|
|
20091
19880
|
{
|
|
20092
19881
|
href,
|
|
20093
19882
|
onClick,
|
|
20094
|
-
className:
|
|
19883
|
+
className: classNames66__default.default({
|
|
20095
19884
|
"text-lg font-semibold": true,
|
|
20096
19885
|
"text-gray-400 hover:text-gray-600 cursor-pointer": !active,
|
|
20097
19886
|
"text-eui-light-800": active,
|
|
@@ -20168,7 +19957,7 @@ var Breadcrumb = ({
|
|
|
20168
19957
|
index < resolvedData.length - 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20169
19958
|
"span",
|
|
20170
19959
|
{
|
|
20171
|
-
className:
|
|
19960
|
+
className: classNames66__default.default({
|
|
20172
19961
|
"text-lg font-semibold text-gray-500": true,
|
|
20173
19962
|
[`px-${gap}`]: gap
|
|
20174
19963
|
}),
|
|
@@ -20182,7 +19971,7 @@ var Breadcrumb = ({
|
|
|
20182
19971
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20183
19972
|
"div",
|
|
20184
19973
|
{
|
|
20185
|
-
className:
|
|
19974
|
+
className: classNames66__default.default({
|
|
20186
19975
|
"inline-flex": true,
|
|
20187
19976
|
[`${styles}`]: styles
|
|
20188
19977
|
}),
|
|
@@ -20214,7 +20003,7 @@ var Drawer = ({
|
|
|
20214
20003
|
isMobile && showBackdrop && /* @__PURE__ */ jsxRuntime.jsx(TransitionFade_default, { visibility, leaveDuration: 200, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
20215
20004
|
"div",
|
|
20216
20005
|
{
|
|
20217
|
-
className:
|
|
20006
|
+
className: classNames66__default.default(
|
|
20218
20007
|
"fixed inset-0 bg-black/50 z-40",
|
|
20219
20008
|
backdropStyles
|
|
20220
20009
|
),
|
|
@@ -20225,7 +20014,7 @@ var Drawer = ({
|
|
|
20225
20014
|
"div",
|
|
20226
20015
|
{
|
|
20227
20016
|
style: drawerStyle,
|
|
20228
|
-
className:
|
|
20017
|
+
className: classNames66__default.default(
|
|
20229
20018
|
"fixed shadow-lg z-50",
|
|
20230
20019
|
{
|
|
20231
20020
|
"h-full w-[300px] top-0": isHorizontal && !hasOffset,
|
|
@@ -20254,7 +20043,7 @@ function DrawerToggler({
|
|
|
20254
20043
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20255
20044
|
"div",
|
|
20256
20045
|
{
|
|
20257
|
-
className:
|
|
20046
|
+
className: classNames66__default.default({
|
|
20258
20047
|
"text-xl p-3 cursor-pointer": true,
|
|
20259
20048
|
"transition-all ease-in-out": true,
|
|
20260
20049
|
"text-eui-dark-500 dark:text-eui-secondary-600": !styles,
|
|
@@ -20302,7 +20091,7 @@ function FooterNav({ data = [], styles }) {
|
|
|
20302
20091
|
childrenContent = /* @__PURE__ */ jsxRuntime.jsx(
|
|
20303
20092
|
"div",
|
|
20304
20093
|
{
|
|
20305
|
-
className:
|
|
20094
|
+
className: classNames66__default.default({
|
|
20306
20095
|
"grid w-full": true,
|
|
20307
20096
|
"grid-cols-1": isMobile,
|
|
20308
20097
|
"grid-cols-3": !isMobile,
|
|
@@ -20315,7 +20104,7 @@ function FooterNav({ data = [], styles }) {
|
|
|
20315
20104
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20316
20105
|
"div",
|
|
20317
20106
|
{
|
|
20318
|
-
className:
|
|
20107
|
+
className: classNames66__default.default({
|
|
20319
20108
|
[`${styles}`]: styles
|
|
20320
20109
|
}),
|
|
20321
20110
|
children: childrenContent
|
|
@@ -20356,7 +20145,7 @@ var FooterNavGroup = ({
|
|
|
20356
20145
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
20357
20146
|
"div",
|
|
20358
20147
|
{
|
|
20359
|
-
className:
|
|
20148
|
+
className: classNames66__default.default({
|
|
20360
20149
|
"": true,
|
|
20361
20150
|
"py-2 font-semibold eui-text-lg": !styles,
|
|
20362
20151
|
[`${styles}`]: styles
|
|
@@ -20401,7 +20190,7 @@ var FooterNavItem = ({
|
|
|
20401
20190
|
"div",
|
|
20402
20191
|
{
|
|
20403
20192
|
onClick: handleNavigation,
|
|
20404
|
-
className:
|
|
20193
|
+
className: classNames66__default.default({
|
|
20405
20194
|
"flex flex-row items-center gap-3 cursor-pointer p-1 w-full": true,
|
|
20406
20195
|
"transition-all duration-200 ease-in-out": true,
|
|
20407
20196
|
"text-sm eui-text-sm": !styles,
|
|
@@ -20430,7 +20219,7 @@ var FooterNavItemTitle = ({
|
|
|
20430
20219
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20431
20220
|
"div",
|
|
20432
20221
|
{
|
|
20433
|
-
className:
|
|
20222
|
+
className: classNames66__default.default({
|
|
20434
20223
|
"": true,
|
|
20435
20224
|
"py-2 font-thin eui-text-md": !styles,
|
|
20436
20225
|
[`${styles}`]: styles
|
|
@@ -20483,7 +20272,7 @@ function HeaderNav({ data = [], styles }) {
|
|
|
20483
20272
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20484
20273
|
"div",
|
|
20485
20274
|
{
|
|
20486
|
-
className:
|
|
20275
|
+
className: classNames66__default.default({
|
|
20487
20276
|
[`${styles}`]: styles
|
|
20488
20277
|
}),
|
|
20489
20278
|
children: childrenContent
|
|
@@ -20493,7 +20282,7 @@ function HeaderNav({ data = [], styles }) {
|
|
|
20493
20282
|
var HeaderNav_default = HeaderNav;
|
|
20494
20283
|
function useClickOutside(ref, fun) {
|
|
20495
20284
|
React2.useEffect(() => {
|
|
20496
|
-
const
|
|
20285
|
+
const listener2 = (e) => {
|
|
20497
20286
|
if (!ref.current || ref.current.contains(e.target)) {
|
|
20498
20287
|
return;
|
|
20499
20288
|
}
|
|
@@ -20501,11 +20290,11 @@ function useClickOutside(ref, fun) {
|
|
|
20501
20290
|
fun();
|
|
20502
20291
|
}
|
|
20503
20292
|
};
|
|
20504
|
-
document.addEventListener("mousedown",
|
|
20505
|
-
document.addEventListener("touchstart",
|
|
20293
|
+
document.addEventListener("mousedown", listener2);
|
|
20294
|
+
document.addEventListener("touchstart", listener2);
|
|
20506
20295
|
return () => {
|
|
20507
|
-
document.removeEventListener("mousedown",
|
|
20508
|
-
document.removeEventListener("touchstart",
|
|
20296
|
+
document.removeEventListener("mousedown", listener2);
|
|
20297
|
+
document.removeEventListener("touchstart", listener2);
|
|
20509
20298
|
};
|
|
20510
20299
|
}, [ref, fun]);
|
|
20511
20300
|
}
|
|
@@ -20545,7 +20334,7 @@ var HeaderNavGroup = ({
|
|
|
20545
20334
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
20546
20335
|
"div",
|
|
20547
20336
|
{
|
|
20548
|
-
className:
|
|
20337
|
+
className: classNames66__default.default({
|
|
20549
20338
|
"flex flex-row gap-2 items-center justify-between cursor-pointer p-3 w-full": true,
|
|
20550
20339
|
"transition-all duration-300 ease-in-out": true,
|
|
20551
20340
|
"eui-text-md bg-gradient-to-t from-eui-dark-500/10 dark:from-green-700/10": !styles,
|
|
@@ -20573,7 +20362,7 @@ var HeaderNavGroup = ({
|
|
|
20573
20362
|
children && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20574
20363
|
bs.BsChevronDown,
|
|
20575
20364
|
{
|
|
20576
|
-
className:
|
|
20365
|
+
className: classNames66__default.default({
|
|
20577
20366
|
"text-md": true,
|
|
20578
20367
|
"transition-all ease-in-out duration-300": true,
|
|
20579
20368
|
"rotate-180": !collapsed
|
|
@@ -20586,7 +20375,7 @@ var HeaderNavGroup = ({
|
|
|
20586
20375
|
!collapsed && children && /* @__PURE__ */ jsxRuntime.jsx(
|
|
20587
20376
|
"div",
|
|
20588
20377
|
{
|
|
20589
|
-
className:
|
|
20378
|
+
className: classNames66__default.default({
|
|
20590
20379
|
"absolute min-w-80 left-0 top-full mt-1 border border-eui-dark-300/10 dark:border-eui-dark-300/50 shadow-lg eui-shadow-lg z-50 w-full eui-bg-md": true,
|
|
20591
20380
|
"transition-all duration-300 ease-in-out": true
|
|
20592
20381
|
}),
|
|
@@ -20616,7 +20405,7 @@ var HeaderNavItem = ({
|
|
|
20616
20405
|
"div",
|
|
20617
20406
|
{
|
|
20618
20407
|
onClick: handleNavigation,
|
|
20619
|
-
className:
|
|
20408
|
+
className: classNames66__default.default({
|
|
20620
20409
|
"flex flex-row items-center gap-3 cursor-pointer p-3 w-full": true,
|
|
20621
20410
|
"transition-all duration-200 ease-in-out": true,
|
|
20622
20411
|
"eui-text-md border-b border-eui-dark-500/20 dark:border-eui-secondary-900/20 bg-gradient-to-r from-eui-dark-500/10 dark:from-eui-secondary-900/10": !styles,
|
|
@@ -20645,7 +20434,7 @@ var HeaderNavItemTitle = ({
|
|
|
20645
20434
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
20646
20435
|
"div",
|
|
20647
20436
|
{
|
|
20648
|
-
className:
|
|
20437
|
+
className: classNames66__default.default({
|
|
20649
20438
|
"p-3 font-thin": true,
|
|
20650
20439
|
"eui-text-md": !styles,
|
|
20651
20440
|
[`${styles}`]: styles
|
|
@@ -20685,7 +20474,7 @@ var Link = ({
|
|
|
20685
20474
|
href: href || "#",
|
|
20686
20475
|
target: targets[target],
|
|
20687
20476
|
onClick: handleClick,
|
|
20688
|
-
className:
|
|
20477
|
+
className: classNames66__default.default({
|
|
20689
20478
|
[`${textVariants[variant]}`]: variant,
|
|
20690
20479
|
[`${decorations[decoration]}`]: decoration,
|
|
20691
20480
|
"font-bold": bold,
|
|
@@ -21335,7 +21124,7 @@ function Modal({
|
|
|
21335
21124
|
"div",
|
|
21336
21125
|
{
|
|
21337
21126
|
ref: modalRef,
|
|
21338
|
-
className:
|
|
21127
|
+
className: classNames66__default.default(
|
|
21339
21128
|
"eui-bg-md eui-shadow-lg border border-gray-700/80 w-fit h-fit",
|
|
21340
21129
|
shapes[resolvedShape],
|
|
21341
21130
|
styles
|
|
@@ -21347,7 +21136,7 @@ function Modal({
|
|
|
21347
21136
|
"button",
|
|
21348
21137
|
{
|
|
21349
21138
|
type: "button",
|
|
21350
|
-
className:
|
|
21139
|
+
className: classNames66__default.default(
|
|
21351
21140
|
"w-[60px] h-[60px] flex items-center justify-center transition-standard-fast",
|
|
21352
21141
|
"hover:cursor-pointer hover:bg-eui-dark-500"
|
|
21353
21142
|
),
|
|
@@ -21481,7 +21270,7 @@ function ShowMore({ text, limit }) {
|
|
|
21481
21270
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
21482
21271
|
"div",
|
|
21483
21272
|
{
|
|
21484
|
-
className:
|
|
21273
|
+
className: classNames66__default.default({
|
|
21485
21274
|
"text-blue-300 px-1 pb-1 mt-1": true,
|
|
21486
21275
|
"bg-slate-900/70": !showMore,
|
|
21487
21276
|
"bg-gradient-to-t from-slate-900/50 to-transparent": showMore
|
|
@@ -21765,16 +21554,20 @@ function CommentHeader({ comment, config }) {
|
|
|
21765
21554
|
var CommentHeader_default = CommentHeader;
|
|
21766
21555
|
var useDrawer = (defaultVisibility = true) => {
|
|
21767
21556
|
const [show, setShow] = React2.useState(defaultVisibility);
|
|
21768
|
-
const openDrawer = () => {
|
|
21769
|
-
setShow(
|
|
21770
|
-
};
|
|
21771
|
-
const closeDrawer = () => {
|
|
21557
|
+
const openDrawer = React2.useCallback(() => {
|
|
21558
|
+
setShow(true);
|
|
21559
|
+
}, []);
|
|
21560
|
+
const closeDrawer = React2.useCallback(() => {
|
|
21772
21561
|
setShow(false);
|
|
21773
|
-
};
|
|
21562
|
+
}, []);
|
|
21563
|
+
const toggleDrawer = React2.useCallback(() => {
|
|
21564
|
+
setShow((prev) => !prev);
|
|
21565
|
+
}, []);
|
|
21774
21566
|
return {
|
|
21775
21567
|
show,
|
|
21776
21568
|
openDrawer,
|
|
21777
|
-
closeDrawer
|
|
21569
|
+
closeDrawer,
|
|
21570
|
+
toggleDrawer
|
|
21778
21571
|
};
|
|
21779
21572
|
};
|
|
21780
21573
|
var useDrawer_default = useDrawer;
|
|
@@ -21793,6 +21586,14 @@ var useModal = () => {
|
|
|
21793
21586
|
};
|
|
21794
21587
|
};
|
|
21795
21588
|
var useModal_default = useModal;
|
|
21589
|
+
var useTheme = () => {
|
|
21590
|
+
const context = React2.useContext(ThemeContext);
|
|
21591
|
+
if (!context) {
|
|
21592
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
21593
|
+
}
|
|
21594
|
+
return context;
|
|
21595
|
+
};
|
|
21596
|
+
var useTheme_default = useTheme;
|
|
21796
21597
|
function CommentMenuItem({
|
|
21797
21598
|
icon,
|
|
21798
21599
|
name,
|
|
@@ -22368,11 +22169,78 @@ function DataViewTable({
|
|
|
22368
22169
|
);
|
|
22369
22170
|
}
|
|
22370
22171
|
var DataViewTable_default = DataViewTable;
|
|
22371
|
-
function
|
|
22372
|
-
|
|
22373
|
-
|
|
22374
|
-
|
|
22375
|
-
|
|
22172
|
+
function toCssSize(value) {
|
|
22173
|
+
if (typeof value === "number") return `${value}px`;
|
|
22174
|
+
return value;
|
|
22175
|
+
}
|
|
22176
|
+
function DocumentationPanel({
|
|
22177
|
+
value,
|
|
22178
|
+
toc = true,
|
|
22179
|
+
height = "100vh",
|
|
22180
|
+
viewerClassName,
|
|
22181
|
+
contentClassName,
|
|
22182
|
+
tocClassName,
|
|
22183
|
+
className,
|
|
22184
|
+
contentMaxWidthClassName = "max-w-4xl"
|
|
22185
|
+
}) {
|
|
22186
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MarkdownProvider_default, { markdown: value, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
22187
|
+
"section",
|
|
22188
|
+
{
|
|
22189
|
+
className: classNames66__default.default(
|
|
22190
|
+
"eui-documentation-panel",
|
|
22191
|
+
"min-h-0 overflow-hidden bg-white text-gray-900",
|
|
22192
|
+
"dark:bg-gray-950 dark:text-gray-100",
|
|
22193
|
+
toc ? "grid grid-cols-1 lg:grid-cols-[minmax(0,1fr)_280px]" : "grid grid-cols-1",
|
|
22194
|
+
className
|
|
22195
|
+
),
|
|
22196
|
+
style: {
|
|
22197
|
+
height: toCssSize(height)
|
|
22198
|
+
},
|
|
22199
|
+
children: [
|
|
22200
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
22201
|
+
"main",
|
|
22202
|
+
{
|
|
22203
|
+
className: classNames66__default.default(
|
|
22204
|
+
"eui-documentation-panel-viewer",
|
|
22205
|
+
"documentation-panel-scrollbar min-w-0 overflow-y-auto scroll-smooth",
|
|
22206
|
+
viewerClassName
|
|
22207
|
+
),
|
|
22208
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
22209
|
+
"div",
|
|
22210
|
+
{
|
|
22211
|
+
className: classNames66__default.default(
|
|
22212
|
+
"mx-auto px-5 py-8 sm:px-6 lg:px-8",
|
|
22213
|
+
contentMaxWidthClassName,
|
|
22214
|
+
contentClassName
|
|
22215
|
+
),
|
|
22216
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(MarkdownViewer_default, {})
|
|
22217
|
+
}
|
|
22218
|
+
)
|
|
22219
|
+
}
|
|
22220
|
+
),
|
|
22221
|
+
toc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
22222
|
+
"aside",
|
|
22223
|
+
{
|
|
22224
|
+
className: classNames66__default.default(
|
|
22225
|
+
"eui-documentation-panel-toc",
|
|
22226
|
+
"hidden min-w-0 border-l border-gray-200 bg-white lg:block",
|
|
22227
|
+
"dark:border-gray-800 dark:bg-gray-950",
|
|
22228
|
+
tocClassName
|
|
22229
|
+
),
|
|
22230
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
22231
|
+
"div",
|
|
22232
|
+
{
|
|
22233
|
+
className: classNames66__default.default(
|
|
22234
|
+
"documentation-panel-scrollbar h-full overflow-y-auto px-5 py-8"
|
|
22235
|
+
),
|
|
22236
|
+
children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-0", children: /* @__PURE__ */ jsxRuntime.jsx(MarkdownTOC_default, {}) })
|
|
22237
|
+
}
|
|
22238
|
+
)
|
|
22239
|
+
}
|
|
22240
|
+
) : null
|
|
22241
|
+
]
|
|
22242
|
+
}
|
|
22243
|
+
) });
|
|
22376
22244
|
}
|
|
22377
22245
|
var DocumentationPanel_default = DocumentationPanel;
|
|
22378
22246
|
function SliderItem({
|
|
@@ -22548,7 +22416,7 @@ function WorldMapCountryTable({
|
|
|
22548
22416
|
}) {
|
|
22549
22417
|
const enrichedData = React2.useMemo(() => {
|
|
22550
22418
|
const mapped = data.map((item) => {
|
|
22551
|
-
const countryMeta = COUNTRIES.find((
|
|
22419
|
+
const countryMeta = COUNTRIES.find((c2) => c2.code === item.code);
|
|
22552
22420
|
return {
|
|
22553
22421
|
code: item.code,
|
|
22554
22422
|
value: item.value,
|
|
@@ -22638,7 +22506,7 @@ function BoxNavItem({ icon, name, to, selected, onClick }) {
|
|
|
22638
22506
|
type: "button",
|
|
22639
22507
|
onClick: handleClick,
|
|
22640
22508
|
"aria-current": selected ? "page" : void 0,
|
|
22641
|
-
className:
|
|
22509
|
+
className: classNames66__default.default(
|
|
22642
22510
|
"w-full min-w-[80px] flex flex-col items-center justify-center py-3 text-center",
|
|
22643
22511
|
"hover:text-secondary-700 hover:bg-gray-300/10 hover:cursor-pointer",
|
|
22644
22512
|
selected ? "text-eui-secondary-700 bg-gray-300/10" : "text-gray-400",
|
|
@@ -24547,6 +24415,2531 @@ function ReviewThread({
|
|
|
24547
24415
|
] });
|
|
24548
24416
|
}
|
|
24549
24417
|
var ReviewThread_default = ReviewThread;
|
|
24418
|
+
var MarkdownContext = React2.createContext(null);
|
|
24419
|
+
|
|
24420
|
+
// src/compositions/markdown/utils/sanitizeHeading.ts
|
|
24421
|
+
function sanitizeHeading(text, options = {}) {
|
|
24422
|
+
const {
|
|
24423
|
+
removeMarkdownSyntax = true,
|
|
24424
|
+
removeHtmlTags = true,
|
|
24425
|
+
collapseWhitespace = true
|
|
24426
|
+
} = options;
|
|
24427
|
+
let value = String(text || "");
|
|
24428
|
+
if (removeHtmlTags) {
|
|
24429
|
+
value = value.replace(/<[^>]*>/g, "");
|
|
24430
|
+
}
|
|
24431
|
+
if (removeMarkdownSyntax) {
|
|
24432
|
+
value = value.replace(/!\[([^\]]*)\]\([^)]+\)/g, "$1").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\[([^\]]+)\]\[[^\]]+\]/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/[*_~]+/g, "").replace(/\\([\\`*{}\[\]()#+\-.!_>])/g, "$1");
|
|
24433
|
+
}
|
|
24434
|
+
value = value.replace(/[\u0000-\u001F\u007F]/g, "");
|
|
24435
|
+
if (collapseWhitespace) {
|
|
24436
|
+
value = value.replace(/\s+/g, " ");
|
|
24437
|
+
}
|
|
24438
|
+
return value.trim();
|
|
24439
|
+
}
|
|
24440
|
+
|
|
24441
|
+
// src/compositions/markdown/utils/createHeadingSlug.ts
|
|
24442
|
+
function escapeRegExp(value) {
|
|
24443
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
24444
|
+
}
|
|
24445
|
+
function createHeadingSlug(text, options = {}) {
|
|
24446
|
+
const {
|
|
24447
|
+
separator = "-",
|
|
24448
|
+
fallback = "heading",
|
|
24449
|
+
slugCounts,
|
|
24450
|
+
existingSlugs
|
|
24451
|
+
} = options;
|
|
24452
|
+
const escapedSeparator = escapeRegExp(separator);
|
|
24453
|
+
const sanitized = sanitizeHeading(text);
|
|
24454
|
+
const baseSlug = sanitized.toLowerCase().normalize("NFKD").replace(/[\u0300-\u036f]/g, "").replace(/[^\p{L}\p{N}\s-]/gu, "").replace(/\s+/g, separator).replace(new RegExp(`${escapedSeparator}+`, "g"), separator).replace(new RegExp(`^${escapedSeparator}|${escapedSeparator}$`, "g"), "").trim() || fallback;
|
|
24455
|
+
if (slugCounts) {
|
|
24456
|
+
const count = slugCounts.get(baseSlug) ?? 0;
|
|
24457
|
+
slugCounts.set(baseSlug, count + 1);
|
|
24458
|
+
return count === 0 ? baseSlug : `${baseSlug}${separator}${count}`;
|
|
24459
|
+
}
|
|
24460
|
+
if (existingSlugs) {
|
|
24461
|
+
let slug = baseSlug;
|
|
24462
|
+
let count = 1;
|
|
24463
|
+
while (existingSlugs.has(slug)) {
|
|
24464
|
+
slug = `${baseSlug}${separator}${count}`;
|
|
24465
|
+
count++;
|
|
24466
|
+
}
|
|
24467
|
+
existingSlugs.add(slug);
|
|
24468
|
+
return slug;
|
|
24469
|
+
}
|
|
24470
|
+
return baseSlug;
|
|
24471
|
+
}
|
|
24472
|
+
function slugify(text) {
|
|
24473
|
+
return createHeadingSlug(text);
|
|
24474
|
+
}
|
|
24475
|
+
|
|
24476
|
+
// src/compositions/markdown/utils/normalizeMarkdown.ts
|
|
24477
|
+
function normalizeMarkdown(markdown, options = {}) {
|
|
24478
|
+
const {
|
|
24479
|
+
removeBom = true,
|
|
24480
|
+
normalizeLineEndings = true,
|
|
24481
|
+
trimStart = false,
|
|
24482
|
+
trimEnd = false,
|
|
24483
|
+
collapseBlankLines = false,
|
|
24484
|
+
finalNewline = false
|
|
24485
|
+
} = options;
|
|
24486
|
+
let value = String(markdown ?? "");
|
|
24487
|
+
if (removeBom) {
|
|
24488
|
+
value = value.replace(/^\uFEFF/, "");
|
|
24489
|
+
}
|
|
24490
|
+
if (normalizeLineEndings) {
|
|
24491
|
+
value = value.replace(/\r\n?/g, "\n");
|
|
24492
|
+
}
|
|
24493
|
+
if (trimStart) {
|
|
24494
|
+
value = value.trimStart();
|
|
24495
|
+
}
|
|
24496
|
+
if (trimEnd) {
|
|
24497
|
+
value = value.trimEnd();
|
|
24498
|
+
}
|
|
24499
|
+
if (collapseBlankLines) {
|
|
24500
|
+
value = value.replace(/\n{3,}/g, "\n\n");
|
|
24501
|
+
}
|
|
24502
|
+
if (finalNewline && value && !value.endsWith("\n")) {
|
|
24503
|
+
value += "\n";
|
|
24504
|
+
}
|
|
24505
|
+
return value;
|
|
24506
|
+
}
|
|
24507
|
+
|
|
24508
|
+
// src/compositions/markdown/utils/extractHeadings.ts
|
|
24509
|
+
function getFenceState(line) {
|
|
24510
|
+
const match = line.match(/^\s{0,3}(`{3,}|~{3,})/);
|
|
24511
|
+
if (!match) return null;
|
|
24512
|
+
const fence = match[1];
|
|
24513
|
+
return {
|
|
24514
|
+
marker: fence[0],
|
|
24515
|
+
length: fence.length
|
|
24516
|
+
};
|
|
24517
|
+
}
|
|
24518
|
+
function closesFence(line, fence) {
|
|
24519
|
+
const match = line.match(/^\s{0,3}(`{3,}|~{3,})\s*$/);
|
|
24520
|
+
if (!match) return false;
|
|
24521
|
+
const closingFence = match[1];
|
|
24522
|
+
return closingFence[0] === fence.marker && closingFence.length >= fence.length;
|
|
24523
|
+
}
|
|
24524
|
+
function isSetextUnderline(line) {
|
|
24525
|
+
if (/^\s{0,3}=+\s*$/.test(line)) {
|
|
24526
|
+
return 1;
|
|
24527
|
+
}
|
|
24528
|
+
if (/^\s{0,3}-+\s*$/.test(line)) {
|
|
24529
|
+
return 2;
|
|
24530
|
+
}
|
|
24531
|
+
return null;
|
|
24532
|
+
}
|
|
24533
|
+
function extractAtxHeading(line) {
|
|
24534
|
+
const match = line.match(/^\s{0,3}(#{1,6})(?:\s+|$)(.*)$/);
|
|
24535
|
+
if (!match) return null;
|
|
24536
|
+
const level = match[1].length;
|
|
24537
|
+
const rawText = match[2].replace(/\s+#+\s*$/, "").trim();
|
|
24538
|
+
return {
|
|
24539
|
+
level,
|
|
24540
|
+
text: sanitizeHeading(rawText)
|
|
24541
|
+
};
|
|
24542
|
+
}
|
|
24543
|
+
function extractHeadings(markdown, options = {}) {
|
|
24544
|
+
const {
|
|
24545
|
+
minDepth = 1,
|
|
24546
|
+
maxDepth = 6,
|
|
24547
|
+
includeSetextHeadings = true,
|
|
24548
|
+
idPrefix = ""
|
|
24549
|
+
} = options;
|
|
24550
|
+
const normalizedMarkdown = normalizeMarkdown(markdown);
|
|
24551
|
+
const lines = normalizedMarkdown.split("\n");
|
|
24552
|
+
const headings = [];
|
|
24553
|
+
const slugCounts = /* @__PURE__ */ new Map();
|
|
24554
|
+
let activeFence = null;
|
|
24555
|
+
for (let index = 0; index < lines.length; index++) {
|
|
24556
|
+
const line = lines[index];
|
|
24557
|
+
const fence = getFenceState(line);
|
|
24558
|
+
if (activeFence) {
|
|
24559
|
+
if (closesFence(line, activeFence)) {
|
|
24560
|
+
activeFence = null;
|
|
24561
|
+
}
|
|
24562
|
+
continue;
|
|
24563
|
+
}
|
|
24564
|
+
if (fence) {
|
|
24565
|
+
activeFence = fence;
|
|
24566
|
+
continue;
|
|
24567
|
+
}
|
|
24568
|
+
const atxHeading = extractAtxHeading(line);
|
|
24569
|
+
if (atxHeading) {
|
|
24570
|
+
const { level, text: text2 } = atxHeading;
|
|
24571
|
+
if (level >= minDepth && level <= maxDepth && text2) {
|
|
24572
|
+
const id = createHeadingSlug(text2, { slugCounts });
|
|
24573
|
+
headings.push({
|
|
24574
|
+
id: `${idPrefix}${id}`,
|
|
24575
|
+
text: text2,
|
|
24576
|
+
level
|
|
24577
|
+
});
|
|
24578
|
+
}
|
|
24579
|
+
continue;
|
|
24580
|
+
}
|
|
24581
|
+
if (!includeSetextHeadings) {
|
|
24582
|
+
continue;
|
|
24583
|
+
}
|
|
24584
|
+
const nextLine = lines[index + 1];
|
|
24585
|
+
if (!nextLine) {
|
|
24586
|
+
continue;
|
|
24587
|
+
}
|
|
24588
|
+
const setextLevel = isSetextUnderline(nextLine);
|
|
24589
|
+
if (!setextLevel) {
|
|
24590
|
+
continue;
|
|
24591
|
+
}
|
|
24592
|
+
const text = sanitizeHeading(line);
|
|
24593
|
+
if (!text) {
|
|
24594
|
+
continue;
|
|
24595
|
+
}
|
|
24596
|
+
if (setextLevel >= minDepth && setextLevel <= maxDepth) {
|
|
24597
|
+
const id = createHeadingSlug(text, { slugCounts });
|
|
24598
|
+
headings.push({
|
|
24599
|
+
id: `${idPrefix}${id}`,
|
|
24600
|
+
text,
|
|
24601
|
+
level: setextLevel
|
|
24602
|
+
});
|
|
24603
|
+
}
|
|
24604
|
+
index++;
|
|
24605
|
+
}
|
|
24606
|
+
return headings;
|
|
24607
|
+
}
|
|
24608
|
+
|
|
24609
|
+
// src/compositions/markdown/utils/generateHeadingNumbers.ts
|
|
24610
|
+
function generateHeadingNumbers(headings, options = {}) {
|
|
24611
|
+
const { minDepth = 1, maxDepth = 6, separator = "." } = options;
|
|
24612
|
+
const counters = [0, 0, 0, 0, 0, 0];
|
|
24613
|
+
return headings.filter((heading) => {
|
|
24614
|
+
return heading.level >= minDepth && heading.level <= maxDepth;
|
|
24615
|
+
}).map((heading) => {
|
|
24616
|
+
const level = Math.min(Math.max(heading.level, 1), 6);
|
|
24617
|
+
counters[level - 1]++;
|
|
24618
|
+
for (let index = level; index < counters.length; index++) {
|
|
24619
|
+
counters[index] = 0;
|
|
24620
|
+
}
|
|
24621
|
+
const numbering = counters.slice(0, level).filter((count) => count > 0).join(separator);
|
|
24622
|
+
return {
|
|
24623
|
+
...heading,
|
|
24624
|
+
numbering
|
|
24625
|
+
};
|
|
24626
|
+
});
|
|
24627
|
+
}
|
|
24628
|
+
function MarkdownProvider({
|
|
24629
|
+
children,
|
|
24630
|
+
markdown,
|
|
24631
|
+
value,
|
|
24632
|
+
headings: externalHeadings,
|
|
24633
|
+
meta,
|
|
24634
|
+
activeHeading: controlledActiveHeading,
|
|
24635
|
+
defaultActiveHeading = "",
|
|
24636
|
+
onActiveHeadingChange
|
|
24637
|
+
}) {
|
|
24638
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
24639
|
+
const [internalActiveHeading, setInternalActiveHeading] = React2.useState(defaultActiveHeading);
|
|
24640
|
+
const headings = React2.useMemo(() => {
|
|
24641
|
+
if (externalHeadings) {
|
|
24642
|
+
return externalHeadings;
|
|
24643
|
+
}
|
|
24644
|
+
return extractHeadings(resolvedMarkdown);
|
|
24645
|
+
}, [externalHeadings, resolvedMarkdown]);
|
|
24646
|
+
const numberedHeadings = React2.useMemo(() => {
|
|
24647
|
+
return generateHeadingNumbers(headings);
|
|
24648
|
+
}, [headings]);
|
|
24649
|
+
const headingMap = React2.useMemo(() => {
|
|
24650
|
+
return headings.reduce((acc, heading) => {
|
|
24651
|
+
acc[heading.id] = heading;
|
|
24652
|
+
return acc;
|
|
24653
|
+
}, {});
|
|
24654
|
+
}, [headings]);
|
|
24655
|
+
const activeHeading = controlledActiveHeading ?? internalActiveHeading;
|
|
24656
|
+
const getHeadingById = React2.useCallback(
|
|
24657
|
+
(id) => {
|
|
24658
|
+
return headingMap[id];
|
|
24659
|
+
},
|
|
24660
|
+
[headingMap]
|
|
24661
|
+
);
|
|
24662
|
+
const setActiveHeading = React2.useCallback(
|
|
24663
|
+
(id) => {
|
|
24664
|
+
if (controlledActiveHeading === void 0) {
|
|
24665
|
+
setInternalActiveHeading(id);
|
|
24666
|
+
}
|
|
24667
|
+
onActiveHeadingChange?.(id, headingMap[id]);
|
|
24668
|
+
},
|
|
24669
|
+
[controlledActiveHeading, headingMap, onActiveHeadingChange]
|
|
24670
|
+
);
|
|
24671
|
+
const contextValue = React2.useMemo(
|
|
24672
|
+
() => ({
|
|
24673
|
+
markdown: resolvedMarkdown,
|
|
24674
|
+
headings,
|
|
24675
|
+
numberedHeadings,
|
|
24676
|
+
activeHeading,
|
|
24677
|
+
setActiveHeading,
|
|
24678
|
+
meta,
|
|
24679
|
+
getHeadingById
|
|
24680
|
+
}),
|
|
24681
|
+
[
|
|
24682
|
+
resolvedMarkdown,
|
|
24683
|
+
headings,
|
|
24684
|
+
numberedHeadings,
|
|
24685
|
+
activeHeading,
|
|
24686
|
+
setActiveHeading,
|
|
24687
|
+
meta,
|
|
24688
|
+
getHeadingById
|
|
24689
|
+
]
|
|
24690
|
+
);
|
|
24691
|
+
return /* @__PURE__ */ jsxRuntime.jsx(MarkdownContext.Provider, { value: contextValue, children });
|
|
24692
|
+
}
|
|
24693
|
+
var MarkdownProvider_default = MarkdownProvider;
|
|
24694
|
+
function useMarkdown(options = {}) {
|
|
24695
|
+
const { required = false, errorMessage } = options;
|
|
24696
|
+
const context = React2.useContext(MarkdownContext);
|
|
24697
|
+
if (!context && required) {
|
|
24698
|
+
throw new Error(
|
|
24699
|
+
errorMessage || "useMarkdown must be used inside a MarkdownProvider."
|
|
24700
|
+
);
|
|
24701
|
+
}
|
|
24702
|
+
return context;
|
|
24703
|
+
}
|
|
24704
|
+
function useActiveHeading(options = {}) {
|
|
24705
|
+
const context = useMarkdown();
|
|
24706
|
+
const {
|
|
24707
|
+
headings: externalHeadings,
|
|
24708
|
+
activeHeading: controlledActiveHeading,
|
|
24709
|
+
defaultActiveHeading = "",
|
|
24710
|
+
enabled = true,
|
|
24711
|
+
root = null,
|
|
24712
|
+
rootMargin = "-20% 0px -70% 0px",
|
|
24713
|
+
threshold = 0,
|
|
24714
|
+
scrollBehavior = "smooth",
|
|
24715
|
+
scrollBlock = "start",
|
|
24716
|
+
onActiveHeadingChange
|
|
24717
|
+
} = options;
|
|
24718
|
+
const headings = externalHeadings ?? context?.headings ?? [];
|
|
24719
|
+
const [internalActiveHeading, setInternalActiveHeading] = React2.useState(defaultActiveHeading);
|
|
24720
|
+
const activeHeading = controlledActiveHeading ?? context?.activeHeading ?? internalActiveHeading;
|
|
24721
|
+
const headingMap = React2.useMemo(() => {
|
|
24722
|
+
return headings.reduce((acc, heading) => {
|
|
24723
|
+
acc[heading.id] = heading;
|
|
24724
|
+
return acc;
|
|
24725
|
+
}, {});
|
|
24726
|
+
}, [headings]);
|
|
24727
|
+
const setActiveHeading = React2.useCallback(
|
|
24728
|
+
(id) => {
|
|
24729
|
+
if (controlledActiveHeading === void 0 && !context) {
|
|
24730
|
+
setInternalActiveHeading(id);
|
|
24731
|
+
}
|
|
24732
|
+
context?.setActiveHeading(id);
|
|
24733
|
+
onActiveHeadingChange?.(id, headingMap[id]);
|
|
24734
|
+
},
|
|
24735
|
+
[context, controlledActiveHeading, headingMap, onActiveHeadingChange]
|
|
24736
|
+
);
|
|
24737
|
+
const scrollToHeading = React2.useCallback(
|
|
24738
|
+
(id) => {
|
|
24739
|
+
if (typeof document === "undefined") return;
|
|
24740
|
+
const element = document.getElementById(id);
|
|
24741
|
+
if (!element) return;
|
|
24742
|
+
element.scrollIntoView({
|
|
24743
|
+
behavior: scrollBehavior,
|
|
24744
|
+
block: scrollBlock
|
|
24745
|
+
});
|
|
24746
|
+
setActiveHeading(id);
|
|
24747
|
+
},
|
|
24748
|
+
[scrollBehavior, scrollBlock, setActiveHeading]
|
|
24749
|
+
);
|
|
24750
|
+
const observedHeadingIds = React2.useMemo(() => {
|
|
24751
|
+
return headings.map((heading) => heading.id).join("|");
|
|
24752
|
+
}, [headings]);
|
|
24753
|
+
React2.useEffect(() => {
|
|
24754
|
+
if (!enabled) return;
|
|
24755
|
+
if (typeof window === "undefined") return;
|
|
24756
|
+
if (!("IntersectionObserver" in window)) return;
|
|
24757
|
+
if (headings.length === 0) return;
|
|
24758
|
+
const elements = headings.map((heading) => document.getElementById(heading.id)).filter((element) => Boolean(element));
|
|
24759
|
+
if (elements.length === 0) return;
|
|
24760
|
+
const observer = new IntersectionObserver(
|
|
24761
|
+
(entries) => {
|
|
24762
|
+
const visibleEntries = entries.filter((entry) => entry.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
24763
|
+
const nextActiveId = visibleEntries[0]?.target.id;
|
|
24764
|
+
if (!nextActiveId) return;
|
|
24765
|
+
setActiveHeading(nextActiveId);
|
|
24766
|
+
},
|
|
24767
|
+
{
|
|
24768
|
+
root,
|
|
24769
|
+
rootMargin,
|
|
24770
|
+
threshold
|
|
24771
|
+
}
|
|
24772
|
+
);
|
|
24773
|
+
elements.forEach((element) => {
|
|
24774
|
+
observer.observe(element);
|
|
24775
|
+
});
|
|
24776
|
+
return () => {
|
|
24777
|
+
observer.disconnect();
|
|
24778
|
+
};
|
|
24779
|
+
}, [
|
|
24780
|
+
enabled,
|
|
24781
|
+
root,
|
|
24782
|
+
rootMargin,
|
|
24783
|
+
threshold,
|
|
24784
|
+
observedHeadingIds,
|
|
24785
|
+
headings,
|
|
24786
|
+
setActiveHeading
|
|
24787
|
+
]);
|
|
24788
|
+
return {
|
|
24789
|
+
activeHeading,
|
|
24790
|
+
setActiveHeading,
|
|
24791
|
+
scrollToHeading
|
|
24792
|
+
};
|
|
24793
|
+
}
|
|
24794
|
+
function useMarkdownHeadings(options = {}) {
|
|
24795
|
+
const context = useMarkdown();
|
|
24796
|
+
const {
|
|
24797
|
+
markdown,
|
|
24798
|
+
headings: externalHeadings,
|
|
24799
|
+
minDepth = 1,
|
|
24800
|
+
maxDepth = 6
|
|
24801
|
+
} = options;
|
|
24802
|
+
const baseHeadings = React2.useMemo(() => {
|
|
24803
|
+
if (externalHeadings) {
|
|
24804
|
+
return externalHeadings;
|
|
24805
|
+
}
|
|
24806
|
+
if (markdown !== void 0) {
|
|
24807
|
+
return extractHeadings(markdown);
|
|
24808
|
+
}
|
|
24809
|
+
return context?.headings ?? [];
|
|
24810
|
+
}, [context?.headings, externalHeadings, markdown]);
|
|
24811
|
+
const headings = React2.useMemo(() => {
|
|
24812
|
+
return baseHeadings.filter((heading) => {
|
|
24813
|
+
return heading.level >= minDepth && heading.level <= maxDepth;
|
|
24814
|
+
});
|
|
24815
|
+
}, [baseHeadings, minDepth, maxDepth]);
|
|
24816
|
+
const numberedHeadings = React2.useMemo(() => {
|
|
24817
|
+
return generateHeadingNumbers(headings);
|
|
24818
|
+
}, [headings]);
|
|
24819
|
+
const headingMap = React2.useMemo(() => {
|
|
24820
|
+
return headings.reduce((acc, heading) => {
|
|
24821
|
+
acc[heading.id] = heading;
|
|
24822
|
+
return acc;
|
|
24823
|
+
}, {});
|
|
24824
|
+
}, [headings]);
|
|
24825
|
+
const getHeadingById = (id) => {
|
|
24826
|
+
return headingMap[id];
|
|
24827
|
+
};
|
|
24828
|
+
return {
|
|
24829
|
+
headings,
|
|
24830
|
+
numberedHeadings,
|
|
24831
|
+
hasHeadings: headings.length > 0,
|
|
24832
|
+
getHeadingById
|
|
24833
|
+
};
|
|
24834
|
+
}
|
|
24835
|
+
function MarkdownHeading({
|
|
24836
|
+
id,
|
|
24837
|
+
level,
|
|
24838
|
+
children,
|
|
24839
|
+
className,
|
|
24840
|
+
showAnchor = true,
|
|
24841
|
+
...props
|
|
24842
|
+
}) {
|
|
24843
|
+
const tag = `h${Math.min(Math.max(level, 1), 6)}`;
|
|
24844
|
+
return React2__default.default.createElement(
|
|
24845
|
+
tag,
|
|
24846
|
+
{
|
|
24847
|
+
...props,
|
|
24848
|
+
id,
|
|
24849
|
+
className: classNames66__default.default("eui-markdown-heading", className)
|
|
24850
|
+
},
|
|
24851
|
+
/* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
24852
|
+
children,
|
|
24853
|
+
showAnchor && id ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
24854
|
+
"a",
|
|
24855
|
+
{
|
|
24856
|
+
href: `#${id}`,
|
|
24857
|
+
className: "eui-markdown-heading-anchor",
|
|
24858
|
+
"aria-label": "Link to heading",
|
|
24859
|
+
children: "#"
|
|
24860
|
+
}
|
|
24861
|
+
) : null
|
|
24862
|
+
] })
|
|
24863
|
+
);
|
|
24864
|
+
}
|
|
24865
|
+
var MarkdownHeading_default = MarkdownHeading;
|
|
24866
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("bash", bash__default.default);
|
|
24867
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("shell", bash__default.default);
|
|
24868
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("sh", bash__default.default);
|
|
24869
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("zsh", bash__default.default);
|
|
24870
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("c", c__default.default);
|
|
24871
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("cpp", cpp__default.default);
|
|
24872
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("c++", cpp__default.default);
|
|
24873
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("css", css__default.default);
|
|
24874
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("scss", scss__default.default);
|
|
24875
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("go", go__default.default);
|
|
24876
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("java", java__default.default);
|
|
24877
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("js", javascript__default.default);
|
|
24878
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("javascript", javascript__default.default);
|
|
24879
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("jsx", jsx210__default.default);
|
|
24880
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("json", json__default.default);
|
|
24881
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("html", markup__default.default);
|
|
24882
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("xml", markup__default.default);
|
|
24883
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("markup", markup__default.default);
|
|
24884
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("py", python__default.default);
|
|
24885
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("python", python__default.default);
|
|
24886
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("rs", rust__default.default);
|
|
24887
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("rust", rust__default.default);
|
|
24888
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("sql", sql__default.default);
|
|
24889
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("ts", typescript__default.default);
|
|
24890
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("typescript", typescript__default.default);
|
|
24891
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("tsx", tsx__default.default);
|
|
24892
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("yaml", yaml__default.default);
|
|
24893
|
+
reactSyntaxHighlighter.PrismLight.registerLanguage("yml", yaml__default.default);
|
|
24894
|
+
var LANGUAGE_ALIASES = {
|
|
24895
|
+
js: "javascript",
|
|
24896
|
+
ts: "typescript",
|
|
24897
|
+
py: "python",
|
|
24898
|
+
sh: "bash",
|
|
24899
|
+
shell: "bash",
|
|
24900
|
+
zsh: "bash",
|
|
24901
|
+
yml: "yaml",
|
|
24902
|
+
html: "markup",
|
|
24903
|
+
xml: "markup",
|
|
24904
|
+
"c++": "cpp",
|
|
24905
|
+
text: "text",
|
|
24906
|
+
txt: "text",
|
|
24907
|
+
plain: "text",
|
|
24908
|
+
plaintext: "text"
|
|
24909
|
+
};
|
|
24910
|
+
function normalizeLanguage(language) {
|
|
24911
|
+
if (!language) return "text";
|
|
24912
|
+
const normalized = language.toLowerCase().trim();
|
|
24913
|
+
return LANGUAGE_ALIASES[normalized] ?? normalized;
|
|
24914
|
+
}
|
|
24915
|
+
function MarkdownCodeBlock({
|
|
24916
|
+
code,
|
|
24917
|
+
language,
|
|
24918
|
+
meta,
|
|
24919
|
+
className,
|
|
24920
|
+
showCopy = true,
|
|
24921
|
+
wrapLongLines = false,
|
|
24922
|
+
...props
|
|
24923
|
+
}) {
|
|
24924
|
+
const [copied, setCopied] = React2.useState(false);
|
|
24925
|
+
const timeoutRef = React2.useRef(null);
|
|
24926
|
+
const title = meta?.title ?? meta?.filename;
|
|
24927
|
+
const resolvedLanguage = React2.useMemo(() => {
|
|
24928
|
+
return normalizeLanguage(language);
|
|
24929
|
+
}, [language]);
|
|
24930
|
+
const languageLabel = language || resolvedLanguage;
|
|
24931
|
+
const showHeader = Boolean(title || languageLabel || showCopy);
|
|
24932
|
+
const highlightLines = React2.useMemo(() => {
|
|
24933
|
+
return new Set(meta?.highlightLines ?? []);
|
|
24934
|
+
}, [meta?.highlightLines]);
|
|
24935
|
+
const showLineNumbers = Boolean(meta?.showLineNumbers);
|
|
24936
|
+
React2.useEffect(() => {
|
|
24937
|
+
return () => {
|
|
24938
|
+
if (timeoutRef.current) {
|
|
24939
|
+
window.clearTimeout(timeoutRef.current);
|
|
24940
|
+
}
|
|
24941
|
+
};
|
|
24942
|
+
}, []);
|
|
24943
|
+
const copyCode = async () => {
|
|
24944
|
+
if (typeof navigator === "undefined") return;
|
|
24945
|
+
if (!navigator.clipboard) return;
|
|
24946
|
+
await navigator.clipboard.writeText(code);
|
|
24947
|
+
setCopied(true);
|
|
24948
|
+
if (timeoutRef.current) {
|
|
24949
|
+
window.clearTimeout(timeoutRef.current);
|
|
24950
|
+
}
|
|
24951
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
24952
|
+
setCopied(false);
|
|
24953
|
+
}, 1500);
|
|
24954
|
+
};
|
|
24955
|
+
const lineNumberStyle = {
|
|
24956
|
+
minWidth: "3rem",
|
|
24957
|
+
paddingRight: "1rem",
|
|
24958
|
+
color: "rgb(100 116 139)",
|
|
24959
|
+
textAlign: "right",
|
|
24960
|
+
userSelect: "none"
|
|
24961
|
+
};
|
|
24962
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { ...props, className: classNames66__default.default("eui-markdown-code", className), children: [
|
|
24963
|
+
showHeader ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "eui-markdown-code-header", children: [
|
|
24964
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "eui-markdown-code-header-main", children: [
|
|
24965
|
+
title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "eui-markdown-code-title", children: title }) : null,
|
|
24966
|
+
languageLabel ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "eui-markdown-code-language", children: languageLabel }) : null
|
|
24967
|
+
] }),
|
|
24968
|
+
showCopy ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
24969
|
+
"button",
|
|
24970
|
+
{
|
|
24971
|
+
type: "button",
|
|
24972
|
+
className: "eui-markdown-copy-button",
|
|
24973
|
+
onClick: copyCode,
|
|
24974
|
+
children: copied ? "Copied" : "Copy"
|
|
24975
|
+
}
|
|
24976
|
+
) : null
|
|
24977
|
+
] }) : null,
|
|
24978
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
24979
|
+
reactSyntaxHighlighter.PrismLight,
|
|
24980
|
+
{
|
|
24981
|
+
className: "eui-markdown-code-highlighter",
|
|
24982
|
+
language: resolvedLanguage,
|
|
24983
|
+
style: prism.vscDarkPlus,
|
|
24984
|
+
showLineNumbers,
|
|
24985
|
+
wrapLines: highlightLines.size > 0,
|
|
24986
|
+
wrapLongLines,
|
|
24987
|
+
PreTag: "pre",
|
|
24988
|
+
CodeTag: "code",
|
|
24989
|
+
customStyle: {
|
|
24990
|
+
margin: 0,
|
|
24991
|
+
padding: "1rem",
|
|
24992
|
+
background: "transparent",
|
|
24993
|
+
fontSize: "0.875rem",
|
|
24994
|
+
lineHeight: 1.7
|
|
24995
|
+
},
|
|
24996
|
+
codeTagProps: {
|
|
24997
|
+
style: {
|
|
24998
|
+
fontFamily: '"JetBrains Mono", "Fira Code", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace'
|
|
24999
|
+
}
|
|
25000
|
+
},
|
|
25001
|
+
lineNumberStyle,
|
|
25002
|
+
lineProps: (lineNumber) => {
|
|
25003
|
+
const highlighted = highlightLines.has(lineNumber);
|
|
25004
|
+
return {
|
|
25005
|
+
className: highlighted ? "eui-markdown-code-line-highlighted" : void 0,
|
|
25006
|
+
style: {
|
|
25007
|
+
display: "block",
|
|
25008
|
+
background: highlighted ? "rgba(250, 204, 21, 0.12)" : void 0
|
|
25009
|
+
}
|
|
25010
|
+
};
|
|
25011
|
+
},
|
|
25012
|
+
children: code
|
|
25013
|
+
}
|
|
25014
|
+
)
|
|
25015
|
+
] });
|
|
25016
|
+
}
|
|
25017
|
+
var MarkdownCodeBlock_default = MarkdownCodeBlock;
|
|
25018
|
+
function MarkdownInlineCode({
|
|
25019
|
+
children,
|
|
25020
|
+
className,
|
|
25021
|
+
...props
|
|
25022
|
+
}) {
|
|
25023
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25024
|
+
"code",
|
|
25025
|
+
{
|
|
25026
|
+
...props,
|
|
25027
|
+
className: classNames66__default.default("eui-markdown-inline-code", className),
|
|
25028
|
+
children
|
|
25029
|
+
}
|
|
25030
|
+
);
|
|
25031
|
+
}
|
|
25032
|
+
var MarkdownInlineCode_default = MarkdownInlineCode;
|
|
25033
|
+
function isExternalHref(href) {
|
|
25034
|
+
if (!href) return false;
|
|
25035
|
+
return /^https?:\/\//i.test(href);
|
|
25036
|
+
}
|
|
25037
|
+
function getSafeHref(href) {
|
|
25038
|
+
if (!href) return void 0;
|
|
25039
|
+
const trimmed = href.trim();
|
|
25040
|
+
const isSafe = trimmed.startsWith("#") || trimmed.startsWith("/") || trimmed.startsWith("./") || trimmed.startsWith("../") || /^https?:\/\//i.test(trimmed) || /^mailto:/i.test(trimmed) || /^tel:/i.test(trimmed);
|
|
25041
|
+
return isSafe ? trimmed : void 0;
|
|
25042
|
+
}
|
|
25043
|
+
function MarkdownLink({
|
|
25044
|
+
href,
|
|
25045
|
+
target,
|
|
25046
|
+
children,
|
|
25047
|
+
className,
|
|
25048
|
+
openLinksInNewTab = true,
|
|
25049
|
+
...props
|
|
25050
|
+
}) {
|
|
25051
|
+
const safeHref = getSafeHref(href);
|
|
25052
|
+
if (!safeHref) {
|
|
25053
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className, children });
|
|
25054
|
+
}
|
|
25055
|
+
const external = isExternalHref(safeHref);
|
|
25056
|
+
const resolvedTarget = target ?? (openLinksInNewTab && external ? "_blank" : void 0);
|
|
25057
|
+
const rel = resolvedTarget === "_blank" ? "noopener noreferrer" : props.rel;
|
|
25058
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25059
|
+
"a",
|
|
25060
|
+
{
|
|
25061
|
+
...props,
|
|
25062
|
+
href: safeHref,
|
|
25063
|
+
target: resolvedTarget,
|
|
25064
|
+
rel,
|
|
25065
|
+
className: classNames66__default.default("eui-markdown-link", className),
|
|
25066
|
+
children
|
|
25067
|
+
}
|
|
25068
|
+
);
|
|
25069
|
+
}
|
|
25070
|
+
var MarkdownLink_default = MarkdownLink;
|
|
25071
|
+
function getSafeImageSrc(src) {
|
|
25072
|
+
if (!src) return void 0;
|
|
25073
|
+
const trimmed = src.trim();
|
|
25074
|
+
const isSafe = trimmed.startsWith("/") || trimmed.startsWith("./") || trimmed.startsWith("../") || /^https?:\/\//i.test(trimmed) || /^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,/i.test(trimmed);
|
|
25075
|
+
return isSafe ? trimmed : void 0;
|
|
25076
|
+
}
|
|
25077
|
+
function MarkdownImage({
|
|
25078
|
+
src,
|
|
25079
|
+
alt,
|
|
25080
|
+
title,
|
|
25081
|
+
className,
|
|
25082
|
+
...props
|
|
25083
|
+
}) {
|
|
25084
|
+
const safeSrc = getSafeImageSrc(src);
|
|
25085
|
+
if (!safeSrc) {
|
|
25086
|
+
return null;
|
|
25087
|
+
}
|
|
25088
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25089
|
+
"img",
|
|
25090
|
+
{
|
|
25091
|
+
...props,
|
|
25092
|
+
src: safeSrc,
|
|
25093
|
+
alt: alt ?? "",
|
|
25094
|
+
title,
|
|
25095
|
+
loading: "lazy",
|
|
25096
|
+
decoding: "async",
|
|
25097
|
+
className: classNames66__default.default("eui-markdown-image", className)
|
|
25098
|
+
}
|
|
25099
|
+
);
|
|
25100
|
+
}
|
|
25101
|
+
var MarkdownImage_default = MarkdownImage;
|
|
25102
|
+
function MarkdownTable({
|
|
25103
|
+
children,
|
|
25104
|
+
className,
|
|
25105
|
+
...props
|
|
25106
|
+
}) {
|
|
25107
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "eui-markdown-table-wrapper", children: /* @__PURE__ */ jsxRuntime.jsx("table", { ...props, className: classNames66__default.default("eui-markdown-table", className), children }) });
|
|
25108
|
+
}
|
|
25109
|
+
function MarkdownTableCell({
|
|
25110
|
+
children,
|
|
25111
|
+
className,
|
|
25112
|
+
...props
|
|
25113
|
+
}) {
|
|
25114
|
+
return /* @__PURE__ */ jsxRuntime.jsx("td", { ...props, className: classNames66__default.default("eui-markdown-table-cell", className), children });
|
|
25115
|
+
}
|
|
25116
|
+
function MarkdownTableHeaderCell({
|
|
25117
|
+
children,
|
|
25118
|
+
className,
|
|
25119
|
+
...props
|
|
25120
|
+
}) {
|
|
25121
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25122
|
+
"th",
|
|
25123
|
+
{
|
|
25124
|
+
...props,
|
|
25125
|
+
className: classNames66__default.default("eui-markdown-table-header-cell", className),
|
|
25126
|
+
children
|
|
25127
|
+
}
|
|
25128
|
+
);
|
|
25129
|
+
}
|
|
25130
|
+
var MarkdownTable_default = MarkdownTable;
|
|
25131
|
+
function MarkdownBlockquote({
|
|
25132
|
+
children,
|
|
25133
|
+
className,
|
|
25134
|
+
...props
|
|
25135
|
+
}) {
|
|
25136
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25137
|
+
"blockquote",
|
|
25138
|
+
{
|
|
25139
|
+
...props,
|
|
25140
|
+
className: classNames66__default.default("eui-markdown-blockquote", className),
|
|
25141
|
+
children
|
|
25142
|
+
}
|
|
25143
|
+
);
|
|
25144
|
+
}
|
|
25145
|
+
var MarkdownBlockquote_default = MarkdownBlockquote;
|
|
25146
|
+
function getTextContent(node) {
|
|
25147
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
25148
|
+
return String(node);
|
|
25149
|
+
}
|
|
25150
|
+
if (Array.isArray(node)) {
|
|
25151
|
+
return node.map(getTextContent).join("");
|
|
25152
|
+
}
|
|
25153
|
+
if (React2.isValidElement(node)) {
|
|
25154
|
+
return getTextContent(node.props.children);
|
|
25155
|
+
}
|
|
25156
|
+
return "";
|
|
25157
|
+
}
|
|
25158
|
+
function createHeadingKey(level, text) {
|
|
25159
|
+
return `${level}:${sanitizeHeading(text)}`;
|
|
25160
|
+
}
|
|
25161
|
+
function parseNumberRanges(value) {
|
|
25162
|
+
if (!value) return [];
|
|
25163
|
+
const normalized = value.replace(/[{}[\]\s]/g, "");
|
|
25164
|
+
if (!normalized) return [];
|
|
25165
|
+
const values = /* @__PURE__ */ new Set();
|
|
25166
|
+
normalized.split(",").forEach((part) => {
|
|
25167
|
+
if (!part) return;
|
|
25168
|
+
const rangeMatch = part.match(/^(\d+)-(\d+)$/);
|
|
25169
|
+
if (rangeMatch) {
|
|
25170
|
+
const start = Number(rangeMatch[1]);
|
|
25171
|
+
const end = Number(rangeMatch[2]);
|
|
25172
|
+
for (let line2 = start; line2 <= end; line2++) {
|
|
25173
|
+
values.add(line2);
|
|
25174
|
+
}
|
|
25175
|
+
return;
|
|
25176
|
+
}
|
|
25177
|
+
const line = Number(part);
|
|
25178
|
+
if (!Number.isNaN(line)) {
|
|
25179
|
+
values.add(line);
|
|
25180
|
+
}
|
|
25181
|
+
});
|
|
25182
|
+
return Array.from(values).sort((a, b) => a - b);
|
|
25183
|
+
}
|
|
25184
|
+
function parseCodeMeta(metaString) {
|
|
25185
|
+
if (!metaString) return void 0;
|
|
25186
|
+
const filenameMatch = metaString.match(
|
|
25187
|
+
/(?:filename|file)=["']?([^"'\s]+)["']?/
|
|
25188
|
+
);
|
|
25189
|
+
const titleMatch = metaString.match(/(?:title)=["']?([^"']+)["']?/);
|
|
25190
|
+
const highlightMatch = metaString.match(/(?:highlight|lines)=["']?([^"'\s]+)["']?/) || metaString.match(/{([^}]+)}/);
|
|
25191
|
+
return {
|
|
25192
|
+
filename: filenameMatch?.[1],
|
|
25193
|
+
title: titleMatch?.[1],
|
|
25194
|
+
showLineNumbers: /\b(showLineNumbers|lineNumbers|line-numbers)\b/.test(
|
|
25195
|
+
metaString
|
|
25196
|
+
),
|
|
25197
|
+
highlightLines: parseNumberRanges(highlightMatch?.[1])
|
|
25198
|
+
};
|
|
25199
|
+
}
|
|
25200
|
+
function getCodeMetaString(node) {
|
|
25201
|
+
const value = node;
|
|
25202
|
+
return value?.data?.meta || value?.data?.hProperties?.meta || value?.properties?.meta || value?.properties?.dataMeta || value?.meta;
|
|
25203
|
+
}
|
|
25204
|
+
function getLanguageFromClassName(className) {
|
|
25205
|
+
if (!className) return void 0;
|
|
25206
|
+
const match = className.match(/language-([^\s]+)/);
|
|
25207
|
+
return match?.[1];
|
|
25208
|
+
}
|
|
25209
|
+
function getCodeInfoFromPreChildren(children) {
|
|
25210
|
+
const childArray = React2__default.default.Children.toArray(children);
|
|
25211
|
+
const codeElement = childArray.find((child) => {
|
|
25212
|
+
if (!React2.isValidElement(child)) return false;
|
|
25213
|
+
return child.type === "code";
|
|
25214
|
+
});
|
|
25215
|
+
const codeProps = codeElement?.props;
|
|
25216
|
+
const code = getTextContent(codeProps?.children ?? children).replace(
|
|
25217
|
+
/\n$/,
|
|
25218
|
+
""
|
|
25219
|
+
);
|
|
25220
|
+
const language = getLanguageFromClassName(codeProps?.className);
|
|
25221
|
+
const meta = parseCodeMeta(codeProps?.["data-meta"]);
|
|
25222
|
+
return {
|
|
25223
|
+
code,
|
|
25224
|
+
language,
|
|
25225
|
+
meta
|
|
25226
|
+
};
|
|
25227
|
+
}
|
|
25228
|
+
function MarkdownRenderer({
|
|
25229
|
+
markdown,
|
|
25230
|
+
headings = [],
|
|
25231
|
+
headingIdPrefix = "",
|
|
25232
|
+
components,
|
|
25233
|
+
className,
|
|
25234
|
+
contentClassName,
|
|
25235
|
+
openLinksInNewTab = true,
|
|
25236
|
+
linkTarget,
|
|
25237
|
+
enableGfm = true,
|
|
25238
|
+
allowHtml = false,
|
|
25239
|
+
sanitizeHtml = true,
|
|
25240
|
+
showCopyCode = true,
|
|
25241
|
+
showHeadingAnchors = true
|
|
25242
|
+
}) {
|
|
25243
|
+
const headingQueues = /* @__PURE__ */ new Map();
|
|
25244
|
+
headings.forEach((heading) => {
|
|
25245
|
+
const key = createHeadingKey(heading.level, heading.text);
|
|
25246
|
+
const queue = headingQueues.get(key) ?? [];
|
|
25247
|
+
queue.push(heading.id);
|
|
25248
|
+
headingQueues.set(key, queue);
|
|
25249
|
+
});
|
|
25250
|
+
const headingUsage = /* @__PURE__ */ new Map();
|
|
25251
|
+
const fallbackSlugCounts = /* @__PURE__ */ new Map();
|
|
25252
|
+
const resolveHeadingId = (level, children) => {
|
|
25253
|
+
const text = getTextContent(children);
|
|
25254
|
+
const key = createHeadingKey(level, text);
|
|
25255
|
+
const queue = headingQueues.get(key);
|
|
25256
|
+
if (queue?.length) {
|
|
25257
|
+
const usedCount = headingUsage.get(key) ?? 0;
|
|
25258
|
+
headingUsage.set(key, usedCount + 1);
|
|
25259
|
+
const existingId = queue[usedCount];
|
|
25260
|
+
if (existingId) {
|
|
25261
|
+
return existingId;
|
|
25262
|
+
}
|
|
25263
|
+
}
|
|
25264
|
+
return `${headingIdPrefix}${createHeadingSlug(text, {
|
|
25265
|
+
slugCounts: fallbackSlugCounts
|
|
25266
|
+
})}`;
|
|
25267
|
+
};
|
|
25268
|
+
const remarkPlugins = [];
|
|
25269
|
+
if (enableGfm) {
|
|
25270
|
+
remarkPlugins.push(remarkGfm__default.default);
|
|
25271
|
+
}
|
|
25272
|
+
const rehypePlugins = [];
|
|
25273
|
+
if (allowHtml) {
|
|
25274
|
+
rehypePlugins.push(rehypeRaw__default.default);
|
|
25275
|
+
if (sanitizeHtml) {
|
|
25276
|
+
rehypePlugins.push(rehypeSanitize__default.default);
|
|
25277
|
+
}
|
|
25278
|
+
}
|
|
25279
|
+
const rendererComponents = {
|
|
25280
|
+
h1: ({ node: _node, children, ...rest }) => {
|
|
25281
|
+
const Component = components?.h1 ?? MarkdownHeading_default;
|
|
25282
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25283
|
+
Component,
|
|
25284
|
+
{
|
|
25285
|
+
...rest,
|
|
25286
|
+
id: resolveHeadingId(1, children),
|
|
25287
|
+
level: 1,
|
|
25288
|
+
showAnchor: showHeadingAnchors,
|
|
25289
|
+
children
|
|
25290
|
+
}
|
|
25291
|
+
);
|
|
25292
|
+
},
|
|
25293
|
+
h2: ({ node: _node, children, ...rest }) => {
|
|
25294
|
+
const Component = components?.h2 ?? MarkdownHeading_default;
|
|
25295
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25296
|
+
Component,
|
|
25297
|
+
{
|
|
25298
|
+
...rest,
|
|
25299
|
+
id: resolveHeadingId(2, children),
|
|
25300
|
+
level: 2,
|
|
25301
|
+
showAnchor: showHeadingAnchors,
|
|
25302
|
+
children
|
|
25303
|
+
}
|
|
25304
|
+
);
|
|
25305
|
+
},
|
|
25306
|
+
h3: ({ node: _node, children, ...rest }) => {
|
|
25307
|
+
const Component = components?.h3 ?? MarkdownHeading_default;
|
|
25308
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25309
|
+
Component,
|
|
25310
|
+
{
|
|
25311
|
+
...rest,
|
|
25312
|
+
id: resolveHeadingId(3, children),
|
|
25313
|
+
level: 3,
|
|
25314
|
+
showAnchor: showHeadingAnchors,
|
|
25315
|
+
children
|
|
25316
|
+
}
|
|
25317
|
+
);
|
|
25318
|
+
},
|
|
25319
|
+
h4: ({ node: _node, children, ...rest }) => {
|
|
25320
|
+
const Component = components?.h4 ?? MarkdownHeading_default;
|
|
25321
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25322
|
+
Component,
|
|
25323
|
+
{
|
|
25324
|
+
...rest,
|
|
25325
|
+
id: resolveHeadingId(4, children),
|
|
25326
|
+
level: 4,
|
|
25327
|
+
showAnchor: showHeadingAnchors,
|
|
25328
|
+
children
|
|
25329
|
+
}
|
|
25330
|
+
);
|
|
25331
|
+
},
|
|
25332
|
+
h5: ({ node: _node, children, ...rest }) => {
|
|
25333
|
+
const Component = components?.h5 ?? MarkdownHeading_default;
|
|
25334
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25335
|
+
Component,
|
|
25336
|
+
{
|
|
25337
|
+
...rest,
|
|
25338
|
+
id: resolveHeadingId(5, children),
|
|
25339
|
+
level: 5,
|
|
25340
|
+
showAnchor: showHeadingAnchors,
|
|
25341
|
+
children
|
|
25342
|
+
}
|
|
25343
|
+
);
|
|
25344
|
+
},
|
|
25345
|
+
h6: ({ node: _node, children, ...rest }) => {
|
|
25346
|
+
const Component = components?.h6 ?? MarkdownHeading_default;
|
|
25347
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25348
|
+
Component,
|
|
25349
|
+
{
|
|
25350
|
+
...rest,
|
|
25351
|
+
id: resolveHeadingId(6, children),
|
|
25352
|
+
level: 6,
|
|
25353
|
+
showAnchor: showHeadingAnchors,
|
|
25354
|
+
children
|
|
25355
|
+
}
|
|
25356
|
+
);
|
|
25357
|
+
},
|
|
25358
|
+
/**
|
|
25359
|
+
* Important:
|
|
25360
|
+
* For block code, return a native <code> with className="language-*".
|
|
25361
|
+
* Then the pre renderer can reliably extract language + meta.
|
|
25362
|
+
*/
|
|
25363
|
+
code: ({ node, className: className2, children, ...rest }) => {
|
|
25364
|
+
const language = getLanguageFromClassName(className2);
|
|
25365
|
+
if (language) {
|
|
25366
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25367
|
+
"code",
|
|
25368
|
+
{
|
|
25369
|
+
...rest,
|
|
25370
|
+
className: className2,
|
|
25371
|
+
"data-meta": getCodeMetaString(node),
|
|
25372
|
+
children
|
|
25373
|
+
}
|
|
25374
|
+
);
|
|
25375
|
+
}
|
|
25376
|
+
const Component = components?.code ?? MarkdownInlineCode_default;
|
|
25377
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, className: className2, children });
|
|
25378
|
+
},
|
|
25379
|
+
/**
|
|
25380
|
+
* Do not spread rest here.
|
|
25381
|
+
* React-markdown's pre props are HTMLPreElement props.
|
|
25382
|
+
* MarkdownCodeBlock root is a div.
|
|
25383
|
+
*/
|
|
25384
|
+
pre: ({ node: _node, children }) => {
|
|
25385
|
+
const Component = components?.pre ?? MarkdownCodeBlock_default;
|
|
25386
|
+
const { code, language, meta } = getCodeInfoFromPreChildren(children);
|
|
25387
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25388
|
+
Component,
|
|
25389
|
+
{
|
|
25390
|
+
code,
|
|
25391
|
+
language,
|
|
25392
|
+
meta,
|
|
25393
|
+
showCopy: showCopyCode
|
|
25394
|
+
}
|
|
25395
|
+
);
|
|
25396
|
+
},
|
|
25397
|
+
a: ({ node: _node, children, href, target, ...rest }) => {
|
|
25398
|
+
const Component = components?.a ?? MarkdownLink_default;
|
|
25399
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25400
|
+
Component,
|
|
25401
|
+
{
|
|
25402
|
+
...rest,
|
|
25403
|
+
href,
|
|
25404
|
+
target: linkTarget ?? target,
|
|
25405
|
+
openLinksInNewTab,
|
|
25406
|
+
children
|
|
25407
|
+
}
|
|
25408
|
+
);
|
|
25409
|
+
},
|
|
25410
|
+
img: ({ node: _node, src, alt, title, ...rest }) => {
|
|
25411
|
+
const Component = components?.img ?? MarkdownImage_default;
|
|
25412
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, src, alt, title });
|
|
25413
|
+
},
|
|
25414
|
+
table: ({ node: _node, children, ...rest }) => {
|
|
25415
|
+
const Component = components?.table ?? MarkdownTable_default;
|
|
25416
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, children });
|
|
25417
|
+
},
|
|
25418
|
+
td: ({ node: _node, children, ...rest }) => {
|
|
25419
|
+
const Component = components?.td ?? MarkdownTableCell;
|
|
25420
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, children });
|
|
25421
|
+
},
|
|
25422
|
+
th: ({ node: _node, children, ...rest }) => {
|
|
25423
|
+
const Component = components?.th ?? MarkdownTableHeaderCell;
|
|
25424
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, children });
|
|
25425
|
+
},
|
|
25426
|
+
blockquote: ({ node: _node, children, ...rest }) => {
|
|
25427
|
+
const Component = components?.blockquote ?? MarkdownBlockquote_default;
|
|
25428
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Component, { ...rest, children });
|
|
25429
|
+
},
|
|
25430
|
+
...components
|
|
25431
|
+
};
|
|
25432
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames66__default.default("eui-markdown markdown-body", className), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25433
|
+
ReactMarkdown__default.default,
|
|
25434
|
+
{
|
|
25435
|
+
remarkPlugins,
|
|
25436
|
+
rehypePlugins,
|
|
25437
|
+
skipHtml: !allowHtml,
|
|
25438
|
+
components: rendererComponents,
|
|
25439
|
+
children: markdown
|
|
25440
|
+
}
|
|
25441
|
+
) }) });
|
|
25442
|
+
}
|
|
25443
|
+
var MarkdownRenderer_default = MarkdownRenderer;
|
|
25444
|
+
function MarkdownViewer({
|
|
25445
|
+
value,
|
|
25446
|
+
headings: externalHeadings,
|
|
25447
|
+
headingIdPrefix = "",
|
|
25448
|
+
enableActiveHeading = true,
|
|
25449
|
+
...props
|
|
25450
|
+
}) {
|
|
25451
|
+
const context = useMarkdown();
|
|
25452
|
+
const markdown = value ?? context?.markdown ?? "";
|
|
25453
|
+
const headings = React2.useMemo(() => {
|
|
25454
|
+
if (externalHeadings) {
|
|
25455
|
+
return externalHeadings;
|
|
25456
|
+
}
|
|
25457
|
+
if (context?.headings?.length) {
|
|
25458
|
+
return context.headings;
|
|
25459
|
+
}
|
|
25460
|
+
return extractHeadings(markdown, {
|
|
25461
|
+
idPrefix: headingIdPrefix
|
|
25462
|
+
});
|
|
25463
|
+
}, [context?.headings, externalHeadings, headingIdPrefix, markdown]);
|
|
25464
|
+
useActiveHeading({
|
|
25465
|
+
headings,
|
|
25466
|
+
enabled: enableActiveHeading && headings.length > 0
|
|
25467
|
+
});
|
|
25468
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
25469
|
+
MarkdownRenderer_default,
|
|
25470
|
+
{
|
|
25471
|
+
markdown,
|
|
25472
|
+
headings,
|
|
25473
|
+
headingIdPrefix,
|
|
25474
|
+
...props
|
|
25475
|
+
}
|
|
25476
|
+
);
|
|
25477
|
+
}
|
|
25478
|
+
var MarkdownViewer_default = MarkdownViewer;
|
|
25479
|
+
function hasNumbering(heading) {
|
|
25480
|
+
return "numbering" in heading;
|
|
25481
|
+
}
|
|
25482
|
+
function MarkdownTOCItem({
|
|
25483
|
+
heading,
|
|
25484
|
+
active = false,
|
|
25485
|
+
numbered = true,
|
|
25486
|
+
sanitizeLabel = true,
|
|
25487
|
+
indentSize = 12,
|
|
25488
|
+
className,
|
|
25489
|
+
activeClassName,
|
|
25490
|
+
inactiveClassName,
|
|
25491
|
+
onSelect
|
|
25492
|
+
}) {
|
|
25493
|
+
const label = sanitizeLabel ? sanitizeHeading(heading.text) : heading.text;
|
|
25494
|
+
const numbering = hasNumbering(heading) ? heading.numbering : void 0;
|
|
25495
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25496
|
+
"button",
|
|
25497
|
+
{
|
|
25498
|
+
type: "button",
|
|
25499
|
+
onClick: () => onSelect?.(heading),
|
|
25500
|
+
"aria-current": active ? "location" : void 0,
|
|
25501
|
+
title: label,
|
|
25502
|
+
className: classNames66__default.default(
|
|
25503
|
+
"eui-markdown-toc-item",
|
|
25504
|
+
"block w-full text-left text-sm transition-all ease-in-out duration-150",
|
|
25505
|
+
"hover:text-primary",
|
|
25506
|
+
active ? classNames66__default.default("text-primary font-semibold underline", activeClassName) : classNames66__default.default("text-gray-500 dark:text-gray-400", inactiveClassName),
|
|
25507
|
+
className
|
|
25508
|
+
),
|
|
25509
|
+
style: {
|
|
25510
|
+
paddingLeft: `${Math.max(heading.level - 1, 0) * indentSize}px`
|
|
25511
|
+
},
|
|
25512
|
+
children: [
|
|
25513
|
+
numbered && numbering ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "eui-markdown-toc-item-number mr-2 opacity-70", children: numbering }) : null,
|
|
25514
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "eui-markdown-toc-item-label", children: label })
|
|
25515
|
+
]
|
|
25516
|
+
}
|
|
25517
|
+
);
|
|
25518
|
+
}
|
|
25519
|
+
var MarkdownTOCItem_default = MarkdownTOCItem;
|
|
25520
|
+
function MarkdownTOC({
|
|
25521
|
+
title = "Table of Contents",
|
|
25522
|
+
markdown,
|
|
25523
|
+
headings: externalHeadings,
|
|
25524
|
+
minDepth = 1,
|
|
25525
|
+
maxDepth = 6,
|
|
25526
|
+
numbered = true,
|
|
25527
|
+
sanitizeLabels = true,
|
|
25528
|
+
collapsible = false,
|
|
25529
|
+
defaultCollapsed = false,
|
|
25530
|
+
emptyState = null,
|
|
25531
|
+
smoothScroll = true,
|
|
25532
|
+
scrollBlock = "start",
|
|
25533
|
+
indentSize = 12,
|
|
25534
|
+
className,
|
|
25535
|
+
titleClassName,
|
|
25536
|
+
listClassName,
|
|
25537
|
+
itemClassName,
|
|
25538
|
+
activeItemClassName,
|
|
25539
|
+
inactiveItemClassName,
|
|
25540
|
+
activeHeading: controlledActiveHeading,
|
|
25541
|
+
onActiveHeadingChange,
|
|
25542
|
+
onHeadingClick
|
|
25543
|
+
}) {
|
|
25544
|
+
const context = useMarkdown();
|
|
25545
|
+
const [collapsed, setCollapsed] = React2.useState(defaultCollapsed);
|
|
25546
|
+
const { headings, numberedHeadings, hasHeadings } = useMarkdownHeadings({
|
|
25547
|
+
markdown,
|
|
25548
|
+
headings: externalHeadings,
|
|
25549
|
+
minDepth,
|
|
25550
|
+
maxDepth
|
|
25551
|
+
});
|
|
25552
|
+
const tocHeadings = React2.useMemo(() => {
|
|
25553
|
+
return numbered ? numberedHeadings : headings;
|
|
25554
|
+
}, [headings, numbered, numberedHeadings]);
|
|
25555
|
+
const { activeHeading, scrollToHeading, setActiveHeading } = useActiveHeading(
|
|
25556
|
+
{
|
|
25557
|
+
headings,
|
|
25558
|
+
enabled: false,
|
|
25559
|
+
activeHeading: controlledActiveHeading,
|
|
25560
|
+
scrollBehavior: smoothScroll ? "smooth" : "auto",
|
|
25561
|
+
scrollBlock,
|
|
25562
|
+
onActiveHeadingChange
|
|
25563
|
+
}
|
|
25564
|
+
);
|
|
25565
|
+
if (!context && !markdown && !externalHeadings) {
|
|
25566
|
+
return null;
|
|
25567
|
+
}
|
|
25568
|
+
if (!hasHeadings) {
|
|
25569
|
+
return emptyState ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
25570
|
+
"div",
|
|
25571
|
+
{
|
|
25572
|
+
className: classNames66__default.default(
|
|
25573
|
+
"eui-markdown-toc",
|
|
25574
|
+
"text-sm text-gray-500 dark:text-gray-400",
|
|
25575
|
+
className
|
|
25576
|
+
),
|
|
25577
|
+
children: emptyState
|
|
25578
|
+
}
|
|
25579
|
+
) : null;
|
|
25580
|
+
}
|
|
25581
|
+
const handleSelect = (heading) => {
|
|
25582
|
+
scrollToHeading(heading.id);
|
|
25583
|
+
setActiveHeading(heading.id);
|
|
25584
|
+
onHeadingClick?.(heading);
|
|
25585
|
+
};
|
|
25586
|
+
const content = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
25587
|
+
title ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "eui-markdown-toc-header", children: collapsible ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25588
|
+
"button",
|
|
25589
|
+
{
|
|
25590
|
+
type: "button",
|
|
25591
|
+
onClick: () => setCollapsed((value) => !value),
|
|
25592
|
+
className: classNames66__default.default(
|
|
25593
|
+
"eui-markdown-toc-title",
|
|
25594
|
+
"flex w-full items-center justify-between gap-2 text-left",
|
|
25595
|
+
"text-sm font-semibold uppercase tracking-wide",
|
|
25596
|
+
"text-gray-900 dark:text-gray-100",
|
|
25597
|
+
titleClassName
|
|
25598
|
+
),
|
|
25599
|
+
"aria-expanded": !collapsed,
|
|
25600
|
+
children: [
|
|
25601
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: title }),
|
|
25602
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
25603
|
+
"span",
|
|
25604
|
+
{
|
|
25605
|
+
className: classNames66__default.default(
|
|
25606
|
+
"text-xs opacity-60 transition-transform duration-150",
|
|
25607
|
+
!collapsed && "rotate-90"
|
|
25608
|
+
),
|
|
25609
|
+
"aria-hidden": "true",
|
|
25610
|
+
children: "\u203A"
|
|
25611
|
+
}
|
|
25612
|
+
)
|
|
25613
|
+
]
|
|
25614
|
+
}
|
|
25615
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
25616
|
+
"h2",
|
|
25617
|
+
{
|
|
25618
|
+
className: classNames66__default.default(
|
|
25619
|
+
"eui-markdown-toc-title",
|
|
25620
|
+
"text-sm font-semibold uppercase tracking-wide",
|
|
25621
|
+
"text-gray-900 dark:text-gray-100",
|
|
25622
|
+
titleClassName
|
|
25623
|
+
),
|
|
25624
|
+
children: title
|
|
25625
|
+
}
|
|
25626
|
+
) }) : null,
|
|
25627
|
+
!collapsed ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
25628
|
+
"nav",
|
|
25629
|
+
{
|
|
25630
|
+
className: classNames66__default.default(
|
|
25631
|
+
"eui-markdown-toc-list",
|
|
25632
|
+
"space-y-1",
|
|
25633
|
+
listClassName
|
|
25634
|
+
),
|
|
25635
|
+
"aria-label": title || "Markdown table of contents",
|
|
25636
|
+
children: tocHeadings.map((heading) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25637
|
+
MarkdownTOCItem_default,
|
|
25638
|
+
{
|
|
25639
|
+
heading,
|
|
25640
|
+
active: activeHeading === heading.id,
|
|
25641
|
+
numbered,
|
|
25642
|
+
sanitizeLabel: sanitizeLabels,
|
|
25643
|
+
indentSize,
|
|
25644
|
+
className: itemClassName,
|
|
25645
|
+
activeClassName: activeItemClassName,
|
|
25646
|
+
inactiveClassName: inactiveItemClassName,
|
|
25647
|
+
onSelect: handleSelect
|
|
25648
|
+
},
|
|
25649
|
+
heading.id
|
|
25650
|
+
))
|
|
25651
|
+
}
|
|
25652
|
+
) : null
|
|
25653
|
+
] });
|
|
25654
|
+
return /* @__PURE__ */ jsxRuntime.jsx("aside", { className: classNames66__default.default("eui-markdown-toc", "space-y-4", className), children: content });
|
|
25655
|
+
}
|
|
25656
|
+
var MarkdownTOC_default = MarkdownTOC;
|
|
25657
|
+
var DEFAULT_MARKDOWN_TOOLBAR_ACTIONS = [
|
|
25658
|
+
{
|
|
25659
|
+
id: "heading-1",
|
|
25660
|
+
label: "H1",
|
|
25661
|
+
title: "Heading 1"
|
|
25662
|
+
},
|
|
25663
|
+
{
|
|
25664
|
+
id: "heading-2",
|
|
25665
|
+
label: "H2",
|
|
25666
|
+
title: "Heading 2"
|
|
25667
|
+
},
|
|
25668
|
+
{
|
|
25669
|
+
id: "heading-3",
|
|
25670
|
+
label: "H3",
|
|
25671
|
+
title: "Heading 3"
|
|
25672
|
+
},
|
|
25673
|
+
{
|
|
25674
|
+
id: "bold",
|
|
25675
|
+
label: "B",
|
|
25676
|
+
title: "Bold",
|
|
25677
|
+
shortcut: "Ctrl+B"
|
|
25678
|
+
},
|
|
25679
|
+
{
|
|
25680
|
+
id: "italic",
|
|
25681
|
+
label: "I",
|
|
25682
|
+
title: "Italic",
|
|
25683
|
+
shortcut: "Ctrl+I"
|
|
25684
|
+
},
|
|
25685
|
+
{
|
|
25686
|
+
id: "strike",
|
|
25687
|
+
label: "S",
|
|
25688
|
+
title: "Strikethrough"
|
|
25689
|
+
},
|
|
25690
|
+
{
|
|
25691
|
+
id: "inline-code",
|
|
25692
|
+
label: "`",
|
|
25693
|
+
title: "Inline code"
|
|
25694
|
+
},
|
|
25695
|
+
{
|
|
25696
|
+
id: "code-block",
|
|
25697
|
+
label: "{}",
|
|
25698
|
+
title: "Code block"
|
|
25699
|
+
},
|
|
25700
|
+
{
|
|
25701
|
+
id: "link",
|
|
25702
|
+
label: "Link",
|
|
25703
|
+
title: "Link"
|
|
25704
|
+
},
|
|
25705
|
+
{
|
|
25706
|
+
id: "image",
|
|
25707
|
+
label: "Img",
|
|
25708
|
+
title: "Image"
|
|
25709
|
+
},
|
|
25710
|
+
{
|
|
25711
|
+
id: "unordered-list",
|
|
25712
|
+
label: "\u2022 List",
|
|
25713
|
+
title: "Bullet list"
|
|
25714
|
+
},
|
|
25715
|
+
{
|
|
25716
|
+
id: "ordered-list",
|
|
25717
|
+
label: "1. List",
|
|
25718
|
+
title: "Numbered list"
|
|
25719
|
+
},
|
|
25720
|
+
{
|
|
25721
|
+
id: "quote",
|
|
25722
|
+
label: "Quote",
|
|
25723
|
+
title: "Blockquote"
|
|
25724
|
+
},
|
|
25725
|
+
{
|
|
25726
|
+
id: "table",
|
|
25727
|
+
label: "Table",
|
|
25728
|
+
title: "Table"
|
|
25729
|
+
},
|
|
25730
|
+
{
|
|
25731
|
+
id: "hr",
|
|
25732
|
+
label: "\u2014",
|
|
25733
|
+
title: "Horizontal rule"
|
|
25734
|
+
}
|
|
25735
|
+
];
|
|
25736
|
+
function MarkdownToolbar({
|
|
25737
|
+
actions = DEFAULT_MARKDOWN_TOOLBAR_ACTIONS,
|
|
25738
|
+
disabled = false,
|
|
25739
|
+
actionsDisabled = false,
|
|
25740
|
+
compact = false,
|
|
25741
|
+
viewMode = "preview",
|
|
25742
|
+
showViewModeToggle = true,
|
|
25743
|
+
onViewModeToggle,
|
|
25744
|
+
className,
|
|
25745
|
+
buttonClassName,
|
|
25746
|
+
toggleButtonClassName,
|
|
25747
|
+
onAction
|
|
25748
|
+
}) {
|
|
25749
|
+
const isPreviewMode = viewMode === "preview";
|
|
25750
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
25751
|
+
"div",
|
|
25752
|
+
{
|
|
25753
|
+
className: classNames66__default.default(
|
|
25754
|
+
"eui-markdown-toolbar",
|
|
25755
|
+
"flex flex-wrap items-center gap-1 border-b border-gray-200 bg-gray-50 p-2",
|
|
25756
|
+
"dark:border-gray-700 dark:bg-gray-900",
|
|
25757
|
+
className
|
|
25758
|
+
),
|
|
25759
|
+
children: [
|
|
25760
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-1", children: actions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
25761
|
+
"button",
|
|
25762
|
+
{
|
|
25763
|
+
type: "button",
|
|
25764
|
+
disabled: disabled || actionsDisabled,
|
|
25765
|
+
title: action.shortcut ? `${action.title || action.label} (${action.shortcut})` : action.title || action.label,
|
|
25766
|
+
onClick: () => onAction?.(action.id),
|
|
25767
|
+
className: classNames66__default.default(
|
|
25768
|
+
"eui-markdown-toolbar-button",
|
|
25769
|
+
"inline-flex items-center justify-center rounded border border-transparent",
|
|
25770
|
+
"text-gray-700 transition-colors hover:border-gray-300 hover:bg-white",
|
|
25771
|
+
"dark:text-gray-200 dark:hover:border-gray-600 dark:hover:bg-gray-800",
|
|
25772
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
25773
|
+
compact ? "h-7 px-2 text-xs" : "h-8 px-2.5 text-sm",
|
|
25774
|
+
buttonClassName
|
|
25775
|
+
),
|
|
25776
|
+
children: action.label
|
|
25777
|
+
},
|
|
25778
|
+
action.id
|
|
25779
|
+
)) }),
|
|
25780
|
+
showViewModeToggle ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-auto", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
25781
|
+
"button",
|
|
25782
|
+
{
|
|
25783
|
+
type: "button",
|
|
25784
|
+
disabled,
|
|
25785
|
+
onClick: onViewModeToggle,
|
|
25786
|
+
title: isPreviewMode ? "Switch to Markdown syntax" : "Switch to preview",
|
|
25787
|
+
className: classNames66__default.default(
|
|
25788
|
+
"eui-markdown-view-toggle",
|
|
25789
|
+
"inline-flex items-center justify-center rounded border font-medium transition-colors",
|
|
25790
|
+
"border-gray-300 bg-white text-gray-700 hover:bg-gray-100",
|
|
25791
|
+
"dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700",
|
|
25792
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
25793
|
+
compact ? "h-7 px-2 text-xs" : "h-8 px-3 text-sm",
|
|
25794
|
+
toggleButtonClassName
|
|
25795
|
+
),
|
|
25796
|
+
children: isPreviewMode ? "Syntax" : "Preview"
|
|
25797
|
+
}
|
|
25798
|
+
) }) : null
|
|
25799
|
+
]
|
|
25800
|
+
}
|
|
25801
|
+
);
|
|
25802
|
+
}
|
|
25803
|
+
var MarkdownToolbar_default = MarkdownToolbar;
|
|
25804
|
+
function getLineRange(value, start, end) {
|
|
25805
|
+
const lineStart = value.lastIndexOf("\n", start - 1) + 1;
|
|
25806
|
+
const lineEndIndex = value.indexOf("\n", end);
|
|
25807
|
+
return {
|
|
25808
|
+
lineStart,
|
|
25809
|
+
lineEnd: lineEndIndex === -1 ? value.length : lineEndIndex
|
|
25810
|
+
};
|
|
25811
|
+
}
|
|
25812
|
+
function replaceRange(value, start, end, replacement) {
|
|
25813
|
+
return value.slice(0, start) + replacement + value.slice(end);
|
|
25814
|
+
}
|
|
25815
|
+
function wrapSelection(value, start, end, before, after = before, placeholder = "text") {
|
|
25816
|
+
const selected = value.slice(start, end);
|
|
25817
|
+
const content = selected || placeholder;
|
|
25818
|
+
const replacement = `${before}${content}${after}`;
|
|
25819
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25820
|
+
const selectionStart = start + before.length;
|
|
25821
|
+
const selectionEnd = selectionStart + content.length;
|
|
25822
|
+
return {
|
|
25823
|
+
value: nextValue,
|
|
25824
|
+
selectionStart,
|
|
25825
|
+
selectionEnd
|
|
25826
|
+
};
|
|
25827
|
+
}
|
|
25828
|
+
function prefixSelectedLines(value, start, end, getPrefix) {
|
|
25829
|
+
const { lineStart, lineEnd } = getLineRange(value, start, end);
|
|
25830
|
+
const selectedBlock = value.slice(lineStart, lineEnd);
|
|
25831
|
+
const lines = selectedBlock.split("\n");
|
|
25832
|
+
const replacement = lines.map((line, index) => {
|
|
25833
|
+
const prefix = getPrefix(index);
|
|
25834
|
+
if (line.startsWith(prefix)) {
|
|
25835
|
+
return line;
|
|
25836
|
+
}
|
|
25837
|
+
return `${prefix}${line}`;
|
|
25838
|
+
}).join("\n");
|
|
25839
|
+
const nextValue = replaceRange(value, lineStart, lineEnd, replacement);
|
|
25840
|
+
const delta = replacement.length - selectedBlock.length;
|
|
25841
|
+
return {
|
|
25842
|
+
value: nextValue,
|
|
25843
|
+
selectionStart: start + getPrefix(0).length,
|
|
25844
|
+
selectionEnd: end + delta
|
|
25845
|
+
};
|
|
25846
|
+
}
|
|
25847
|
+
function prefixCurrentLine(value, start, end, prefix) {
|
|
25848
|
+
const { lineStart, lineEnd } = getLineRange(value, start, end);
|
|
25849
|
+
const line = value.slice(lineStart, lineEnd);
|
|
25850
|
+
const cleanedLine = line.replace(/^#{1,6}\s+/, "");
|
|
25851
|
+
const replacement = `${prefix}${cleanedLine}`;
|
|
25852
|
+
const nextValue = replaceRange(value, lineStart, lineEnd, replacement);
|
|
25853
|
+
return {
|
|
25854
|
+
value: nextValue,
|
|
25855
|
+
selectionStart: lineStart + prefix.length,
|
|
25856
|
+
selectionEnd: lineStart + replacement.length
|
|
25857
|
+
};
|
|
25858
|
+
}
|
|
25859
|
+
function insertBlock(value, start, end, block) {
|
|
25860
|
+
const before = value.slice(0, start);
|
|
25861
|
+
const after = value.slice(end);
|
|
25862
|
+
const needsLeadingNewline = before.length > 0 && !before.endsWith("\n");
|
|
25863
|
+
const needsTrailingNewline = after.length > 0 && !after.startsWith("\n");
|
|
25864
|
+
const replacement = `${needsLeadingNewline ? "\n" : ""}${block}${needsTrailingNewline ? "\n" : ""}`;
|
|
25865
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25866
|
+
const selectionStart = start + (needsLeadingNewline ? 1 : 0);
|
|
25867
|
+
const selectionEnd = selectionStart + block.length;
|
|
25868
|
+
return {
|
|
25869
|
+
value: nextValue,
|
|
25870
|
+
selectionStart,
|
|
25871
|
+
selectionEnd
|
|
25872
|
+
};
|
|
25873
|
+
}
|
|
25874
|
+
function applyMarkdownAction(value, start, end, action) {
|
|
25875
|
+
switch (action) {
|
|
25876
|
+
case "heading-1":
|
|
25877
|
+
return prefixCurrentLine(value, start, end, "# ");
|
|
25878
|
+
case "heading-2":
|
|
25879
|
+
return prefixCurrentLine(value, start, end, "## ");
|
|
25880
|
+
case "heading-3":
|
|
25881
|
+
return prefixCurrentLine(value, start, end, "### ");
|
|
25882
|
+
case "bold":
|
|
25883
|
+
return wrapSelection(value, start, end, "**", "**", "bold text");
|
|
25884
|
+
case "italic":
|
|
25885
|
+
return wrapSelection(value, start, end, "_", "_", "italic text");
|
|
25886
|
+
case "strike":
|
|
25887
|
+
return wrapSelection(value, start, end, "~~", "~~", "strikethrough text");
|
|
25888
|
+
case "inline-code":
|
|
25889
|
+
return wrapSelection(value, start, end, "`", "`", "code");
|
|
25890
|
+
case "code-block": {
|
|
25891
|
+
const selected = value.slice(start, end) || "code";
|
|
25892
|
+
return insertBlock(value, start, end, `\`\`\`ts
|
|
25893
|
+
${selected}
|
|
25894
|
+
\`\`\``);
|
|
25895
|
+
}
|
|
25896
|
+
case "link": {
|
|
25897
|
+
const selected = value.slice(start, end) || "link text";
|
|
25898
|
+
const replacement = `[${selected}](https://example.com)`;
|
|
25899
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25900
|
+
return {
|
|
25901
|
+
value: nextValue,
|
|
25902
|
+
selectionStart: start + 1,
|
|
25903
|
+
selectionEnd: start + 1 + selected.length
|
|
25904
|
+
};
|
|
25905
|
+
}
|
|
25906
|
+
case "image": {
|
|
25907
|
+
const selected = value.slice(start, end) || "image alt";
|
|
25908
|
+
const replacement = ``;
|
|
25909
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25910
|
+
return {
|
|
25911
|
+
value: nextValue,
|
|
25912
|
+
selectionStart: start + 2,
|
|
25913
|
+
selectionEnd: start + 2 + selected.length
|
|
25914
|
+
};
|
|
25915
|
+
}
|
|
25916
|
+
case "unordered-list":
|
|
25917
|
+
return prefixSelectedLines(value, start, end, () => "- ");
|
|
25918
|
+
case "ordered-list":
|
|
25919
|
+
return prefixSelectedLines(
|
|
25920
|
+
value,
|
|
25921
|
+
start,
|
|
25922
|
+
end,
|
|
25923
|
+
(index) => `${index + 1}. `
|
|
25924
|
+
);
|
|
25925
|
+
case "quote":
|
|
25926
|
+
return prefixSelectedLines(value, start, end, () => "> ");
|
|
25927
|
+
case "table":
|
|
25928
|
+
return insertBlock(
|
|
25929
|
+
value,
|
|
25930
|
+
start,
|
|
25931
|
+
end,
|
|
25932
|
+
[
|
|
25933
|
+
"| Column 1 | Column 2 | Column 3 |",
|
|
25934
|
+
"| --- | --- | --- |",
|
|
25935
|
+
"| Value 1 | Value 2 | Value 3 |"
|
|
25936
|
+
].join("\n")
|
|
25937
|
+
);
|
|
25938
|
+
case "hr":
|
|
25939
|
+
return insertBlock(value, start, end, "---");
|
|
25940
|
+
default:
|
|
25941
|
+
return {
|
|
25942
|
+
value,
|
|
25943
|
+
selectionStart: start,
|
|
25944
|
+
selectionEnd: end
|
|
25945
|
+
};
|
|
25946
|
+
}
|
|
25947
|
+
}
|
|
25948
|
+
function MarkdownSourceEditor({
|
|
25949
|
+
value,
|
|
25950
|
+
defaultValue = "",
|
|
25951
|
+
onChange,
|
|
25952
|
+
onBlur,
|
|
25953
|
+
viewMode,
|
|
25954
|
+
defaultViewMode = "preview",
|
|
25955
|
+
onViewModeChange,
|
|
25956
|
+
showToolbar = true,
|
|
25957
|
+
showViewModeToggle = true,
|
|
25958
|
+
toolbarProps,
|
|
25959
|
+
previewProps,
|
|
25960
|
+
minHeight = 260,
|
|
25961
|
+
maxHeight,
|
|
25962
|
+
disabled = false,
|
|
25963
|
+
readOnly = false,
|
|
25964
|
+
placeholder = "Write markdown...",
|
|
25965
|
+
containerClassName,
|
|
25966
|
+
toolbarClassName,
|
|
25967
|
+
textareaClassName,
|
|
25968
|
+
previewClassName,
|
|
25969
|
+
className,
|
|
25970
|
+
onKeyDown,
|
|
25971
|
+
...props
|
|
25972
|
+
}) {
|
|
25973
|
+
const textareaRef = React2.useRef(null);
|
|
25974
|
+
const isControlled = value !== void 0;
|
|
25975
|
+
const isViewModeControlled = viewMode !== void 0;
|
|
25976
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
25977
|
+
const [internalViewMode, setInternalViewMode] = React2.useState(defaultViewMode);
|
|
25978
|
+
const currentValue = isControlled ? value : internalValue;
|
|
25979
|
+
const currentViewMode = isViewModeControlled ? viewMode : internalViewMode;
|
|
25980
|
+
const resolvedValue = currentValue ?? "";
|
|
25981
|
+
React2.useEffect(() => {
|
|
25982
|
+
if (!isControlled) {
|
|
25983
|
+
setInternalValue(defaultValue);
|
|
25984
|
+
}
|
|
25985
|
+
}, [defaultValue, isControlled]);
|
|
25986
|
+
React2.useEffect(() => {
|
|
25987
|
+
if (!isViewModeControlled) {
|
|
25988
|
+
setInternalViewMode(defaultViewMode);
|
|
25989
|
+
}
|
|
25990
|
+
}, [defaultViewMode, isViewModeControlled]);
|
|
25991
|
+
const updateValue = (nextValue) => {
|
|
25992
|
+
if (!isControlled) {
|
|
25993
|
+
setInternalValue(nextValue);
|
|
25994
|
+
}
|
|
25995
|
+
onChange?.(nextValue);
|
|
25996
|
+
};
|
|
25997
|
+
const updateViewMode = (nextViewMode) => {
|
|
25998
|
+
if (!isViewModeControlled) {
|
|
25999
|
+
setInternalViewMode(nextViewMode);
|
|
26000
|
+
}
|
|
26001
|
+
onViewModeChange?.(nextViewMode);
|
|
26002
|
+
};
|
|
26003
|
+
const toggleViewMode = () => {
|
|
26004
|
+
updateViewMode(currentViewMode === "preview" ? "source" : "preview");
|
|
26005
|
+
};
|
|
26006
|
+
const runAction = (action) => {
|
|
26007
|
+
const textarea = textareaRef.current;
|
|
26008
|
+
if (!textarea || disabled || readOnly) return;
|
|
26009
|
+
const start = textarea.selectionStart;
|
|
26010
|
+
const end = textarea.selectionEnd;
|
|
26011
|
+
const result = applyMarkdownAction(resolvedValue, start, end, action);
|
|
26012
|
+
updateValue(result.value);
|
|
26013
|
+
window.setTimeout(() => {
|
|
26014
|
+
textarea.focus();
|
|
26015
|
+
textarea.setSelectionRange(result.selectionStart, result.selectionEnd);
|
|
26016
|
+
}, 0);
|
|
26017
|
+
};
|
|
26018
|
+
const handleToolbarAction = (action) => {
|
|
26019
|
+
if (currentViewMode === "preview") {
|
|
26020
|
+
updateViewMode("source");
|
|
26021
|
+
window.setTimeout(() => {
|
|
26022
|
+
runAction(action);
|
|
26023
|
+
}, 0);
|
|
26024
|
+
return;
|
|
26025
|
+
}
|
|
26026
|
+
runAction(action);
|
|
26027
|
+
};
|
|
26028
|
+
const handleKeyDown = (event) => {
|
|
26029
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === "b") {
|
|
26030
|
+
event.preventDefault();
|
|
26031
|
+
runAction("bold");
|
|
26032
|
+
return;
|
|
26033
|
+
}
|
|
26034
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === "i") {
|
|
26035
|
+
event.preventDefault();
|
|
26036
|
+
runAction("italic");
|
|
26037
|
+
return;
|
|
26038
|
+
}
|
|
26039
|
+
onKeyDown?.(event);
|
|
26040
|
+
};
|
|
26041
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26042
|
+
"div",
|
|
26043
|
+
{
|
|
26044
|
+
className: classNames66__default.default(
|
|
26045
|
+
"eui-markdown-editor",
|
|
26046
|
+
"overflow-hidden rounded border border-gray-300 bg-white",
|
|
26047
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
26048
|
+
containerClassName,
|
|
26049
|
+
className
|
|
26050
|
+
),
|
|
26051
|
+
children: [
|
|
26052
|
+
showToolbar ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26053
|
+
MarkdownToolbar_default,
|
|
26054
|
+
{
|
|
26055
|
+
...toolbarProps,
|
|
26056
|
+
disabled,
|
|
26057
|
+
actionsDisabled: readOnly,
|
|
26058
|
+
viewMode: currentViewMode,
|
|
26059
|
+
showViewModeToggle,
|
|
26060
|
+
className: classNames66__default.default(toolbarClassName, toolbarProps?.className),
|
|
26061
|
+
onViewModeToggle: toggleViewMode,
|
|
26062
|
+
onAction: handleToolbarAction
|
|
26063
|
+
}
|
|
26064
|
+
) : null,
|
|
26065
|
+
currentViewMode === "preview" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26066
|
+
"div",
|
|
26067
|
+
{
|
|
26068
|
+
className: classNames66__default.default(
|
|
26069
|
+
"eui-markdown-editor-preview",
|
|
26070
|
+
"min-h-[260px] p-4",
|
|
26071
|
+
previewClassName
|
|
26072
|
+
),
|
|
26073
|
+
style: {
|
|
26074
|
+
minHeight,
|
|
26075
|
+
maxHeight
|
|
26076
|
+
},
|
|
26077
|
+
children: resolvedValue.trim() ? /* @__PURE__ */ jsxRuntime.jsx(MarkdownViewer_default, { ...previewProps, value: resolvedValue }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: placeholder })
|
|
26078
|
+
}
|
|
26079
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
26080
|
+
"textarea",
|
|
26081
|
+
{
|
|
26082
|
+
...props,
|
|
26083
|
+
ref: textareaRef,
|
|
26084
|
+
value: resolvedValue,
|
|
26085
|
+
disabled,
|
|
26086
|
+
readOnly,
|
|
26087
|
+
placeholder,
|
|
26088
|
+
onChange: (event) => updateValue(event.target.value),
|
|
26089
|
+
onBlur,
|
|
26090
|
+
onKeyDown: handleKeyDown,
|
|
26091
|
+
className: classNames66__default.default(
|
|
26092
|
+
"eui-markdown-source-textarea",
|
|
26093
|
+
"block w-full resize-y border-0 bg-transparent p-4 font-mono text-sm leading-7",
|
|
26094
|
+
"text-gray-900 outline-none placeholder:text-gray-400",
|
|
26095
|
+
"dark:text-gray-100 dark:placeholder:text-gray-500",
|
|
26096
|
+
"disabled:cursor-not-allowed disabled:opacity-60",
|
|
26097
|
+
textareaClassName
|
|
26098
|
+
),
|
|
26099
|
+
style: {
|
|
26100
|
+
minHeight,
|
|
26101
|
+
maxHeight,
|
|
26102
|
+
...props.style
|
|
26103
|
+
}
|
|
26104
|
+
}
|
|
26105
|
+
)
|
|
26106
|
+
]
|
|
26107
|
+
}
|
|
26108
|
+
);
|
|
26109
|
+
}
|
|
26110
|
+
var MarkdownSourceEditor_default = MarkdownSourceEditor;
|
|
26111
|
+
function MarkdownPreviewPane({
|
|
26112
|
+
value = "",
|
|
26113
|
+
emptyState = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: "Nothing to preview yet." }),
|
|
26114
|
+
className,
|
|
26115
|
+
contentClassName,
|
|
26116
|
+
...viewerProps
|
|
26117
|
+
}) {
|
|
26118
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26119
|
+
"div",
|
|
26120
|
+
{
|
|
26121
|
+
className: classNames66__default.default(
|
|
26122
|
+
"eui-markdown-preview-pane",
|
|
26123
|
+
"rounded border border-gray-300 bg-white p-4",
|
|
26124
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
26125
|
+
className
|
|
26126
|
+
),
|
|
26127
|
+
children: value.trim() ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26128
|
+
MarkdownViewer_default,
|
|
26129
|
+
{
|
|
26130
|
+
...viewerProps,
|
|
26131
|
+
value,
|
|
26132
|
+
className: contentClassName
|
|
26133
|
+
}
|
|
26134
|
+
) : emptyState
|
|
26135
|
+
}
|
|
26136
|
+
);
|
|
26137
|
+
}
|
|
26138
|
+
var MarkdownPreviewPane_default = MarkdownPreviewPane;
|
|
26139
|
+
function MarkdownSplitEditor({
|
|
26140
|
+
value,
|
|
26141
|
+
defaultValue = "",
|
|
26142
|
+
onChange,
|
|
26143
|
+
onBlur,
|
|
26144
|
+
previewProps,
|
|
26145
|
+
previewPlacement = "right",
|
|
26146
|
+
sourceLabel = "Editor",
|
|
26147
|
+
previewLabel = "Preview",
|
|
26148
|
+
wrapperClassName,
|
|
26149
|
+
sourceWrapperClassName,
|
|
26150
|
+
previewWrapperClassName,
|
|
26151
|
+
...sourceEditorProps
|
|
26152
|
+
}) {
|
|
26153
|
+
const isControlled = value !== void 0;
|
|
26154
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
26155
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26156
|
+
React2.useEffect(() => {
|
|
26157
|
+
if (!isControlled) {
|
|
26158
|
+
setInternalValue(defaultValue);
|
|
26159
|
+
}
|
|
26160
|
+
}, [defaultValue, isControlled]);
|
|
26161
|
+
const updateValue = (nextValue) => {
|
|
26162
|
+
if (!isControlled) {
|
|
26163
|
+
setInternalValue(nextValue);
|
|
26164
|
+
}
|
|
26165
|
+
onChange?.(nextValue);
|
|
26166
|
+
};
|
|
26167
|
+
const isHorizontal = previewPlacement === "right";
|
|
26168
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26169
|
+
"div",
|
|
26170
|
+
{
|
|
26171
|
+
className: classNames66__default.default(
|
|
26172
|
+
"eui-markdown-split-editor",
|
|
26173
|
+
"grid gap-4",
|
|
26174
|
+
isHorizontal ? "grid-cols-1 lg:grid-cols-2" : "grid-cols-1",
|
|
26175
|
+
wrapperClassName
|
|
26176
|
+
),
|
|
26177
|
+
children: [
|
|
26178
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26179
|
+
"div",
|
|
26180
|
+
{
|
|
26181
|
+
className: classNames66__default.default(
|
|
26182
|
+
"eui-markdown-split-source",
|
|
26183
|
+
"min-w-0 space-y-2",
|
|
26184
|
+
sourceWrapperClassName
|
|
26185
|
+
),
|
|
26186
|
+
children: [
|
|
26187
|
+
sourceLabel ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold text-gray-700 dark:text-gray-200", children: sourceLabel }) : null,
|
|
26188
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26189
|
+
MarkdownSourceEditor_default,
|
|
26190
|
+
{
|
|
26191
|
+
...sourceEditorProps,
|
|
26192
|
+
value: currentValue,
|
|
26193
|
+
onChange: updateValue,
|
|
26194
|
+
onBlur,
|
|
26195
|
+
defaultViewMode: "source",
|
|
26196
|
+
showViewModeToggle: false
|
|
26197
|
+
}
|
|
26198
|
+
)
|
|
26199
|
+
]
|
|
26200
|
+
}
|
|
26201
|
+
),
|
|
26202
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26203
|
+
"div",
|
|
26204
|
+
{
|
|
26205
|
+
className: classNames66__default.default(
|
|
26206
|
+
"eui-markdown-split-preview",
|
|
26207
|
+
"min-w-0 space-y-2",
|
|
26208
|
+
previewWrapperClassName
|
|
26209
|
+
),
|
|
26210
|
+
children: [
|
|
26211
|
+
previewLabel ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold text-gray-700 dark:text-gray-200", children: previewLabel }) : null,
|
|
26212
|
+
/* @__PURE__ */ jsxRuntime.jsx(MarkdownPreviewPane_default, { ...previewProps, value: currentValue })
|
|
26213
|
+
]
|
|
26214
|
+
}
|
|
26215
|
+
)
|
|
26216
|
+
]
|
|
26217
|
+
}
|
|
26218
|
+
);
|
|
26219
|
+
}
|
|
26220
|
+
var MarkdownSplitEditor_default = MarkdownSplitEditor;
|
|
26221
|
+
function MarkdownEditor({
|
|
26222
|
+
value,
|
|
26223
|
+
defaultValue = "",
|
|
26224
|
+
onChange,
|
|
26225
|
+
onBlur,
|
|
26226
|
+
mode = "source",
|
|
26227
|
+
viewMode,
|
|
26228
|
+
defaultViewMode = "preview",
|
|
26229
|
+
onViewModeChange,
|
|
26230
|
+
splitProps,
|
|
26231
|
+
richEditor,
|
|
26232
|
+
...sourceEditorProps
|
|
26233
|
+
}) {
|
|
26234
|
+
const isControlled = value !== void 0;
|
|
26235
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
26236
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26237
|
+
React2.useEffect(() => {
|
|
26238
|
+
if (!isControlled) {
|
|
26239
|
+
setInternalValue(defaultValue);
|
|
26240
|
+
}
|
|
26241
|
+
}, [defaultValue, isControlled]);
|
|
26242
|
+
const updateValue = (nextValue) => {
|
|
26243
|
+
if (!isControlled) {
|
|
26244
|
+
setInternalValue(nextValue);
|
|
26245
|
+
}
|
|
26246
|
+
onChange?.(nextValue);
|
|
26247
|
+
};
|
|
26248
|
+
if (mode === "rich" && richEditor) {
|
|
26249
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: richEditor });
|
|
26250
|
+
}
|
|
26251
|
+
if (mode === "split") {
|
|
26252
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26253
|
+
MarkdownSplitEditor_default,
|
|
26254
|
+
{
|
|
26255
|
+
...sourceEditorProps,
|
|
26256
|
+
...splitProps,
|
|
26257
|
+
value: currentValue,
|
|
26258
|
+
onChange: updateValue,
|
|
26259
|
+
onBlur
|
|
26260
|
+
}
|
|
26261
|
+
);
|
|
26262
|
+
}
|
|
26263
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26264
|
+
MarkdownSourceEditor_default,
|
|
26265
|
+
{
|
|
26266
|
+
...sourceEditorProps,
|
|
26267
|
+
value: currentValue,
|
|
26268
|
+
onChange: updateValue,
|
|
26269
|
+
onBlur,
|
|
26270
|
+
viewMode,
|
|
26271
|
+
defaultViewMode,
|
|
26272
|
+
onViewModeChange
|
|
26273
|
+
}
|
|
26274
|
+
);
|
|
26275
|
+
}
|
|
26276
|
+
var MarkdownEditor_default = MarkdownEditor;
|
|
26277
|
+
function MarkdownField({
|
|
26278
|
+
name,
|
|
26279
|
+
validate,
|
|
26280
|
+
label,
|
|
26281
|
+
helperText,
|
|
26282
|
+
wrapperClassName,
|
|
26283
|
+
labelClassName,
|
|
26284
|
+
helperTextClassName,
|
|
26285
|
+
...editorProps
|
|
26286
|
+
}) {
|
|
26287
|
+
const [field, meta, helpers] = formik.useField({
|
|
26288
|
+
name,
|
|
26289
|
+
validate
|
|
26290
|
+
});
|
|
26291
|
+
const hasError = Boolean(meta.touched && meta.error);
|
|
26292
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26293
|
+
"div",
|
|
26294
|
+
{
|
|
26295
|
+
className: classNames66__default.default(
|
|
26296
|
+
"eui-markdown-field",
|
|
26297
|
+
"relative space-y-2",
|
|
26298
|
+
wrapperClassName
|
|
26299
|
+
),
|
|
26300
|
+
children: [
|
|
26301
|
+
label ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26302
|
+
"label",
|
|
26303
|
+
{
|
|
26304
|
+
htmlFor: editorProps.id || field.name,
|
|
26305
|
+
className: classNames66__default.default(
|
|
26306
|
+
"block text-sm font-medium text-gray-700 dark:text-gray-200",
|
|
26307
|
+
labelClassName
|
|
26308
|
+
),
|
|
26309
|
+
children: label
|
|
26310
|
+
}
|
|
26311
|
+
) : null,
|
|
26312
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26313
|
+
MarkdownEditor_default,
|
|
26314
|
+
{
|
|
26315
|
+
...editorProps,
|
|
26316
|
+
id: editorProps.id || field.name,
|
|
26317
|
+
name: field.name,
|
|
26318
|
+
value: field.value || "",
|
|
26319
|
+
onChange: (nextValue) => {
|
|
26320
|
+
helpers.setValue(nextValue);
|
|
26321
|
+
},
|
|
26322
|
+
onBlur: () => {
|
|
26323
|
+
helpers.setTouched(true);
|
|
26324
|
+
}
|
|
26325
|
+
}
|
|
26326
|
+
),
|
|
26327
|
+
helperText && !hasError ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26328
|
+
"p",
|
|
26329
|
+
{
|
|
26330
|
+
className: classNames66__default.default(
|
|
26331
|
+
"text-sm text-gray-500 dark:text-gray-400",
|
|
26332
|
+
helperTextClassName
|
|
26333
|
+
),
|
|
26334
|
+
children: helperText
|
|
26335
|
+
}
|
|
26336
|
+
) : null,
|
|
26337
|
+
/* @__PURE__ */ jsxRuntime.jsx(InputResponse_default, { name: field.name, visibility: hasError, variant: "danger" })
|
|
26338
|
+
]
|
|
26339
|
+
}
|
|
26340
|
+
);
|
|
26341
|
+
}
|
|
26342
|
+
var MarkdownField_default = MarkdownField;
|
|
26343
|
+
function resolveSize(value) {
|
|
26344
|
+
if (value === void 0) return void 0;
|
|
26345
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
26346
|
+
}
|
|
26347
|
+
function MarkdownLayout({
|
|
26348
|
+
children,
|
|
26349
|
+
content,
|
|
26350
|
+
toc,
|
|
26351
|
+
sidebar,
|
|
26352
|
+
aside,
|
|
26353
|
+
header,
|
|
26354
|
+
footer,
|
|
26355
|
+
tocPosition = "right",
|
|
26356
|
+
showToc = true,
|
|
26357
|
+
showSidebar = true,
|
|
26358
|
+
showAside = true,
|
|
26359
|
+
stickyToc = true,
|
|
26360
|
+
stickySidebar = true,
|
|
26361
|
+
stickyAside = true,
|
|
26362
|
+
stickyOffset = "6rem",
|
|
26363
|
+
maxWidth = "1440px",
|
|
26364
|
+
className,
|
|
26365
|
+
containerClassName,
|
|
26366
|
+
gridClassName,
|
|
26367
|
+
contentClassName,
|
|
26368
|
+
tocClassName,
|
|
26369
|
+
sidebarClassName,
|
|
26370
|
+
asideClassName,
|
|
26371
|
+
headerClassName,
|
|
26372
|
+
footerClassName
|
|
26373
|
+
}) {
|
|
26374
|
+
const resolvedContent = children ?? content;
|
|
26375
|
+
const hasToc = showToc && Boolean(toc);
|
|
26376
|
+
const hasSidebar = showSidebar && Boolean(sidebar);
|
|
26377
|
+
const hasAside = showAside && Boolean(aside);
|
|
26378
|
+
const stickyStyle = {
|
|
26379
|
+
top: resolveSize(stickyOffset)
|
|
26380
|
+
};
|
|
26381
|
+
const hasLeftToc = hasToc && tocPosition === "left";
|
|
26382
|
+
const hasRightToc = hasToc && tocPosition === "right";
|
|
26383
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: classNames66__default.default("eui-markdown-layout", "w-full", className), children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
26384
|
+
"div",
|
|
26385
|
+
{
|
|
26386
|
+
className: classNames66__default.default(
|
|
26387
|
+
"eui-markdown-layout-container",
|
|
26388
|
+
"mx-auto w-full px-4 sm:px-6 lg:px-8",
|
|
26389
|
+
containerClassName
|
|
26390
|
+
),
|
|
26391
|
+
style: {
|
|
26392
|
+
maxWidth: resolveSize(maxWidth)
|
|
26393
|
+
},
|
|
26394
|
+
children: [
|
|
26395
|
+
header ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26396
|
+
"header",
|
|
26397
|
+
{
|
|
26398
|
+
className: classNames66__default.default(
|
|
26399
|
+
"eui-markdown-layout-header",
|
|
26400
|
+
"mb-8",
|
|
26401
|
+
headerClassName
|
|
26402
|
+
),
|
|
26403
|
+
children: header
|
|
26404
|
+
}
|
|
26405
|
+
) : null,
|
|
26406
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
26407
|
+
"div",
|
|
26408
|
+
{
|
|
26409
|
+
className: classNames66__default.default(
|
|
26410
|
+
"eui-markdown-layout-grid",
|
|
26411
|
+
"grid grid-cols-1 gap-8",
|
|
26412
|
+
hasSidebar && hasToc && "xl:grid-cols-[16rem_minmax(0,1fr)_18rem]",
|
|
26413
|
+
hasSidebar && !hasToc && "lg:grid-cols-[16rem_minmax(0,1fr)]",
|
|
26414
|
+
!hasSidebar && hasToc && "lg:grid-cols-[minmax(0,1fr)_18rem]",
|
|
26415
|
+
hasAside && "2xl:grid-cols-[16rem_minmax(0,1fr)_18rem_16rem]",
|
|
26416
|
+
gridClassName
|
|
26417
|
+
),
|
|
26418
|
+
children: [
|
|
26419
|
+
hasSidebar ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26420
|
+
"aside",
|
|
26421
|
+
{
|
|
26422
|
+
className: classNames66__default.default(
|
|
26423
|
+
"eui-markdown-layout-sidebar",
|
|
26424
|
+
"min-w-0",
|
|
26425
|
+
stickySidebar && "lg:sticky lg:self-start",
|
|
26426
|
+
sidebarClassName
|
|
26427
|
+
),
|
|
26428
|
+
style: stickySidebar ? stickyStyle : void 0,
|
|
26429
|
+
children: sidebar
|
|
26430
|
+
}
|
|
26431
|
+
) : null,
|
|
26432
|
+
hasLeftToc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26433
|
+
"aside",
|
|
26434
|
+
{
|
|
26435
|
+
className: classNames66__default.default(
|
|
26436
|
+
"eui-markdown-layout-toc",
|
|
26437
|
+
"min-w-0",
|
|
26438
|
+
stickyToc && "lg:sticky lg:self-start",
|
|
26439
|
+
tocClassName
|
|
26440
|
+
),
|
|
26441
|
+
style: stickyToc ? stickyStyle : void 0,
|
|
26442
|
+
children: toc
|
|
26443
|
+
}
|
|
26444
|
+
) : null,
|
|
26445
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
26446
|
+
"main",
|
|
26447
|
+
{
|
|
26448
|
+
className: classNames66__default.default(
|
|
26449
|
+
"eui-markdown-layout-content",
|
|
26450
|
+
"min-w-0",
|
|
26451
|
+
contentClassName
|
|
26452
|
+
),
|
|
26453
|
+
children: resolvedContent
|
|
26454
|
+
}
|
|
26455
|
+
),
|
|
26456
|
+
hasRightToc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26457
|
+
"aside",
|
|
26458
|
+
{
|
|
26459
|
+
className: classNames66__default.default(
|
|
26460
|
+
"eui-markdown-layout-toc",
|
|
26461
|
+
"min-w-0",
|
|
26462
|
+
stickyToc && "lg:sticky lg:self-start",
|
|
26463
|
+
tocClassName
|
|
26464
|
+
),
|
|
26465
|
+
style: stickyToc ? stickyStyle : void 0,
|
|
26466
|
+
children: toc
|
|
26467
|
+
}
|
|
26468
|
+
) : null,
|
|
26469
|
+
hasAside ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26470
|
+
"aside",
|
|
26471
|
+
{
|
|
26472
|
+
className: classNames66__default.default(
|
|
26473
|
+
"eui-markdown-layout-aside",
|
|
26474
|
+
"min-w-0",
|
|
26475
|
+
stickyAside && "2xl:sticky 2xl:self-start",
|
|
26476
|
+
asideClassName
|
|
26477
|
+
),
|
|
26478
|
+
style: stickyAside ? stickyStyle : void 0,
|
|
26479
|
+
children: aside
|
|
26480
|
+
}
|
|
26481
|
+
) : null
|
|
26482
|
+
]
|
|
26483
|
+
}
|
|
26484
|
+
),
|
|
26485
|
+
footer ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26486
|
+
"footer",
|
|
26487
|
+
{
|
|
26488
|
+
className: classNames66__default.default(
|
|
26489
|
+
"eui-markdown-layout-footer",
|
|
26490
|
+
"mt-10",
|
|
26491
|
+
footerClassName
|
|
26492
|
+
),
|
|
26493
|
+
children: footer
|
|
26494
|
+
}
|
|
26495
|
+
) : null
|
|
26496
|
+
]
|
|
26497
|
+
}
|
|
26498
|
+
) });
|
|
26499
|
+
}
|
|
26500
|
+
var MarkdownLayout_default = MarkdownLayout;
|
|
26501
|
+
function MarkdownDocsLayoutContent({
|
|
26502
|
+
children,
|
|
26503
|
+
markdown,
|
|
26504
|
+
value,
|
|
26505
|
+
headings,
|
|
26506
|
+
title,
|
|
26507
|
+
description,
|
|
26508
|
+
header,
|
|
26509
|
+
headerActions,
|
|
26510
|
+
content,
|
|
26511
|
+
toc,
|
|
26512
|
+
viewerProps,
|
|
26513
|
+
tocProps,
|
|
26514
|
+
enableDefaultViewer = true,
|
|
26515
|
+
enableDefaultToc = true,
|
|
26516
|
+
docsHeaderClassName,
|
|
26517
|
+
docsTitleClassName,
|
|
26518
|
+
docsDescriptionClassName,
|
|
26519
|
+
...layoutProps
|
|
26520
|
+
}) {
|
|
26521
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
26522
|
+
const resolvedHeader = header ?? (title || description || headerActions ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26523
|
+
"div",
|
|
26524
|
+
{
|
|
26525
|
+
className: classNames66__default.default(
|
|
26526
|
+
"eui-markdown-docs-header",
|
|
26527
|
+
"flex flex-col gap-4 border-b border-gray-200 pb-6",
|
|
26528
|
+
"dark:border-gray-700",
|
|
26529
|
+
docsHeaderClassName
|
|
26530
|
+
),
|
|
26531
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
26532
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 space-y-2", children: [
|
|
26533
|
+
title ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26534
|
+
"h1",
|
|
26535
|
+
{
|
|
26536
|
+
className: classNames66__default.default(
|
|
26537
|
+
"eui-markdown-docs-title",
|
|
26538
|
+
"text-3xl font-bold tracking-tight text-gray-950",
|
|
26539
|
+
"dark:text-gray-50",
|
|
26540
|
+
docsTitleClassName
|
|
26541
|
+
),
|
|
26542
|
+
children: title
|
|
26543
|
+
}
|
|
26544
|
+
) : null,
|
|
26545
|
+
description ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26546
|
+
"div",
|
|
26547
|
+
{
|
|
26548
|
+
className: classNames66__default.default(
|
|
26549
|
+
"eui-markdown-docs-description",
|
|
26550
|
+
"max-w-3xl text-base leading-7 text-gray-600",
|
|
26551
|
+
"dark:text-gray-400",
|
|
26552
|
+
docsDescriptionClassName
|
|
26553
|
+
),
|
|
26554
|
+
children: description
|
|
26555
|
+
}
|
|
26556
|
+
) : null
|
|
26557
|
+
] }),
|
|
26558
|
+
headerActions ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0", children: headerActions }) : null
|
|
26559
|
+
] })
|
|
26560
|
+
}
|
|
26561
|
+
) : null);
|
|
26562
|
+
const resolvedContent = children ?? content ?? (enableDefaultViewer ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26563
|
+
MarkdownViewer_default,
|
|
26564
|
+
{
|
|
26565
|
+
...viewerProps,
|
|
26566
|
+
value: resolvedMarkdown,
|
|
26567
|
+
headings
|
|
26568
|
+
}
|
|
26569
|
+
) : null);
|
|
26570
|
+
const resolvedToc = toc ?? (enableDefaultToc ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
26571
|
+
MarkdownTOC_default,
|
|
26572
|
+
{
|
|
26573
|
+
...tocProps,
|
|
26574
|
+
markdown: resolvedMarkdown,
|
|
26575
|
+
headings
|
|
26576
|
+
}
|
|
26577
|
+
) : null);
|
|
26578
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26579
|
+
MarkdownLayout_default,
|
|
26580
|
+
{
|
|
26581
|
+
...layoutProps,
|
|
26582
|
+
header: resolvedHeader,
|
|
26583
|
+
toc: resolvedToc,
|
|
26584
|
+
content: resolvedContent
|
|
26585
|
+
}
|
|
26586
|
+
);
|
|
26587
|
+
}
|
|
26588
|
+
function MarkdownDocsLayout({
|
|
26589
|
+
markdown,
|
|
26590
|
+
value,
|
|
26591
|
+
headings,
|
|
26592
|
+
meta,
|
|
26593
|
+
providerProps,
|
|
26594
|
+
enableProvider = true,
|
|
26595
|
+
...props
|
|
26596
|
+
}) {
|
|
26597
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
26598
|
+
if (!enableProvider) {
|
|
26599
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26600
|
+
MarkdownDocsLayoutContent,
|
|
26601
|
+
{
|
|
26602
|
+
...props,
|
|
26603
|
+
markdown,
|
|
26604
|
+
value,
|
|
26605
|
+
headings
|
|
26606
|
+
}
|
|
26607
|
+
);
|
|
26608
|
+
}
|
|
26609
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26610
|
+
MarkdownProvider_default,
|
|
26611
|
+
{
|
|
26612
|
+
...providerProps,
|
|
26613
|
+
markdown: resolvedMarkdown,
|
|
26614
|
+
headings,
|
|
26615
|
+
meta,
|
|
26616
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26617
|
+
MarkdownDocsLayoutContent,
|
|
26618
|
+
{
|
|
26619
|
+
...props,
|
|
26620
|
+
markdown: resolvedMarkdown,
|
|
26621
|
+
headings
|
|
26622
|
+
}
|
|
26623
|
+
)
|
|
26624
|
+
}
|
|
26625
|
+
);
|
|
26626
|
+
}
|
|
26627
|
+
var MarkdownDocsLayout_default = MarkdownDocsLayout;
|
|
26628
|
+
function toCssSize2(value) {
|
|
26629
|
+
if (typeof value === "number") return `${value}px`;
|
|
26630
|
+
return value;
|
|
26631
|
+
}
|
|
26632
|
+
function CodeMirrorMarkdownEditor({
|
|
26633
|
+
value,
|
|
26634
|
+
defaultValue = "",
|
|
26635
|
+
onChange,
|
|
26636
|
+
onBlur,
|
|
26637
|
+
id,
|
|
26638
|
+
name,
|
|
26639
|
+
placeholder = "Write markdown...",
|
|
26640
|
+
disabled = false,
|
|
26641
|
+
readOnly = false,
|
|
26642
|
+
autoFocus = false,
|
|
26643
|
+
minHeight = 320,
|
|
26644
|
+
maxHeight,
|
|
26645
|
+
height,
|
|
26646
|
+
dark = false,
|
|
26647
|
+
className,
|
|
26648
|
+
editorClassName,
|
|
26649
|
+
extensions
|
|
26650
|
+
}) {
|
|
26651
|
+
const isControlled = value !== void 0;
|
|
26652
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
26653
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26654
|
+
React2.useEffect(() => {
|
|
26655
|
+
if (!isControlled) {
|
|
26656
|
+
setInternalValue(defaultValue);
|
|
26657
|
+
}
|
|
26658
|
+
}, [defaultValue, isControlled]);
|
|
26659
|
+
const updateValue = (nextValue) => {
|
|
26660
|
+
if (!isControlled) {
|
|
26661
|
+
setInternalValue(nextValue);
|
|
26662
|
+
}
|
|
26663
|
+
onChange?.(nextValue);
|
|
26664
|
+
};
|
|
26665
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26666
|
+
"div",
|
|
26667
|
+
{
|
|
26668
|
+
id,
|
|
26669
|
+
"data-name": name,
|
|
26670
|
+
className: classNames66__default.default(
|
|
26671
|
+
"eui-markdown-adapter",
|
|
26672
|
+
"eui-markdown-codemirror-adapter",
|
|
26673
|
+
"overflow-hidden rounded border border-gray-300 bg-white",
|
|
26674
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
26675
|
+
disabled && "cursor-not-allowed opacity-60",
|
|
26676
|
+
className
|
|
26677
|
+
),
|
|
26678
|
+
style: {
|
|
26679
|
+
minHeight: toCssSize2(minHeight),
|
|
26680
|
+
maxHeight: toCssSize2(maxHeight)
|
|
26681
|
+
},
|
|
26682
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26683
|
+
CodeMirror__default.default,
|
|
26684
|
+
{
|
|
26685
|
+
value: currentValue,
|
|
26686
|
+
height,
|
|
26687
|
+
minHeight: toCssSize2(minHeight),
|
|
26688
|
+
maxHeight: toCssSize2(maxHeight),
|
|
26689
|
+
placeholder,
|
|
26690
|
+
autoFocus,
|
|
26691
|
+
editable: !disabled && !readOnly,
|
|
26692
|
+
readOnly,
|
|
26693
|
+
theme: dark ? themeOneDark.oneDark : void 0,
|
|
26694
|
+
extensions: [langMarkdown.markdown(), ...extensions ?? []],
|
|
26695
|
+
basicSetup: {
|
|
26696
|
+
lineNumbers: true,
|
|
26697
|
+
foldGutter: true,
|
|
26698
|
+
highlightActiveLine: true,
|
|
26699
|
+
highlightSelectionMatches: true,
|
|
26700
|
+
autocompletion: true,
|
|
26701
|
+
closeBrackets: true,
|
|
26702
|
+
bracketMatching: true
|
|
26703
|
+
},
|
|
26704
|
+
className: classNames66__default.default("eui-markdown-codemirror", editorClassName),
|
|
26705
|
+
onChange: updateValue,
|
|
26706
|
+
onBlur
|
|
26707
|
+
}
|
|
26708
|
+
)
|
|
26709
|
+
}
|
|
26710
|
+
);
|
|
26711
|
+
}
|
|
26712
|
+
var CodeMirrorMarkdownEditor_default = CodeMirrorMarkdownEditor;
|
|
26713
|
+
function toCssSize3(value) {
|
|
26714
|
+
if (typeof value === "number") return `${value}px`;
|
|
26715
|
+
return value;
|
|
26716
|
+
}
|
|
26717
|
+
function createDefaultPlugins(showToolbar) {
|
|
26718
|
+
return [
|
|
26719
|
+
editor.headingsPlugin(),
|
|
26720
|
+
editor.listsPlugin(),
|
|
26721
|
+
editor.quotePlugin(),
|
|
26722
|
+
editor.thematicBreakPlugin(),
|
|
26723
|
+
editor.markdownShortcutPlugin(),
|
|
26724
|
+
editor.linkPlugin(),
|
|
26725
|
+
editor.imagePlugin(),
|
|
26726
|
+
editor.tablePlugin(),
|
|
26727
|
+
editor.codeBlockPlugin({
|
|
26728
|
+
defaultCodeBlockLanguage: "tsx"
|
|
26729
|
+
}),
|
|
26730
|
+
editor.codeMirrorPlugin({
|
|
26731
|
+
codeBlockLanguages: {
|
|
26732
|
+
js: "JavaScript",
|
|
26733
|
+
jsx: "JSX",
|
|
26734
|
+
ts: "TypeScript",
|
|
26735
|
+
tsx: "TSX",
|
|
26736
|
+
css: "CSS",
|
|
26737
|
+
scss: "SCSS",
|
|
26738
|
+
json: "JSON",
|
|
26739
|
+
bash: "Bash",
|
|
26740
|
+
sh: "Shell",
|
|
26741
|
+
html: "HTML",
|
|
26742
|
+
xml: "XML",
|
|
26743
|
+
md: "Markdown"
|
|
26744
|
+
}
|
|
26745
|
+
}),
|
|
26746
|
+
...showToolbar ? [
|
|
26747
|
+
editor.toolbarPlugin({
|
|
26748
|
+
toolbarContents: () => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
26749
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.UndoRedo, {}),
|
|
26750
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
26751
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.BoldItalicUnderlineToggles, {}),
|
|
26752
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.CodeToggle, {}),
|
|
26753
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
26754
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.ListsToggle, {}),
|
|
26755
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.Separator, {}),
|
|
26756
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.CreateLink, {}),
|
|
26757
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertImage, {}),
|
|
26758
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertTable, {}),
|
|
26759
|
+
/* @__PURE__ */ jsxRuntime.jsx(editor.InsertCodeBlock, {})
|
|
26760
|
+
] })
|
|
26761
|
+
})
|
|
26762
|
+
] : []
|
|
26763
|
+
];
|
|
26764
|
+
}
|
|
26765
|
+
function MDXMarkdownEditor({
|
|
26766
|
+
value,
|
|
26767
|
+
defaultValue = "",
|
|
26768
|
+
onChange,
|
|
26769
|
+
onBlur,
|
|
26770
|
+
id,
|
|
26771
|
+
name,
|
|
26772
|
+
disabled = false,
|
|
26773
|
+
readOnly = false,
|
|
26774
|
+
minHeight = 360,
|
|
26775
|
+
maxHeight,
|
|
26776
|
+
dark = false,
|
|
26777
|
+
className,
|
|
26778
|
+
editorClassName,
|
|
26779
|
+
plugins,
|
|
26780
|
+
showToolbar = true,
|
|
26781
|
+
...props
|
|
26782
|
+
}) {
|
|
26783
|
+
const editorRef = React2.useRef(null);
|
|
26784
|
+
const isControlled = value !== void 0;
|
|
26785
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
26786
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26787
|
+
React2.useEffect(() => {
|
|
26788
|
+
if (!isControlled) {
|
|
26789
|
+
setInternalValue(defaultValue);
|
|
26790
|
+
}
|
|
26791
|
+
}, [defaultValue, isControlled]);
|
|
26792
|
+
React2.useEffect(() => {
|
|
26793
|
+
if (!isControlled) return;
|
|
26794
|
+
editorRef.current?.setMarkdown(value ?? "");
|
|
26795
|
+
}, [value, isControlled]);
|
|
26796
|
+
const updateValue = (nextValue) => {
|
|
26797
|
+
if (!isControlled) {
|
|
26798
|
+
setInternalValue(nextValue);
|
|
26799
|
+
}
|
|
26800
|
+
onChange?.(nextValue);
|
|
26801
|
+
};
|
|
26802
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26803
|
+
"div",
|
|
26804
|
+
{
|
|
26805
|
+
id,
|
|
26806
|
+
"data-name": name,
|
|
26807
|
+
onBlur,
|
|
26808
|
+
className: classNames66__default.default(
|
|
26809
|
+
"eui-markdown-adapter",
|
|
26810
|
+
"eui-markdown-mdx-adapter",
|
|
26811
|
+
dark && "dark",
|
|
26812
|
+
disabled && "is-disabled",
|
|
26813
|
+
className
|
|
26814
|
+
),
|
|
26815
|
+
style: {
|
|
26816
|
+
minHeight: toCssSize3(minHeight),
|
|
26817
|
+
maxHeight: toCssSize3(maxHeight)
|
|
26818
|
+
},
|
|
26819
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26820
|
+
editor.MDXEditor,
|
|
26821
|
+
{
|
|
26822
|
+
...props,
|
|
26823
|
+
ref: editorRef,
|
|
26824
|
+
markdown: currentValue ?? "",
|
|
26825
|
+
readOnly: disabled || readOnly,
|
|
26826
|
+
plugins: plugins ?? createDefaultPlugins(showToolbar),
|
|
26827
|
+
className: classNames66__default.default("eui-markdown-mdx-editor", editorClassName),
|
|
26828
|
+
contentEditableClassName: "eui-markdown-mdx-content",
|
|
26829
|
+
onChange: updateValue
|
|
26830
|
+
}
|
|
26831
|
+
)
|
|
26832
|
+
}
|
|
26833
|
+
);
|
|
26834
|
+
}
|
|
26835
|
+
var MDXMarkdownEditor_default = MDXMarkdownEditor;
|
|
26836
|
+
function toCssSize4(value) {
|
|
26837
|
+
if (typeof value === "number") return `${value}px`;
|
|
26838
|
+
return value;
|
|
26839
|
+
}
|
|
26840
|
+
function MilkdownInnerEditor({
|
|
26841
|
+
currentValue,
|
|
26842
|
+
updateValue,
|
|
26843
|
+
onBlur,
|
|
26844
|
+
disabled = false,
|
|
26845
|
+
readOnly = false,
|
|
26846
|
+
editorClassName,
|
|
26847
|
+
useGfm = true
|
|
26848
|
+
}) {
|
|
26849
|
+
react.useEditor(
|
|
26850
|
+
(root) => {
|
|
26851
|
+
let editor = core.Editor.make().config((ctx) => {
|
|
26852
|
+
ctx.set(core.rootCtx, root);
|
|
26853
|
+
ctx.set(core.defaultValueCtx, currentValue);
|
|
26854
|
+
ctx.update(core.editorViewOptionsCtx, (prev) => ({
|
|
26855
|
+
...prev,
|
|
26856
|
+
editable: () => !disabled && !readOnly,
|
|
26857
|
+
attributes: {
|
|
26858
|
+
class: classNames66__default.default("eui-markdown-milkdown-content", editorClassName),
|
|
26859
|
+
spellcheck: "true"
|
|
26860
|
+
},
|
|
26861
|
+
handleDOMEvents: {
|
|
26862
|
+
blur: () => {
|
|
26863
|
+
onBlur?.();
|
|
26864
|
+
return false;
|
|
26865
|
+
}
|
|
26866
|
+
}
|
|
26867
|
+
}));
|
|
26868
|
+
ctx.get(listener.listenerCtx).markdownUpdated((_ctx, markdown) => {
|
|
26869
|
+
updateValue(markdown);
|
|
26870
|
+
});
|
|
26871
|
+
});
|
|
26872
|
+
editor = editor.use(commonmark.commonmark);
|
|
26873
|
+
if (useGfm) {
|
|
26874
|
+
editor = editor.use(gfm.gfm);
|
|
26875
|
+
}
|
|
26876
|
+
editor = editor.use(listener.listener);
|
|
26877
|
+
return editor;
|
|
26878
|
+
},
|
|
26879
|
+
[disabled, readOnly, editorClassName, onBlur, updateValue, useGfm]
|
|
26880
|
+
);
|
|
26881
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Milkdown, {});
|
|
26882
|
+
}
|
|
26883
|
+
function MilkdownMarkdownEditor({
|
|
26884
|
+
value,
|
|
26885
|
+
defaultValue = "",
|
|
26886
|
+
onChange,
|
|
26887
|
+
onBlur,
|
|
26888
|
+
id,
|
|
26889
|
+
name,
|
|
26890
|
+
disabled = false,
|
|
26891
|
+
readOnly = false,
|
|
26892
|
+
minHeight = 360,
|
|
26893
|
+
maxHeight,
|
|
26894
|
+
className,
|
|
26895
|
+
editorClassName,
|
|
26896
|
+
useGfm = true
|
|
26897
|
+
}) {
|
|
26898
|
+
const isControlled = value !== void 0;
|
|
26899
|
+
const [internalValue, setInternalValue] = React2.useState(defaultValue);
|
|
26900
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26901
|
+
React2.useEffect(() => {
|
|
26902
|
+
if (!isControlled) {
|
|
26903
|
+
setInternalValue(defaultValue);
|
|
26904
|
+
}
|
|
26905
|
+
}, [defaultValue, isControlled]);
|
|
26906
|
+
const updateValue = (nextValue) => {
|
|
26907
|
+
if (!isControlled) {
|
|
26908
|
+
setInternalValue(nextValue);
|
|
26909
|
+
}
|
|
26910
|
+
onChange?.(nextValue);
|
|
26911
|
+
};
|
|
26912
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
26913
|
+
"div",
|
|
26914
|
+
{
|
|
26915
|
+
id,
|
|
26916
|
+
"data-name": name,
|
|
26917
|
+
className: classNames66__default.default(
|
|
26918
|
+
"eui-markdown-adapter",
|
|
26919
|
+
"eui-markdown-milkdown-adapter",
|
|
26920
|
+
disabled && "is-disabled",
|
|
26921
|
+
className
|
|
26922
|
+
),
|
|
26923
|
+
style: {
|
|
26924
|
+
minHeight: toCssSize4(minHeight),
|
|
26925
|
+
maxHeight: toCssSize4(maxHeight)
|
|
26926
|
+
},
|
|
26927
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.MilkdownProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
26928
|
+
MilkdownInnerEditor,
|
|
26929
|
+
{
|
|
26930
|
+
currentValue: currentValue ?? "",
|
|
26931
|
+
updateValue,
|
|
26932
|
+
onBlur,
|
|
26933
|
+
disabled,
|
|
26934
|
+
readOnly,
|
|
26935
|
+
editorClassName,
|
|
26936
|
+
useGfm
|
|
26937
|
+
}
|
|
26938
|
+
) })
|
|
26939
|
+
}
|
|
26940
|
+
);
|
|
26941
|
+
}
|
|
26942
|
+
var MilkdownMarkdownEditor_default = MilkdownMarkdownEditor;
|
|
24550
26943
|
function GenericLayout({
|
|
24551
26944
|
children,
|
|
24552
26945
|
styles,
|
|
@@ -24555,7 +26948,7 @@ function GenericLayout({
|
|
|
24555
26948
|
return /* @__PURE__ */ jsxRuntime.jsx(ThemeProvider, { defaultTheme, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
24556
26949
|
"div",
|
|
24557
26950
|
{
|
|
24558
|
-
className:
|
|
26951
|
+
className: classNames66__default.default({
|
|
24559
26952
|
[`${styles}`]: styles
|
|
24560
26953
|
}),
|
|
24561
26954
|
children
|
|
@@ -24604,7 +26997,7 @@ function SidemenuLayout({ data, children }) {
|
|
|
24604
26997
|
return /* @__PURE__ */ jsxRuntime.jsx(DefaultLayout_default, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
24605
26998
|
"div",
|
|
24606
26999
|
{
|
|
24607
|
-
className:
|
|
27000
|
+
className: classNames66__default.default({
|
|
24608
27001
|
grid: true,
|
|
24609
27002
|
"grid-cols-7 gap-10": !isMobile,
|
|
24610
27003
|
"grid-cols-1 gap-": isMobile
|
|
@@ -24722,6 +27115,7 @@ exports.CloudinaryImage = CloudinaryImage_default;
|
|
|
24722
27115
|
exports.CloudinaryProvider = CloudinaryProvider;
|
|
24723
27116
|
exports.CloudinaryVideo = CloudinaryVideo_default;
|
|
24724
27117
|
exports.Code = Code;
|
|
27118
|
+
exports.CodeMirrorMarkdownEditor = CodeMirrorMarkdownEditor_default;
|
|
24725
27119
|
exports.CommentThread = CommentThread_default;
|
|
24726
27120
|
exports.ConfigBootstrap = ConfigBootstrap_default;
|
|
24727
27121
|
exports.Configurator = Configurator;
|
|
@@ -24785,14 +27179,35 @@ exports.LinePlot = LinePlot;
|
|
|
24785
27179
|
exports.Link = Link;
|
|
24786
27180
|
exports.List = List_default;
|
|
24787
27181
|
exports.ListItem = ListItem_default;
|
|
27182
|
+
exports.MDXMarkdownEditor = MDXMarkdownEditor_default;
|
|
27183
|
+
exports.MarkdownBlockquote = MarkdownBlockquote_default;
|
|
27184
|
+
exports.MarkdownCodeBlock = MarkdownCodeBlock_default;
|
|
27185
|
+
exports.MarkdownContext = MarkdownContext;
|
|
27186
|
+
exports.MarkdownDocsLayout = MarkdownDocsLayout_default;
|
|
24788
27187
|
exports.MarkdownEditor = MarkdownEditor_default;
|
|
27188
|
+
exports.MarkdownField = MarkdownField_default;
|
|
27189
|
+
exports.MarkdownHeadingComponent = MarkdownHeading_default;
|
|
27190
|
+
exports.MarkdownImage = MarkdownImage_default;
|
|
27191
|
+
exports.MarkdownInlineCode = MarkdownInlineCode_default;
|
|
27192
|
+
exports.MarkdownLayout = MarkdownLayout_default;
|
|
27193
|
+
exports.MarkdownLink = MarkdownLink_default;
|
|
27194
|
+
exports.MarkdownPreviewPane = MarkdownPreviewPane_default;
|
|
24789
27195
|
exports.MarkdownProvider = MarkdownProvider_default;
|
|
27196
|
+
exports.MarkdownRenderer = MarkdownRenderer_default;
|
|
27197
|
+
exports.MarkdownSourceEditor = MarkdownSourceEditor_default;
|
|
27198
|
+
exports.MarkdownSplitEditor = MarkdownSplitEditor_default;
|
|
24790
27199
|
exports.MarkdownTOC = MarkdownTOC_default;
|
|
27200
|
+
exports.MarkdownTOCItem = MarkdownTOCItem_default;
|
|
27201
|
+
exports.MarkdownTable = MarkdownTable_default;
|
|
27202
|
+
exports.MarkdownTableCell = MarkdownTableCell;
|
|
27203
|
+
exports.MarkdownTableHeaderCell = MarkdownTableHeaderCell;
|
|
27204
|
+
exports.MarkdownToolbar = MarkdownToolbar_default;
|
|
24791
27205
|
exports.MarkdownViewer = MarkdownViewer_default;
|
|
24792
27206
|
exports.Menu = Menu;
|
|
24793
27207
|
exports.MenuGroup = MenuGroup;
|
|
24794
27208
|
exports.MenuItem = MenuItem;
|
|
24795
27209
|
exports.MenuItemTitle = MenuItemTitle;
|
|
27210
|
+
exports.MilkdownMarkdownEditor = MilkdownMarkdownEditor_default;
|
|
24796
27211
|
exports.Modal = Modal_default;
|
|
24797
27212
|
exports.MotionSurface = MotionSurface_default;
|
|
24798
27213
|
exports.MultiImageInput = MultiImageInput_default;
|
|
@@ -24875,17 +27290,20 @@ exports.cn = cn;
|
|
|
24875
27290
|
exports.createConfigurator = createConfigurator;
|
|
24876
27291
|
exports.createForceLayout = createForceLayout;
|
|
24877
27292
|
exports.createGridLayout = createGridLayout;
|
|
27293
|
+
exports.createHeadingSlug = createHeadingSlug;
|
|
24878
27294
|
exports.createInitialChartState = createInitialChartState;
|
|
24879
27295
|
exports.createTreeLayout = createTreeLayout;
|
|
24880
27296
|
exports.createURLResolver = createURLResolver;
|
|
24881
27297
|
exports.decrementReplyCount = decrementReplyCount;
|
|
24882
27298
|
exports.enumValues = enumValues;
|
|
24883
27299
|
exports.euiToast = euiToast;
|
|
27300
|
+
exports.extractHeadings = extractHeadings;
|
|
24884
27301
|
exports.findReview = findReview;
|
|
24885
27302
|
exports.formatChartValue = formatChartValue;
|
|
24886
27303
|
exports.formatCommentDate = formatCommentDate;
|
|
24887
27304
|
exports.formatConfigError = formatConfigError;
|
|
24888
27305
|
exports.formatReviewDate = formatReviewDate;
|
|
27306
|
+
exports.generateHeadingNumbers = generateHeadingNumbers;
|
|
24889
27307
|
exports.getAllowedOrigins = getAllowedOrigins;
|
|
24890
27308
|
exports.getBrowserHref = getBrowserHref;
|
|
24891
27309
|
exports.getBrowserOrigin = getBrowserOrigin;
|
|
@@ -24903,6 +27321,7 @@ exports.limitRealtimePoints = limitRealtimePoints;
|
|
|
24903
27321
|
exports.normalize = normalize;
|
|
24904
27322
|
exports.normalizeChartData = normalizeChartData;
|
|
24905
27323
|
exports.normalizeChartDataPoint = normalizeChartDataPoint;
|
|
27324
|
+
exports.normalizeMarkdown = normalizeMarkdown;
|
|
24906
27325
|
exports.normalizeReview = normalizeReview;
|
|
24907
27326
|
exports.normalizeReviewAuthor = normalizeReviewAuthor;
|
|
24908
27327
|
exports.normalizeReviewReply = normalizeReviewReply;
|
|
@@ -24922,13 +27341,16 @@ exports.resolveAppearanceStyles = resolveAppearanceStyles;
|
|
|
24922
27341
|
exports.resolveChartColor = resolveChartColor;
|
|
24923
27342
|
exports.resolveChartColors = resolveChartColors;
|
|
24924
27343
|
exports.resolveWithGlobal = resolveWithGlobal;
|
|
27344
|
+
exports.sanitizeHeading = sanitizeHeading;
|
|
24925
27345
|
exports.sendToast = sendToast;
|
|
27346
|
+
exports.slugify = slugify;
|
|
24926
27347
|
exports.toConfiguratorError = toConfiguratorError;
|
|
24927
27348
|
exports.updateComment = updateComment;
|
|
24928
27349
|
exports.updateReplyCacheComment = updateReplyCacheComment;
|
|
24929
27350
|
exports.updateReview = updateReview;
|
|
24930
27351
|
exports.updateReviewReply = updateReviewReply;
|
|
24931
27352
|
exports.upsertReview = upsertReview;
|
|
27353
|
+
exports.useActiveHeading = useActiveHeading;
|
|
24932
27354
|
exports.useChartContext = useChartContext;
|
|
24933
27355
|
exports.useChartData = useChartData;
|
|
24934
27356
|
exports.useChartPolling = useChartPolling;
|
|
@@ -24941,6 +27363,8 @@ exports.useCurrentTheme = useCurrentTheme_default;
|
|
|
24941
27363
|
exports.useDrawer = useDrawer_default;
|
|
24942
27364
|
exports.useEUIConfig = useEUIConfig;
|
|
24943
27365
|
exports.useIsMobile = useIsMobile_default;
|
|
27366
|
+
exports.useMarkdown = useMarkdown;
|
|
27367
|
+
exports.useMarkdownHeadings = useMarkdownHeadings;
|
|
24944
27368
|
exports.useModal = useModal_default;
|
|
24945
27369
|
exports.useReviewThreadState = useReviewThreadState;
|
|
24946
27370
|
exports.useTheme = useTheme_default;
|