elseware-ui 2.37.2 → 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 +873 -25
- package/dist/index.d.ts +873 -25
- package/dist/index.js +2782 -361
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2730 -362
- package/dist/index.mjs.map +1 -1
- package/package.json +13 -2
package/dist/index.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { twMerge } from 'tailwind-merge';
|
|
2
|
-
import React2, { createContext, forwardRef, useState, useImperativeHandle, useEffect, useMemo, useRef, useCallback, useContext, Children } from 'react';
|
|
2
|
+
import React2, { createContext, forwardRef, useState, useImperativeHandle, useEffect, useMemo, useRef, useCallback, useContext, Children, isValidElement } from 'react';
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { BsStarFill, BsStarHalf, BsStar, BsChevronDown, BsFillDiamondFill } from 'react-icons/bs';
|
|
5
5
|
import { FaSun, FaMoon, FaGripVertical, FaTrash, FaPlus, FaTimes, FaBars, FaCircle, FaEyeSlash, FaEye } from 'react-icons/fa';
|
|
6
6
|
import { ResponsiveContainer, LineChart, CartesianGrid, XAxis, YAxis, Tooltip, Line, AreaChart, Area, BarChart, Bar, PieChart, Pie, Cell, ScatterChart, Scatter } from 'recharts';
|
|
7
|
-
import
|
|
7
|
+
import classNames66 from 'classnames';
|
|
8
8
|
import { FaCircleChevronDown } from 'react-icons/fa6';
|
|
9
9
|
import ReactWorldFlags from 'react-world-flags';
|
|
10
10
|
import emojiFlags from 'emoji-flags';
|
|
@@ -16,9 +16,40 @@ import { motion, AnimatePresence } from 'framer-motion';
|
|
|
16
16
|
import { AiOutlineLoading } from 'react-icons/ai';
|
|
17
17
|
import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';
|
|
18
18
|
import { MdUpload, MdOutlineDone, MdOutlineRemoveCircleOutline } from 'react-icons/md';
|
|
19
|
-
import '@mdxeditor/editor/style.css';
|
|
20
|
-
import { MDXEditor, headingsPlugin, linkPlugin, listsPlugin, imagePlugin, tablePlugin, linkDialogPlugin, thematicBreakPlugin, quotePlugin, toolbarPlugin, UndoRedo, Separator, BlockTypeSelect, BoldItalicUnderlineToggles, StrikeThroughSupSubToggles, ListsToggle, CreateLink, InsertImage, InsertTable, InsertThematicBreak, markdownShortcutPlugin, frontmatterPlugin, codeBlockPlugin, codeMirrorPlugin } from '@mdxeditor/editor';
|
|
21
19
|
import { BiCheckCircle, BiXCircle, BiChevronDown, BiChevronUp, BiSolidLike, BiLike, BiSolidDislike, BiDislike, BiDotsVerticalRounded, BiReply, BiEdit, BiTrash, BiFlag } from 'react-icons/bi';
|
|
20
|
+
import ReactMarkdown from 'react-markdown';
|
|
21
|
+
import remarkGfm from 'remark-gfm';
|
|
22
|
+
import rehypeRaw from 'rehype-raw';
|
|
23
|
+
import rehypeSanitize from 'rehype-sanitize';
|
|
24
|
+
import { PrismLight } from 'react-syntax-highlighter';
|
|
25
|
+
import { vscDarkPlus } from 'react-syntax-highlighter/dist/esm/styles/prism';
|
|
26
|
+
import bash from 'react-syntax-highlighter/dist/esm/languages/prism/bash';
|
|
27
|
+
import c from 'react-syntax-highlighter/dist/esm/languages/prism/c';
|
|
28
|
+
import cpp from 'react-syntax-highlighter/dist/esm/languages/prism/cpp';
|
|
29
|
+
import css from 'react-syntax-highlighter/dist/esm/languages/prism/css';
|
|
30
|
+
import go from 'react-syntax-highlighter/dist/esm/languages/prism/go';
|
|
31
|
+
import java from 'react-syntax-highlighter/dist/esm/languages/prism/java';
|
|
32
|
+
import javascript from 'react-syntax-highlighter/dist/esm/languages/prism/javascript';
|
|
33
|
+
import json from 'react-syntax-highlighter/dist/esm/languages/prism/json';
|
|
34
|
+
import jsx210 from 'react-syntax-highlighter/dist/esm/languages/prism/jsx';
|
|
35
|
+
import markup from 'react-syntax-highlighter/dist/esm/languages/prism/markup';
|
|
36
|
+
import python from 'react-syntax-highlighter/dist/esm/languages/prism/python';
|
|
37
|
+
import rust from 'react-syntax-highlighter/dist/esm/languages/prism/rust';
|
|
38
|
+
import scss from 'react-syntax-highlighter/dist/esm/languages/prism/scss';
|
|
39
|
+
import sql from 'react-syntax-highlighter/dist/esm/languages/prism/sql';
|
|
40
|
+
import tsx from 'react-syntax-highlighter/dist/esm/languages/prism/tsx';
|
|
41
|
+
import typescript from 'react-syntax-highlighter/dist/esm/languages/prism/typescript';
|
|
42
|
+
import yaml from 'react-syntax-highlighter/dist/esm/languages/prism/yaml';
|
|
43
|
+
import CodeMirror from '@uiw/react-codemirror';
|
|
44
|
+
import { markdown } from '@codemirror/lang-markdown';
|
|
45
|
+
import { oneDark } from '@codemirror/theme-one-dark';
|
|
46
|
+
import { MDXEditor, headingsPlugin, listsPlugin, quotePlugin, thematicBreakPlugin, markdownShortcutPlugin, linkPlugin, imagePlugin, tablePlugin, codeBlockPlugin, codeMirrorPlugin, toolbarPlugin, UndoRedo, Separator, BoldItalicUnderlineToggles, CodeToggle, ListsToggle, CreateLink, InsertImage, InsertTable, InsertCodeBlock } from '@mdxeditor/editor';
|
|
47
|
+
import '@mdxeditor/editor/style.css';
|
|
48
|
+
import { MilkdownProvider, useEditor, Milkdown } from '@milkdown/react';
|
|
49
|
+
import { Editor, rootCtx, defaultValueCtx, editorViewOptionsCtx } from '@milkdown/kit/core';
|
|
50
|
+
import { commonmark } from '@milkdown/kit/preset/commonmark';
|
|
51
|
+
import { gfm } from '@milkdown/kit/preset/gfm';
|
|
52
|
+
import { listenerCtx, listener } from '@milkdown/kit/plugin/listener';
|
|
22
53
|
|
|
23
54
|
// node_modules/clsx/dist/clsx.mjs
|
|
24
55
|
function r(e) {
|
|
@@ -138,7 +169,7 @@ var CURRENCIES = [
|
|
|
138
169
|
|
|
139
170
|
// src/utils/currency.ts
|
|
140
171
|
var getCurrencySymbol = (code) => {
|
|
141
|
-
const currency = CURRENCIES.find((
|
|
172
|
+
const currency = CURRENCIES.find((c2) => c2.code === code);
|
|
142
173
|
return currency ? currency.symbol : null;
|
|
143
174
|
};
|
|
144
175
|
|
|
@@ -3732,7 +3763,7 @@ function renderTransitionChild(children, className) {
|
|
|
3732
3763
|
}
|
|
3733
3764
|
const element = child;
|
|
3734
3765
|
return React2.cloneElement(element, {
|
|
3735
|
-
className:
|
|
3766
|
+
className: classNames66(element.props.className, className)
|
|
3736
3767
|
});
|
|
3737
3768
|
}
|
|
3738
3769
|
function TransitionBase({
|
|
@@ -3752,7 +3783,7 @@ function TransitionBase({
|
|
|
3752
3783
|
if (!mounted && unmountOnExit) {
|
|
3753
3784
|
return null;
|
|
3754
3785
|
}
|
|
3755
|
-
const transitionClassName =
|
|
3786
|
+
const transitionClassName = classNames66(
|
|
3756
3787
|
visibility ? enterClassName : leaveClassName,
|
|
3757
3788
|
active ? visibleClassName : hiddenClassName
|
|
3758
3789
|
);
|
|
@@ -3927,7 +3958,7 @@ function Accordion({
|
|
|
3927
3958
|
/* @__PURE__ */ jsxs(
|
|
3928
3959
|
"div",
|
|
3929
3960
|
{
|
|
3930
|
-
className:
|
|
3961
|
+
className: classNames66(
|
|
3931
3962
|
"inline-flex gap-3 items-center px-3 py-2 w-full eui-gradient-to-r-general-xs",
|
|
3932
3963
|
{
|
|
3933
3964
|
"hover:cursor-pointer": toggleOnSummaryClick
|
|
@@ -3948,7 +3979,7 @@ function Accordion({
|
|
|
3948
3979
|
children: /* @__PURE__ */ jsx(
|
|
3949
3980
|
FaCircleChevronDown,
|
|
3950
3981
|
{
|
|
3951
|
-
className:
|
|
3982
|
+
className: classNames66("text-xl transition-transform duration-300", {
|
|
3952
3983
|
"rotate-180": collapse
|
|
3953
3984
|
})
|
|
3954
3985
|
}
|
|
@@ -3962,7 +3993,7 @@ function Accordion({
|
|
|
3962
3993
|
/* @__PURE__ */ jsx(TransitionAccordion_default, { visibility: collapse, children: /* @__PURE__ */ jsx(
|
|
3963
3994
|
"div",
|
|
3964
3995
|
{
|
|
3965
|
-
className:
|
|
3996
|
+
className: classNames66(
|
|
3966
3997
|
"border-t border-t-eui-dark-400/40 eui-text-sm",
|
|
3967
3998
|
{
|
|
3968
3999
|
"p-5": enableChildrenPadding
|
|
@@ -4046,7 +4077,7 @@ function CardHeader({ icon, title, description, className }) {
|
|
|
4046
4077
|
return /* @__PURE__ */ jsxs(
|
|
4047
4078
|
"div",
|
|
4048
4079
|
{
|
|
4049
|
-
className:
|
|
4080
|
+
className: classNames66(
|
|
4050
4081
|
"flex items-start gap-4 p-6 border-b border-white/10",
|
|
4051
4082
|
className
|
|
4052
4083
|
),
|
|
@@ -4062,14 +4093,14 @@ function CardHeader({ icon, title, description, className }) {
|
|
|
4062
4093
|
}
|
|
4063
4094
|
var CardHeader_default = CardHeader;
|
|
4064
4095
|
function CardContent({ children, className }) {
|
|
4065
|
-
return /* @__PURE__ */ jsx("div", { className:
|
|
4096
|
+
return /* @__PURE__ */ jsx("div", { className: classNames66("p-6 text-gray-300 text-sm", className), children });
|
|
4066
4097
|
}
|
|
4067
4098
|
var CardContent_default = CardContent;
|
|
4068
4099
|
function CardFooter({ children, className }) {
|
|
4069
4100
|
return /* @__PURE__ */ jsx(
|
|
4070
4101
|
"div",
|
|
4071
4102
|
{
|
|
4072
|
-
className:
|
|
4103
|
+
className: classNames66(
|
|
4073
4104
|
"flex items-center gap-3 p-5 border-t border-white/10 text-sm text-gray-400",
|
|
4074
4105
|
className
|
|
4075
4106
|
),
|
|
@@ -4111,7 +4142,7 @@ function GradientAnimation({
|
|
|
4111
4142
|
return /* @__PURE__ */ jsx(
|
|
4112
4143
|
"div",
|
|
4113
4144
|
{
|
|
4114
|
-
className:
|
|
4145
|
+
className: classNames66("absolute inset-0"),
|
|
4115
4146
|
style: {
|
|
4116
4147
|
background: `linear-gradient(${cfg.angle}deg, ${cfg.colors?.join(",")})`,
|
|
4117
4148
|
backgroundSize: cfg.backgroundSize,
|
|
@@ -4257,7 +4288,7 @@ function MotionSurface({
|
|
|
4257
4288
|
}) {
|
|
4258
4289
|
const AnimationComponent = animationVariant === "custom" ? CustomAnimation : animationRegistry[animationVariant];
|
|
4259
4290
|
const OverlayComponent = overlay === "custom" ? CustomOverlay : overlayRegistry[overlay];
|
|
4260
|
-
return /* @__PURE__ */ jsxs("div", { className:
|
|
4291
|
+
return /* @__PURE__ */ jsxs("div", { className: classNames66("relative overflow-hidden", className), children: [
|
|
4261
4292
|
AnimationComponent && /* @__PURE__ */ jsx(AnimationComponent, { config: animationConfig, animated }),
|
|
4262
4293
|
OverlayComponent && /* @__PURE__ */ jsx(OverlayComponent, { config: overlayConfig }),
|
|
4263
4294
|
/* @__PURE__ */ jsx("div", { className: "relative z-10", children })
|
|
@@ -5661,7 +5692,7 @@ var Backdrop = ({ children, styles }) => {
|
|
|
5661
5692
|
return /* @__PURE__ */ jsx(
|
|
5662
5693
|
"div",
|
|
5663
5694
|
{
|
|
5664
|
-
className:
|
|
5695
|
+
className: classNames66({
|
|
5665
5696
|
"bg-black/75 top-0 bottom-0 left-0 right-0 z-50 fixed inset-0 flex items-center justify-center overflow-hidden": true,
|
|
5666
5697
|
[`${styles}`]: styles
|
|
5667
5698
|
}),
|
|
@@ -6185,7 +6216,7 @@ var Form = ({
|
|
|
6185
6216
|
/* @__PURE__ */ jsx(UnsavedChangesGuard_default, { formik, enabled: warnOnUnsavedChanges }),
|
|
6186
6217
|
/* @__PURE__ */ jsx(DirtyObserver_default, { formik, onDirtyChange }),
|
|
6187
6218
|
/* @__PURE__ */ jsx(FormObserver_default, { formik, onChange }),
|
|
6188
|
-
/* @__PURE__ */ jsx("div", { className:
|
|
6219
|
+
/* @__PURE__ */ jsx("div", { className: classNames66(styles), children })
|
|
6189
6220
|
] })
|
|
6190
6221
|
}
|
|
6191
6222
|
);
|
|
@@ -6227,16 +6258,16 @@ function normalizeToastStatus(status = "default" /* default */) {
|
|
|
6227
6258
|
}
|
|
6228
6259
|
function emit() {
|
|
6229
6260
|
const snapshot = [...toasts];
|
|
6230
|
-
listeners.forEach((
|
|
6231
|
-
|
|
6261
|
+
listeners.forEach((listener2) => {
|
|
6262
|
+
listener2(snapshot);
|
|
6232
6263
|
});
|
|
6233
6264
|
}
|
|
6234
6265
|
var toastStore = {
|
|
6235
|
-
subscribe(
|
|
6236
|
-
listeners.add(
|
|
6237
|
-
|
|
6266
|
+
subscribe(listener2) {
|
|
6267
|
+
listeners.add(listener2);
|
|
6268
|
+
listener2([...toasts]);
|
|
6238
6269
|
return () => {
|
|
6239
|
-
listeners.delete(
|
|
6270
|
+
listeners.delete(listener2);
|
|
6240
6271
|
};
|
|
6241
6272
|
},
|
|
6242
6273
|
getSnapshot() {
|
|
@@ -6702,7 +6733,7 @@ function FormResponse({
|
|
|
6702
6733
|
return /* @__PURE__ */ jsx(Transition.TransitionDropdown, { visibility: text ? true : false, children: /* @__PURE__ */ jsx(
|
|
6703
6734
|
"div",
|
|
6704
6735
|
{
|
|
6705
|
-
className:
|
|
6736
|
+
className: classNames66({
|
|
6706
6737
|
"font-poppins font-light text-sm": true,
|
|
6707
6738
|
[`${variantsLite[variant]}`]: variant,
|
|
6708
6739
|
[`${shapes[shape]}`]: shape,
|
|
@@ -6819,7 +6850,7 @@ var ThemeSwitch = () => {
|
|
|
6819
6850
|
/* @__PURE__ */ jsx(
|
|
6820
6851
|
"div",
|
|
6821
6852
|
{
|
|
6822
|
-
className:
|
|
6853
|
+
className: classNames66(
|
|
6823
6854
|
"w-6 h-6 bg-white dark:bg-gray-600 rounded-full shadow-md transition-transform duration-300",
|
|
6824
6855
|
theme === "dark" ? "translate-x-8" : "translate-x-0"
|
|
6825
6856
|
)
|
|
@@ -18200,12 +18231,12 @@ function WorldMap({
|
|
|
18200
18231
|
const mode = isDarkMode ? mapStyles.dark : mapStyles.light;
|
|
18201
18232
|
const resolvedData = useMemo(() => {
|
|
18202
18233
|
return data.map((item) => {
|
|
18203
|
-
const
|
|
18204
|
-
if (!
|
|
18234
|
+
const c2 = COUNTRIES.find((x) => x.code === item.code);
|
|
18235
|
+
if (!c2) return null;
|
|
18205
18236
|
return {
|
|
18206
18237
|
...item,
|
|
18207
|
-
name:
|
|
18208
|
-
coordinates:
|
|
18238
|
+
name: c2.name,
|
|
18239
|
+
coordinates: c2.coordinates
|
|
18209
18240
|
};
|
|
18210
18241
|
}).filter(Boolean);
|
|
18211
18242
|
}, [data]);
|
|
@@ -18367,7 +18398,7 @@ function InputResponse({
|
|
|
18367
18398
|
return /* @__PURE__ */ jsx(Transition.TransitionDropdown, { visibility, children: /* @__PURE__ */ jsx(
|
|
18368
18399
|
"div",
|
|
18369
18400
|
{
|
|
18370
|
-
className:
|
|
18401
|
+
className: classNames66({
|
|
18371
18402
|
"font-medium text-sm py-1 px-2": true,
|
|
18372
18403
|
[`${textVariants[variant]}`]: variant,
|
|
18373
18404
|
"transition-all ease-in-out": true,
|
|
@@ -18382,7 +18413,7 @@ function InputLabel({ text, children, styles }) {
|
|
|
18382
18413
|
return /* @__PURE__ */ jsx(
|
|
18383
18414
|
"label",
|
|
18384
18415
|
{
|
|
18385
|
-
className:
|
|
18416
|
+
className: classNames66({
|
|
18386
18417
|
"px-0 eui-text-sm text-[13.5px] pointer-events-none select-none": true,
|
|
18387
18418
|
"transition-all ease-in-out": true,
|
|
18388
18419
|
[`${styles}`]: styles
|
|
@@ -18434,7 +18465,7 @@ var Input = ({
|
|
|
18434
18465
|
...field,
|
|
18435
18466
|
...props,
|
|
18436
18467
|
placeholder,
|
|
18437
|
-
className:
|
|
18468
|
+
className: classNames66({
|
|
18438
18469
|
"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,
|
|
18439
18470
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
18440
18471
|
"border-eui-danger-500": meta.touched && meta.error,
|
|
@@ -18479,7 +18510,7 @@ var InputFile = ({
|
|
|
18479
18510
|
/* @__PURE__ */ jsx(
|
|
18480
18511
|
"div",
|
|
18481
18512
|
{
|
|
18482
|
-
className:
|
|
18513
|
+
className: classNames66(
|
|
18483
18514
|
"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",
|
|
18484
18515
|
{
|
|
18485
18516
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
@@ -18505,7 +18536,7 @@ var InputFile = ({
|
|
|
18505
18536
|
InputLabel_default,
|
|
18506
18537
|
{
|
|
18507
18538
|
text: placeholder,
|
|
18508
|
-
styles:
|
|
18539
|
+
styles: classNames66({
|
|
18509
18540
|
"absolute left-2 eui-text-sm peer-placeholder-shown:text-base peer-placeholder-shown:top-3 pointer-events-none": true,
|
|
18510
18541
|
"top-[0.7px]": showFloatingLabel,
|
|
18511
18542
|
"top-[13px] text-base": !showFloatingLabel
|
|
@@ -18558,7 +18589,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18558
18589
|
/* @__PURE__ */ jsx("div", { className: "mt-2", children: /* @__PURE__ */ jsx(FieldArray, { name, children: ({ push, remove, move }) => /* @__PURE__ */ jsxs(
|
|
18559
18590
|
"div",
|
|
18560
18591
|
{
|
|
18561
|
-
className:
|
|
18592
|
+
className: classNames66(
|
|
18562
18593
|
"flex w-full flex-col space-y-2 bg-eui-primary-300/10",
|
|
18563
18594
|
shapes[resolvedShape]
|
|
18564
18595
|
),
|
|
@@ -18587,7 +18618,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18587
18618
|
ref: provided2.innerRef,
|
|
18588
18619
|
...draggableProps,
|
|
18589
18620
|
style: draggableStyle,
|
|
18590
|
-
className:
|
|
18621
|
+
className: classNames66(
|
|
18591
18622
|
"flex items-center space-x-2 bg-eui-primary-300/10 p-2",
|
|
18592
18623
|
shapes[resolvedShape]
|
|
18593
18624
|
),
|
|
@@ -18598,7 +18629,7 @@ var InputList = ({ name, placeholder, shape }) => {
|
|
|
18598
18629
|
{
|
|
18599
18630
|
name: `${name}[${index}]`,
|
|
18600
18631
|
placeholder: `Item ${index + 1}`,
|
|
18601
|
-
className:
|
|
18632
|
+
className: classNames66(
|
|
18602
18633
|
"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",
|
|
18603
18634
|
shapes[resolvedShape],
|
|
18604
18635
|
hasItemError ? "border-eui-danger-500" : "border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -18694,7 +18725,7 @@ var InputListGroup = ({
|
|
|
18694
18725
|
return /* @__PURE__ */ jsxs(
|
|
18695
18726
|
"div",
|
|
18696
18727
|
{
|
|
18697
|
-
className:
|
|
18728
|
+
className: classNames66(
|
|
18698
18729
|
"flex flex-col gap-2 bg-eui-primary-300/10 p-3",
|
|
18699
18730
|
shapes[resolvedShape]
|
|
18700
18731
|
),
|
|
@@ -18706,7 +18737,7 @@ var InputListGroup = ({
|
|
|
18706
18737
|
{
|
|
18707
18738
|
name: `${name}[${groupIndex}].name`,
|
|
18708
18739
|
placeholder: `Group ${groupIndex + 1}`,
|
|
18709
|
-
className:
|
|
18740
|
+
className: classNames66(
|
|
18710
18741
|
"h-[40px] w-full border bg-eui-primary-300/10 px-3 py-2 text-md focus:outline-none",
|
|
18711
18742
|
shapes[resolvedShape],
|
|
18712
18743
|
"border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -18737,7 +18768,7 @@ var InputListGroup = ({
|
|
|
18737
18768
|
{
|
|
18738
18769
|
ref: provided.innerRef,
|
|
18739
18770
|
...provided.droppableProps,
|
|
18740
|
-
className:
|
|
18771
|
+
className: classNames66(
|
|
18741
18772
|
"space-y-2 bg-eui-primary-300/10 p-2",
|
|
18742
18773
|
shapes[resolvedShape]
|
|
18743
18774
|
),
|
|
@@ -18757,7 +18788,7 @@ var InputListGroup = ({
|
|
|
18757
18788
|
ref: provided2.innerRef,
|
|
18758
18789
|
...draggableProps,
|
|
18759
18790
|
style: draggableStyle,
|
|
18760
|
-
className:
|
|
18791
|
+
className: classNames66(
|
|
18761
18792
|
"flex items-center gap-2 bg-eui-primary-300/10 p-2",
|
|
18762
18793
|
shapes[resolvedShape]
|
|
18763
18794
|
),
|
|
@@ -18768,7 +18799,7 @@ var InputListGroup = ({
|
|
|
18768
18799
|
{
|
|
18769
18800
|
name: `${itemsFieldName}[${itemIndex}]`,
|
|
18770
18801
|
placeholder: `Item ${itemIndex + 1}`,
|
|
18771
|
-
className:
|
|
18802
|
+
className: classNames66(
|
|
18772
18803
|
"h-[40px] w-full border bg-eui-primary-300/10 px-3 py-2 text-md focus:outline-none",
|
|
18773
18804
|
shapes[resolvedShape],
|
|
18774
18805
|
"border-eui-primary-400 focus:border-eui-secondary-500"
|
|
@@ -18982,7 +19013,7 @@ var DateSelector = ({
|
|
|
18982
19013
|
...field,
|
|
18983
19014
|
...props,
|
|
18984
19015
|
placeholder,
|
|
18985
|
-
className:
|
|
19016
|
+
className: classNames66({
|
|
18986
19017
|
"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,
|
|
18987
19018
|
"border-eui-danger-500": meta.touched && meta.error,
|
|
18988
19019
|
"transition-all ease-in-out": true,
|
|
@@ -19091,7 +19122,7 @@ var ImageInput = forwardRef(
|
|
|
19091
19122
|
/* @__PURE__ */ jsxs(
|
|
19092
19123
|
"label",
|
|
19093
19124
|
{
|
|
19094
|
-
className:
|
|
19125
|
+
className: classNames66({
|
|
19095
19126
|
"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,
|
|
19096
19127
|
"hover:cursor-pointer hover:border-solid hover:border-gray-600 hover:bg-gray-900/80": true,
|
|
19097
19128
|
"transition-all ease-in-out duration-150": true
|
|
@@ -19208,7 +19239,7 @@ function Radio({
|
|
|
19208
19239
|
return /* @__PURE__ */ jsxs(
|
|
19209
19240
|
"div",
|
|
19210
19241
|
{
|
|
19211
|
-
className:
|
|
19242
|
+
className: classNames66({
|
|
19212
19243
|
"flex flex-row gap-2 items-center mx-1 my-2": true
|
|
19213
19244
|
}),
|
|
19214
19245
|
children: [
|
|
@@ -19221,7 +19252,7 @@ function Radio({
|
|
|
19221
19252
|
...props,
|
|
19222
19253
|
value: option.value,
|
|
19223
19254
|
checked: field2.value === option.value,
|
|
19224
|
-
className:
|
|
19255
|
+
className: classNames66({
|
|
19225
19256
|
"appearance-none w-4 h-4 border-2 border-eui-primary-400 rounded-full cursor-pointer transition-all duration-300": true,
|
|
19226
19257
|
// base radio button styles
|
|
19227
19258
|
"checked:bg-eui-secondary-700 checked:border-eui-primary-400": field2.value === option.value
|
|
@@ -19233,7 +19264,7 @@ function Radio({
|
|
|
19233
19264
|
"label",
|
|
19234
19265
|
{
|
|
19235
19266
|
htmlFor: option.value,
|
|
19236
|
-
className:
|
|
19267
|
+
className: classNames66({
|
|
19237
19268
|
"eui-text-md text-sm": true
|
|
19238
19269
|
}),
|
|
19239
19270
|
children: option.label
|
|
@@ -19276,7 +19307,7 @@ function StarRatingInput({
|
|
|
19276
19307
|
return /* @__PURE__ */ jsxs(
|
|
19277
19308
|
"div",
|
|
19278
19309
|
{
|
|
19279
|
-
className:
|
|
19310
|
+
className: classNames66({
|
|
19280
19311
|
"inline-flex gap-[4px] text-[20px]": true,
|
|
19281
19312
|
[`${styles}`]: styles
|
|
19282
19313
|
}),
|
|
@@ -19289,7 +19320,7 @@ function StarRatingInput({
|
|
|
19289
19320
|
onClick: () => handleOnClick(index),
|
|
19290
19321
|
onMouseEnter: () => setHover(index),
|
|
19291
19322
|
onMouseLeave: () => setHover(null),
|
|
19292
|
-
className:
|
|
19323
|
+
className: classNames66({
|
|
19293
19324
|
"text-yellow-600": index <= (hover ?? rating - 1),
|
|
19294
19325
|
"text-gray-400": index > (hover ?? rating - 1)
|
|
19295
19326
|
}),
|
|
@@ -19333,7 +19364,7 @@ function Select({
|
|
|
19333
19364
|
{
|
|
19334
19365
|
as: "select",
|
|
19335
19366
|
...props,
|
|
19336
|
-
className:
|
|
19367
|
+
className: classNames66({
|
|
19337
19368
|
"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,
|
|
19338
19369
|
"border-eui-primary-400": !(meta.touched && meta.error),
|
|
19339
19370
|
"border-red-500": meta.touched && meta.error,
|
|
@@ -19385,7 +19416,7 @@ function Switch({
|
|
|
19385
19416
|
"div",
|
|
19386
19417
|
{
|
|
19387
19418
|
onClick: () => helpers.setValue(!field.value),
|
|
19388
|
-
className:
|
|
19419
|
+
className: classNames66(
|
|
19389
19420
|
"w-11 h-6 bg-gray-200 peer-focus:outline-none rounded-full peer dark:bg-eui-dark-100",
|
|
19390
19421
|
"peer-checked:after:translate-x-full peer-checked:after:border-white",
|
|
19391
19422
|
"after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white",
|
|
@@ -19442,7 +19473,7 @@ function Tags({
|
|
|
19442
19473
|
/* @__PURE__ */ jsxs(
|
|
19443
19474
|
"div",
|
|
19444
19475
|
{
|
|
19445
|
-
className:
|
|
19476
|
+
className: classNames66(
|
|
19446
19477
|
"border rounded-sm flex flex-wrap items-center gap-2 px-2 pt-2 pb-6 min-h-[3rem]",
|
|
19447
19478
|
{
|
|
19448
19479
|
"bg-eui-primary-300/10 eui-text-md": true,
|
|
@@ -19490,7 +19521,7 @@ function Tags({
|
|
|
19490
19521
|
InputLabel_default,
|
|
19491
19522
|
{
|
|
19492
19523
|
text: placeholder,
|
|
19493
|
-
styles:
|
|
19524
|
+
styles: classNames66(
|
|
19494
19525
|
"absolute left-2 transition-all pointer-events-none text-eui-dark-200",
|
|
19495
19526
|
input.length > 0 || field.value.length > 0 ? "top-[2px] text-[13.5px]" : "top-3 text-base"
|
|
19496
19527
|
)
|
|
@@ -19531,7 +19562,7 @@ function TextArea({
|
|
|
19531
19562
|
as: "textarea",
|
|
19532
19563
|
...field,
|
|
19533
19564
|
...props,
|
|
19534
|
-
className:
|
|
19565
|
+
className: classNames66({
|
|
19535
19566
|
"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,
|
|
19536
19567
|
"transition-all ease-in-out": true,
|
|
19537
19568
|
"border-eui-primary-400 focus:border-eui-secondary-500": !(meta.touched && meta.error),
|
|
@@ -19545,7 +19576,7 @@ function TextArea({
|
|
|
19545
19576
|
InputLabel_default,
|
|
19546
19577
|
{
|
|
19547
19578
|
text: placeholder,
|
|
19548
|
-
styles:
|
|
19579
|
+
styles: classNames66(
|
|
19549
19580
|
"absolute left-2 transition-all pointer-events-none text-eui-dark-200",
|
|
19550
19581
|
field.value ? "top-[2px] text-[13.5px]" : "top-3 text-base"
|
|
19551
19582
|
)
|
|
@@ -19574,7 +19605,7 @@ var ContentArea = forwardRef(
|
|
|
19574
19605
|
"div",
|
|
19575
19606
|
{
|
|
19576
19607
|
ref,
|
|
19577
|
-
className:
|
|
19608
|
+
className: classNames66({
|
|
19578
19609
|
"min-h-screen h-full w-full transition-all duration-[200ms]": true,
|
|
19579
19610
|
"py-3 px-5": !enablePadding,
|
|
19580
19611
|
"py-3 px-5 lg:px-[150px]": enablePadding,
|
|
@@ -19591,7 +19622,7 @@ function FlexCol({ children, gap = 3, styles }) {
|
|
|
19591
19622
|
return /* @__PURE__ */ jsx(
|
|
19592
19623
|
"div",
|
|
19593
19624
|
{
|
|
19594
|
-
className:
|
|
19625
|
+
className: classNames66({
|
|
19595
19626
|
[`flex flex-col gap-${gap}`]: true,
|
|
19596
19627
|
[`${styles}`]: styles
|
|
19597
19628
|
}),
|
|
@@ -19604,7 +19635,7 @@ function FlexRow({ children, gap = 3, styles }) {
|
|
|
19604
19635
|
return /* @__PURE__ */ jsx(
|
|
19605
19636
|
"div",
|
|
19606
19637
|
{
|
|
19607
|
-
className:
|
|
19638
|
+
className: classNames66({
|
|
19608
19639
|
[`flex flex-row gap-${gap}`]: true,
|
|
19609
19640
|
[`${styles}`]: styles
|
|
19610
19641
|
}),
|
|
@@ -19623,7 +19654,7 @@ function Grid({ children, styles }) {
|
|
|
19623
19654
|
return /* @__PURE__ */ jsx(
|
|
19624
19655
|
"div",
|
|
19625
19656
|
{
|
|
19626
|
-
className:
|
|
19657
|
+
className: classNames66({
|
|
19627
19658
|
[`grid`]: true,
|
|
19628
19659
|
[`${styles}`]: styles
|
|
19629
19660
|
}),
|
|
@@ -19640,7 +19671,7 @@ var Layout = ({
|
|
|
19640
19671
|
return /* @__PURE__ */ jsx(
|
|
19641
19672
|
"div",
|
|
19642
19673
|
{
|
|
19643
|
-
className:
|
|
19674
|
+
className: classNames66({
|
|
19644
19675
|
// "flex h-full w-screen bg-gray-100 overflow-auto": true,
|
|
19645
19676
|
"flex bg-eui-light-600": true,
|
|
19646
19677
|
"flex-col": flexDirection === "vertical",
|
|
@@ -19659,7 +19690,7 @@ var Header = ({
|
|
|
19659
19690
|
return /* @__PURE__ */ jsx(
|
|
19660
19691
|
"div",
|
|
19661
19692
|
{
|
|
19662
|
-
className:
|
|
19693
|
+
className: classNames66({
|
|
19663
19694
|
static: position === "static",
|
|
19664
19695
|
fixed: position === "fixed",
|
|
19665
19696
|
sticky: position === "sticky",
|
|
@@ -19699,7 +19730,7 @@ var Content = ({
|
|
|
19699
19730
|
return /* @__PURE__ */ jsx(
|
|
19700
19731
|
"div",
|
|
19701
19732
|
{
|
|
19702
|
-
className:
|
|
19733
|
+
className: classNames66({
|
|
19703
19734
|
"w-full min-h-screen transition-all duration-200 eui-bg-sm": true,
|
|
19704
19735
|
"md:pl-[300px]": !overlayedSidebar && sidebarVisible && !isMobile,
|
|
19705
19736
|
// Shift when sidebar is open (desktop)
|
|
@@ -19715,7 +19746,7 @@ var Footer = ({ children, styles }) => {
|
|
|
19715
19746
|
return /* @__PURE__ */ jsx(
|
|
19716
19747
|
"div",
|
|
19717
19748
|
{
|
|
19718
|
-
className:
|
|
19749
|
+
className: classNames66({
|
|
19719
19750
|
"bottom-0 w-full h-fit": true,
|
|
19720
19751
|
"border-t border-eui-dark-500/40 dark:border-eui-secondary-800 eui-bg-md": !styles,
|
|
19721
19752
|
[`${styles}`]: styles
|
|
@@ -19788,269 +19819,6 @@ function BlockGroup({
|
|
|
19788
19819
|
] });
|
|
19789
19820
|
}
|
|
19790
19821
|
var BlockGroup_default = BlockGroup;
|
|
19791
|
-
var useTheme = () => {
|
|
19792
|
-
const context = useContext(ThemeContext);
|
|
19793
|
-
if (!context) {
|
|
19794
|
-
throw new Error("useTheme must be used within a ThemeProvider");
|
|
19795
|
-
}
|
|
19796
|
-
return context;
|
|
19797
|
-
};
|
|
19798
|
-
var useTheme_default = useTheme;
|
|
19799
|
-
function MarkdownEditor({
|
|
19800
|
-
styles,
|
|
19801
|
-
...props
|
|
19802
|
-
}) {
|
|
19803
|
-
const [field, meta, helpers] = useField(props);
|
|
19804
|
-
const { theme } = useTheme_default();
|
|
19805
|
-
return /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
19806
|
-
/* @__PURE__ */ jsx("div", { className: classNames17(theme === "dark" ? "dark" : "", styles), children: /* @__PURE__ */ jsx(
|
|
19807
|
-
MDXEditor,
|
|
19808
|
-
{
|
|
19809
|
-
markdown: field.value,
|
|
19810
|
-
onChange: (val) => helpers.setValue(val),
|
|
19811
|
-
className: "rounded border border-gray-300 dark:border-gray-700",
|
|
19812
|
-
plugins: [
|
|
19813
|
-
headingsPlugin(),
|
|
19814
|
-
linkPlugin(),
|
|
19815
|
-
listsPlugin(),
|
|
19816
|
-
imagePlugin(),
|
|
19817
|
-
tablePlugin(),
|
|
19818
|
-
linkDialogPlugin({}),
|
|
19819
|
-
thematicBreakPlugin(),
|
|
19820
|
-
quotePlugin(),
|
|
19821
|
-
toolbarPlugin({
|
|
19822
|
-
toolbarContents: () => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
19823
|
-
/* @__PURE__ */ jsx(UndoRedo, {}),
|
|
19824
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19825
|
-
/* @__PURE__ */ jsx(BlockTypeSelect, {}),
|
|
19826
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19827
|
-
/* @__PURE__ */ jsx(BoldItalicUnderlineToggles, {}),
|
|
19828
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19829
|
-
/* @__PURE__ */ jsx(StrikeThroughSupSubToggles, {}),
|
|
19830
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19831
|
-
/* @__PURE__ */ jsx(ListsToggle, {}),
|
|
19832
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19833
|
-
/* @__PURE__ */ jsx(CreateLink, {}),
|
|
19834
|
-
/* @__PURE__ */ jsx(InsertImage, {}),
|
|
19835
|
-
/* @__PURE__ */ jsx(Separator, {}),
|
|
19836
|
-
/* @__PURE__ */ jsx(InsertTable, {}),
|
|
19837
|
-
/* @__PURE__ */ jsx(InsertThematicBreak, {})
|
|
19838
|
-
] })
|
|
19839
|
-
})
|
|
19840
|
-
]
|
|
19841
|
-
}
|
|
19842
|
-
) }),
|
|
19843
|
-
/* @__PURE__ */ jsx(
|
|
19844
|
-
InputResponse_default,
|
|
19845
|
-
{
|
|
19846
|
-
name: field.name,
|
|
19847
|
-
visibility: meta.touched && meta.error ? true : false,
|
|
19848
|
-
variant: "danger"
|
|
19849
|
-
}
|
|
19850
|
-
)
|
|
19851
|
-
] });
|
|
19852
|
-
}
|
|
19853
|
-
var MarkdownEditor_default = MarkdownEditor;
|
|
19854
|
-
var MarkdownContext = createContext(null);
|
|
19855
|
-
|
|
19856
|
-
// src/components/markdown/hooks/useMarkdown.tsx
|
|
19857
|
-
function useMarkdown() {
|
|
19858
|
-
return useContext(MarkdownContext);
|
|
19859
|
-
}
|
|
19860
|
-
|
|
19861
|
-
// src/components/markdown/utils/generateHeadingNumbers.ts
|
|
19862
|
-
function generateHeadingNumbers(headings) {
|
|
19863
|
-
const counters = [0, 0, 0, 0, 0, 0];
|
|
19864
|
-
return headings.map((heading) => {
|
|
19865
|
-
const level = heading.level;
|
|
19866
|
-
counters[level - 1]++;
|
|
19867
|
-
for (let i = level; i < counters.length; i++) {
|
|
19868
|
-
counters[i] = 0;
|
|
19869
|
-
}
|
|
19870
|
-
const numbering = counters.slice(0, level).filter((n) => n > 0).join(".");
|
|
19871
|
-
return {
|
|
19872
|
-
...heading,
|
|
19873
|
-
numbering
|
|
19874
|
-
};
|
|
19875
|
-
});
|
|
19876
|
-
}
|
|
19877
|
-
|
|
19878
|
-
// src/components/markdown/utils/sanitizeHeading.ts
|
|
19879
|
-
function sanitizeHeading(text) {
|
|
19880
|
-
return text.replace(/[^\p{L}\p{N}\p{P}\p{Z}]/gu, "").replace(/\s+/g, " ").trim();
|
|
19881
|
-
}
|
|
19882
|
-
function MarkdownTOC({ title = "Table of Contents" }) {
|
|
19883
|
-
const context = useMarkdown();
|
|
19884
|
-
if (!context) {
|
|
19885
|
-
return null;
|
|
19886
|
-
}
|
|
19887
|
-
const { headings, activeHeading } = context;
|
|
19888
|
-
const numberedHeadings = generateHeadingNumbers(headings);
|
|
19889
|
-
const scrollToHeading = (id) => {
|
|
19890
|
-
const element = document.getElementById(id);
|
|
19891
|
-
if (!element) return;
|
|
19892
|
-
element.scrollIntoView({
|
|
19893
|
-
behavior: "smooth",
|
|
19894
|
-
block: "start"
|
|
19895
|
-
});
|
|
19896
|
-
};
|
|
19897
|
-
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
19898
|
-
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
|
|
19899
|
-
"h2",
|
|
19900
|
-
{
|
|
19901
|
-
className: "\n text-sm\n font-semibold\n uppercase\n tracking-wide\n text-gray-900\n dark:text-gray-100\n ",
|
|
19902
|
-
children: title
|
|
19903
|
-
}
|
|
19904
|
-
) }),
|
|
19905
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1", children: numberedHeadings.map((heading) => /* @__PURE__ */ jsxs(
|
|
19906
|
-
"button",
|
|
19907
|
-
{
|
|
19908
|
-
onClick: () => scrollToHeading(heading.id),
|
|
19909
|
-
className: classNames17(
|
|
19910
|
-
"block w-full text-left text-sm transition-all ease-in-out duration-150",
|
|
19911
|
-
"hover:text-primary",
|
|
19912
|
-
activeHeading === heading.id ? "text-primary font-semibold underline" : "text-gray-500 dark:text-gray-400"
|
|
19913
|
-
),
|
|
19914
|
-
style: {
|
|
19915
|
-
paddingLeft: `${(heading.level - 1) * 12}px`
|
|
19916
|
-
},
|
|
19917
|
-
children: [
|
|
19918
|
-
/* @__PURE__ */ jsx("span", { className: "mr-2 opacity-70", children: heading.numbering }),
|
|
19919
|
-
/* @__PURE__ */ jsx("span", { children: sanitizeHeading(heading.text) })
|
|
19920
|
-
]
|
|
19921
|
-
},
|
|
19922
|
-
heading.id
|
|
19923
|
-
)) })
|
|
19924
|
-
] });
|
|
19925
|
-
}
|
|
19926
|
-
var MarkdownTOC_default = MarkdownTOC;
|
|
19927
|
-
function MarkdownViewer({ value }) {
|
|
19928
|
-
const { theme } = useTheme_default();
|
|
19929
|
-
const context = useMarkdown();
|
|
19930
|
-
const markdown = value ?? context?.markdown ?? "";
|
|
19931
|
-
const headings = context?.headings ?? [];
|
|
19932
|
-
const setActiveHeading = context?.setActiveHeading;
|
|
19933
|
-
useEffect(() => {
|
|
19934
|
-
const timeout = setTimeout(() => {
|
|
19935
|
-
headings.forEach((heading) => {
|
|
19936
|
-
const headingEls = document.querySelectorAll("h1,h2,h3,h4,h5,h6");
|
|
19937
|
-
headingEls.forEach((el) => {
|
|
19938
|
-
if (el.textContent?.trim() === heading.text.trim()) {
|
|
19939
|
-
el.id = heading.id;
|
|
19940
|
-
}
|
|
19941
|
-
});
|
|
19942
|
-
});
|
|
19943
|
-
if (!setActiveHeading) return;
|
|
19944
|
-
const observer = new IntersectionObserver(
|
|
19945
|
-
(entries) => {
|
|
19946
|
-
entries.forEach((entry) => {
|
|
19947
|
-
if (entry.isIntersecting) {
|
|
19948
|
-
setActiveHeading(entry.target.id);
|
|
19949
|
-
}
|
|
19950
|
-
});
|
|
19951
|
-
},
|
|
19952
|
-
{
|
|
19953
|
-
rootMargin: "-20% 0px -70% 0px"
|
|
19954
|
-
}
|
|
19955
|
-
);
|
|
19956
|
-
headings.forEach((heading) => {
|
|
19957
|
-
const el = document.getElementById(heading.id);
|
|
19958
|
-
if (el) {
|
|
19959
|
-
observer.observe(el);
|
|
19960
|
-
}
|
|
19961
|
-
});
|
|
19962
|
-
return () => observer.disconnect();
|
|
19963
|
-
}, 0);
|
|
19964
|
-
return () => clearTimeout(timeout);
|
|
19965
|
-
}, [headings, setActiveHeading]);
|
|
19966
|
-
return /* @__PURE__ */ jsx("div", { className: theme === "dark" ? "dark" : "", children: /* @__PURE__ */ jsx(
|
|
19967
|
-
MDXEditor,
|
|
19968
|
-
{
|
|
19969
|
-
markdown,
|
|
19970
|
-
readOnly: true,
|
|
19971
|
-
className: "markdown-body max-w-none",
|
|
19972
|
-
plugins: [
|
|
19973
|
-
headingsPlugin(),
|
|
19974
|
-
linkPlugin(),
|
|
19975
|
-
listsPlugin(),
|
|
19976
|
-
imagePlugin(),
|
|
19977
|
-
tablePlugin(),
|
|
19978
|
-
quotePlugin(),
|
|
19979
|
-
thematicBreakPlugin(),
|
|
19980
|
-
linkDialogPlugin({}),
|
|
19981
|
-
markdownShortcutPlugin(),
|
|
19982
|
-
frontmatterPlugin(),
|
|
19983
|
-
codeBlockPlugin({
|
|
19984
|
-
defaultCodeBlockLanguage: "txt",
|
|
19985
|
-
codeBlockEditorDescriptors: []
|
|
19986
|
-
}),
|
|
19987
|
-
codeMirrorPlugin({
|
|
19988
|
-
codeBlockLanguages: {
|
|
19989
|
-
js: "JavaScript",
|
|
19990
|
-
ts: "TypeScript",
|
|
19991
|
-
jsx: "React JSX",
|
|
19992
|
-
tsx: "React TSX",
|
|
19993
|
-
html: "HTML",
|
|
19994
|
-
css: "CSS",
|
|
19995
|
-
scss: "SCSS",
|
|
19996
|
-
json: "JSON",
|
|
19997
|
-
bash: "Bash",
|
|
19998
|
-
shell: "Shell",
|
|
19999
|
-
zsh: "ZSH",
|
|
20000
|
-
yaml: "YAML",
|
|
20001
|
-
yml: "YAML",
|
|
20002
|
-
md: "Markdown",
|
|
20003
|
-
py: "Python",
|
|
20004
|
-
java: "Java",
|
|
20005
|
-
cpp: "C++",
|
|
20006
|
-
c: "C",
|
|
20007
|
-
go: "Go",
|
|
20008
|
-
rust: "Rust",
|
|
20009
|
-
php: "PHP",
|
|
20010
|
-
sql: "SQL"
|
|
20011
|
-
}
|
|
20012
|
-
})
|
|
20013
|
-
]
|
|
20014
|
-
},
|
|
20015
|
-
markdown
|
|
20016
|
-
) });
|
|
20017
|
-
}
|
|
20018
|
-
var MarkdownViewer_default = MarkdownViewer;
|
|
20019
|
-
|
|
20020
|
-
// src/components/markdown/utils/slugify.ts
|
|
20021
|
-
function slugify(text) {
|
|
20022
|
-
return text.toLowerCase().trim().replace(/[^\w\s-]/g, "").replace(/\s+/g, "-");
|
|
20023
|
-
}
|
|
20024
|
-
|
|
20025
|
-
// src/components/markdown/utils/extractHeadings.ts
|
|
20026
|
-
function extractHeadings(markdown) {
|
|
20027
|
-
return markdown.split("\n").filter((line) => /^#{1,6}\s/.test(line)).map((line) => {
|
|
20028
|
-
const level = line.match(/^#+/)?.[0].length || 1;
|
|
20029
|
-
const text = line.replace(/^#{1,6}\s/, "");
|
|
20030
|
-
return {
|
|
20031
|
-
id: slugify(text),
|
|
20032
|
-
text,
|
|
20033
|
-
level
|
|
20034
|
-
};
|
|
20035
|
-
});
|
|
20036
|
-
}
|
|
20037
|
-
function MarkdownProvider({ markdown, children }) {
|
|
20038
|
-
const [activeHeading, setActiveHeading] = useState("");
|
|
20039
|
-
const headings = useMemo(() => extractHeadings(markdown), [markdown]);
|
|
20040
|
-
return /* @__PURE__ */ jsx(
|
|
20041
|
-
MarkdownContext.Provider,
|
|
20042
|
-
{
|
|
20043
|
-
value: {
|
|
20044
|
-
markdown,
|
|
20045
|
-
headings,
|
|
20046
|
-
activeHeading,
|
|
20047
|
-
setActiveHeading
|
|
20048
|
-
},
|
|
20049
|
-
children
|
|
20050
|
-
}
|
|
20051
|
-
);
|
|
20052
|
-
}
|
|
20053
|
-
var MarkdownProvider_default = MarkdownProvider;
|
|
20054
19822
|
function BreadcrumbItem({
|
|
20055
19823
|
title,
|
|
20056
19824
|
href = "#",
|
|
@@ -20062,7 +19830,7 @@ function BreadcrumbItem({
|
|
|
20062
19830
|
{
|
|
20063
19831
|
href,
|
|
20064
19832
|
onClick,
|
|
20065
|
-
className:
|
|
19833
|
+
className: classNames66({
|
|
20066
19834
|
"text-lg font-semibold": true,
|
|
20067
19835
|
"text-gray-400 hover:text-gray-600 cursor-pointer": !active,
|
|
20068
19836
|
"text-eui-light-800": active,
|
|
@@ -20139,7 +19907,7 @@ var Breadcrumb = ({
|
|
|
20139
19907
|
index < resolvedData.length - 1 && /* @__PURE__ */ jsx(
|
|
20140
19908
|
"span",
|
|
20141
19909
|
{
|
|
20142
|
-
className:
|
|
19910
|
+
className: classNames66({
|
|
20143
19911
|
"text-lg font-semibold text-gray-500": true,
|
|
20144
19912
|
[`px-${gap}`]: gap
|
|
20145
19913
|
}),
|
|
@@ -20153,7 +19921,7 @@ var Breadcrumb = ({
|
|
|
20153
19921
|
return /* @__PURE__ */ jsx(
|
|
20154
19922
|
"div",
|
|
20155
19923
|
{
|
|
20156
|
-
className:
|
|
19924
|
+
className: classNames66({
|
|
20157
19925
|
"inline-flex": true,
|
|
20158
19926
|
[`${styles}`]: styles
|
|
20159
19927
|
}),
|
|
@@ -20185,7 +19953,7 @@ var Drawer = ({
|
|
|
20185
19953
|
isMobile && showBackdrop && /* @__PURE__ */ jsx(TransitionFade_default, { visibility, leaveDuration: 200, children: /* @__PURE__ */ jsx(
|
|
20186
19954
|
"div",
|
|
20187
19955
|
{
|
|
20188
|
-
className:
|
|
19956
|
+
className: classNames66(
|
|
20189
19957
|
"fixed inset-0 bg-black/50 z-40",
|
|
20190
19958
|
backdropStyles
|
|
20191
19959
|
),
|
|
@@ -20196,7 +19964,7 @@ var Drawer = ({
|
|
|
20196
19964
|
"div",
|
|
20197
19965
|
{
|
|
20198
19966
|
style: drawerStyle,
|
|
20199
|
-
className:
|
|
19967
|
+
className: classNames66(
|
|
20200
19968
|
"fixed shadow-lg z-50",
|
|
20201
19969
|
{
|
|
20202
19970
|
"h-full w-[300px] top-0": isHorizontal && !hasOffset,
|
|
@@ -20225,7 +19993,7 @@ function DrawerToggler({
|
|
|
20225
19993
|
return /* @__PURE__ */ jsx(
|
|
20226
19994
|
"div",
|
|
20227
19995
|
{
|
|
20228
|
-
className:
|
|
19996
|
+
className: classNames66({
|
|
20229
19997
|
"text-xl p-3 cursor-pointer": true,
|
|
20230
19998
|
"transition-all ease-in-out": true,
|
|
20231
19999
|
"text-eui-dark-500 dark:text-eui-secondary-600": !styles,
|
|
@@ -20273,7 +20041,7 @@ function FooterNav({ data = [], styles }) {
|
|
|
20273
20041
|
childrenContent = /* @__PURE__ */ jsx(
|
|
20274
20042
|
"div",
|
|
20275
20043
|
{
|
|
20276
|
-
className:
|
|
20044
|
+
className: classNames66({
|
|
20277
20045
|
"grid w-full": true,
|
|
20278
20046
|
"grid-cols-1": isMobile,
|
|
20279
20047
|
"grid-cols-3": !isMobile,
|
|
@@ -20286,7 +20054,7 @@ function FooterNav({ data = [], styles }) {
|
|
|
20286
20054
|
return /* @__PURE__ */ jsx(
|
|
20287
20055
|
"div",
|
|
20288
20056
|
{
|
|
20289
|
-
className:
|
|
20057
|
+
className: classNames66({
|
|
20290
20058
|
[`${styles}`]: styles
|
|
20291
20059
|
}),
|
|
20292
20060
|
children: childrenContent
|
|
@@ -20327,7 +20095,7 @@ var FooterNavGroup = ({
|
|
|
20327
20095
|
/* @__PURE__ */ jsx(
|
|
20328
20096
|
"div",
|
|
20329
20097
|
{
|
|
20330
|
-
className:
|
|
20098
|
+
className: classNames66({
|
|
20331
20099
|
"": true,
|
|
20332
20100
|
"py-2 font-semibold eui-text-lg": !styles,
|
|
20333
20101
|
[`${styles}`]: styles
|
|
@@ -20372,7 +20140,7 @@ var FooterNavItem = ({
|
|
|
20372
20140
|
"div",
|
|
20373
20141
|
{
|
|
20374
20142
|
onClick: handleNavigation,
|
|
20375
|
-
className:
|
|
20143
|
+
className: classNames66({
|
|
20376
20144
|
"flex flex-row items-center gap-3 cursor-pointer p-1 w-full": true,
|
|
20377
20145
|
"transition-all duration-200 ease-in-out": true,
|
|
20378
20146
|
"text-sm eui-text-sm": !styles,
|
|
@@ -20401,7 +20169,7 @@ var FooterNavItemTitle = ({
|
|
|
20401
20169
|
return /* @__PURE__ */ jsx(
|
|
20402
20170
|
"div",
|
|
20403
20171
|
{
|
|
20404
|
-
className:
|
|
20172
|
+
className: classNames66({
|
|
20405
20173
|
"": true,
|
|
20406
20174
|
"py-2 font-thin eui-text-md": !styles,
|
|
20407
20175
|
[`${styles}`]: styles
|
|
@@ -20454,7 +20222,7 @@ function HeaderNav({ data = [], styles }) {
|
|
|
20454
20222
|
return /* @__PURE__ */ jsx(
|
|
20455
20223
|
"div",
|
|
20456
20224
|
{
|
|
20457
|
-
className:
|
|
20225
|
+
className: classNames66({
|
|
20458
20226
|
[`${styles}`]: styles
|
|
20459
20227
|
}),
|
|
20460
20228
|
children: childrenContent
|
|
@@ -20464,7 +20232,7 @@ function HeaderNav({ data = [], styles }) {
|
|
|
20464
20232
|
var HeaderNav_default = HeaderNav;
|
|
20465
20233
|
function useClickOutside(ref, fun) {
|
|
20466
20234
|
useEffect(() => {
|
|
20467
|
-
const
|
|
20235
|
+
const listener2 = (e) => {
|
|
20468
20236
|
if (!ref.current || ref.current.contains(e.target)) {
|
|
20469
20237
|
return;
|
|
20470
20238
|
}
|
|
@@ -20472,11 +20240,11 @@ function useClickOutside(ref, fun) {
|
|
|
20472
20240
|
fun();
|
|
20473
20241
|
}
|
|
20474
20242
|
};
|
|
20475
|
-
document.addEventListener("mousedown",
|
|
20476
|
-
document.addEventListener("touchstart",
|
|
20243
|
+
document.addEventListener("mousedown", listener2);
|
|
20244
|
+
document.addEventListener("touchstart", listener2);
|
|
20477
20245
|
return () => {
|
|
20478
|
-
document.removeEventListener("mousedown",
|
|
20479
|
-
document.removeEventListener("touchstart",
|
|
20246
|
+
document.removeEventListener("mousedown", listener2);
|
|
20247
|
+
document.removeEventListener("touchstart", listener2);
|
|
20480
20248
|
};
|
|
20481
20249
|
}, [ref, fun]);
|
|
20482
20250
|
}
|
|
@@ -20516,7 +20284,7 @@ var HeaderNavGroup = ({
|
|
|
20516
20284
|
/* @__PURE__ */ jsxs(
|
|
20517
20285
|
"div",
|
|
20518
20286
|
{
|
|
20519
|
-
className:
|
|
20287
|
+
className: classNames66({
|
|
20520
20288
|
"flex flex-row gap-2 items-center justify-between cursor-pointer p-3 w-full": true,
|
|
20521
20289
|
"transition-all duration-300 ease-in-out": true,
|
|
20522
20290
|
"eui-text-md bg-gradient-to-t from-eui-dark-500/10 dark:from-green-700/10": !styles,
|
|
@@ -20544,7 +20312,7 @@ var HeaderNavGroup = ({
|
|
|
20544
20312
|
children && /* @__PURE__ */ jsx(
|
|
20545
20313
|
BsChevronDown,
|
|
20546
20314
|
{
|
|
20547
|
-
className:
|
|
20315
|
+
className: classNames66({
|
|
20548
20316
|
"text-md": true,
|
|
20549
20317
|
"transition-all ease-in-out duration-300": true,
|
|
20550
20318
|
"rotate-180": !collapsed
|
|
@@ -20557,7 +20325,7 @@ var HeaderNavGroup = ({
|
|
|
20557
20325
|
!collapsed && children && /* @__PURE__ */ jsx(
|
|
20558
20326
|
"div",
|
|
20559
20327
|
{
|
|
20560
|
-
className:
|
|
20328
|
+
className: classNames66({
|
|
20561
20329
|
"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,
|
|
20562
20330
|
"transition-all duration-300 ease-in-out": true
|
|
20563
20331
|
}),
|
|
@@ -20587,7 +20355,7 @@ var HeaderNavItem = ({
|
|
|
20587
20355
|
"div",
|
|
20588
20356
|
{
|
|
20589
20357
|
onClick: handleNavigation,
|
|
20590
|
-
className:
|
|
20358
|
+
className: classNames66({
|
|
20591
20359
|
"flex flex-row items-center gap-3 cursor-pointer p-3 w-full": true,
|
|
20592
20360
|
"transition-all duration-200 ease-in-out": true,
|
|
20593
20361
|
"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,
|
|
@@ -20616,7 +20384,7 @@ var HeaderNavItemTitle = ({
|
|
|
20616
20384
|
return /* @__PURE__ */ jsx(
|
|
20617
20385
|
"div",
|
|
20618
20386
|
{
|
|
20619
|
-
className:
|
|
20387
|
+
className: classNames66({
|
|
20620
20388
|
"p-3 font-thin": true,
|
|
20621
20389
|
"eui-text-md": !styles,
|
|
20622
20390
|
[`${styles}`]: styles
|
|
@@ -20656,7 +20424,7 @@ var Link = ({
|
|
|
20656
20424
|
href: href || "#",
|
|
20657
20425
|
target: targets[target],
|
|
20658
20426
|
onClick: handleClick,
|
|
20659
|
-
className:
|
|
20427
|
+
className: classNames66({
|
|
20660
20428
|
[`${textVariants[variant]}`]: variant,
|
|
20661
20429
|
[`${decorations[decoration]}`]: decoration,
|
|
20662
20430
|
"font-bold": bold,
|
|
@@ -21306,7 +21074,7 @@ function Modal({
|
|
|
21306
21074
|
"div",
|
|
21307
21075
|
{
|
|
21308
21076
|
ref: modalRef,
|
|
21309
|
-
className:
|
|
21077
|
+
className: classNames66(
|
|
21310
21078
|
"eui-bg-md eui-shadow-lg border border-gray-700/80 w-fit h-fit",
|
|
21311
21079
|
shapes[resolvedShape],
|
|
21312
21080
|
styles
|
|
@@ -21318,7 +21086,7 @@ function Modal({
|
|
|
21318
21086
|
"button",
|
|
21319
21087
|
{
|
|
21320
21088
|
type: "button",
|
|
21321
|
-
className:
|
|
21089
|
+
className: classNames66(
|
|
21322
21090
|
"w-[60px] h-[60px] flex items-center justify-center transition-standard-fast",
|
|
21323
21091
|
"hover:cursor-pointer hover:bg-eui-dark-500"
|
|
21324
21092
|
),
|
|
@@ -21452,7 +21220,7 @@ function ShowMore({ text, limit }) {
|
|
|
21452
21220
|
/* @__PURE__ */ jsx(
|
|
21453
21221
|
"div",
|
|
21454
21222
|
{
|
|
21455
|
-
className:
|
|
21223
|
+
className: classNames66({
|
|
21456
21224
|
"text-blue-300 px-1 pb-1 mt-1": true,
|
|
21457
21225
|
"bg-slate-900/70": !showMore,
|
|
21458
21226
|
"bg-gradient-to-t from-slate-900/50 to-transparent": showMore
|
|
@@ -21768,6 +21536,14 @@ var useModal = () => {
|
|
|
21768
21536
|
};
|
|
21769
21537
|
};
|
|
21770
21538
|
var useModal_default = useModal;
|
|
21539
|
+
var useTheme = () => {
|
|
21540
|
+
const context = useContext(ThemeContext);
|
|
21541
|
+
if (!context) {
|
|
21542
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
21543
|
+
}
|
|
21544
|
+
return context;
|
|
21545
|
+
};
|
|
21546
|
+
var useTheme_default = useTheme;
|
|
21771
21547
|
function CommentMenuItem({
|
|
21772
21548
|
icon,
|
|
21773
21549
|
name,
|
|
@@ -22343,11 +22119,78 @@ function DataViewTable({
|
|
|
22343
22119
|
);
|
|
22344
22120
|
}
|
|
22345
22121
|
var DataViewTable_default = DataViewTable;
|
|
22346
|
-
function
|
|
22347
|
-
|
|
22348
|
-
|
|
22349
|
-
|
|
22350
|
-
|
|
22122
|
+
function toCssSize(value) {
|
|
22123
|
+
if (typeof value === "number") return `${value}px`;
|
|
22124
|
+
return value;
|
|
22125
|
+
}
|
|
22126
|
+
function DocumentationPanel({
|
|
22127
|
+
value,
|
|
22128
|
+
toc = true,
|
|
22129
|
+
height = "100vh",
|
|
22130
|
+
viewerClassName,
|
|
22131
|
+
contentClassName,
|
|
22132
|
+
tocClassName,
|
|
22133
|
+
className,
|
|
22134
|
+
contentMaxWidthClassName = "max-w-4xl"
|
|
22135
|
+
}) {
|
|
22136
|
+
return /* @__PURE__ */ jsx(MarkdownProvider_default, { markdown: value, children: /* @__PURE__ */ jsxs(
|
|
22137
|
+
"section",
|
|
22138
|
+
{
|
|
22139
|
+
className: classNames66(
|
|
22140
|
+
"eui-documentation-panel",
|
|
22141
|
+
"min-h-0 overflow-hidden bg-white text-gray-900",
|
|
22142
|
+
"dark:bg-gray-950 dark:text-gray-100",
|
|
22143
|
+
toc ? "grid grid-cols-1 lg:grid-cols-[minmax(0,1fr)_280px]" : "grid grid-cols-1",
|
|
22144
|
+
className
|
|
22145
|
+
),
|
|
22146
|
+
style: {
|
|
22147
|
+
height: toCssSize(height)
|
|
22148
|
+
},
|
|
22149
|
+
children: [
|
|
22150
|
+
/* @__PURE__ */ jsx(
|
|
22151
|
+
"main",
|
|
22152
|
+
{
|
|
22153
|
+
className: classNames66(
|
|
22154
|
+
"eui-documentation-panel-viewer",
|
|
22155
|
+
"documentation-panel-scrollbar min-w-0 overflow-y-auto scroll-smooth",
|
|
22156
|
+
viewerClassName
|
|
22157
|
+
),
|
|
22158
|
+
children: /* @__PURE__ */ jsx(
|
|
22159
|
+
"div",
|
|
22160
|
+
{
|
|
22161
|
+
className: classNames66(
|
|
22162
|
+
"mx-auto px-5 py-8 sm:px-6 lg:px-8",
|
|
22163
|
+
contentMaxWidthClassName,
|
|
22164
|
+
contentClassName
|
|
22165
|
+
),
|
|
22166
|
+
children: /* @__PURE__ */ jsx(MarkdownViewer_default, {})
|
|
22167
|
+
}
|
|
22168
|
+
)
|
|
22169
|
+
}
|
|
22170
|
+
),
|
|
22171
|
+
toc ? /* @__PURE__ */ jsx(
|
|
22172
|
+
"aside",
|
|
22173
|
+
{
|
|
22174
|
+
className: classNames66(
|
|
22175
|
+
"eui-documentation-panel-toc",
|
|
22176
|
+
"hidden min-w-0 border-l border-gray-200 bg-white lg:block",
|
|
22177
|
+
"dark:border-gray-800 dark:bg-gray-950",
|
|
22178
|
+
tocClassName
|
|
22179
|
+
),
|
|
22180
|
+
children: /* @__PURE__ */ jsx(
|
|
22181
|
+
"div",
|
|
22182
|
+
{
|
|
22183
|
+
className: classNames66(
|
|
22184
|
+
"documentation-panel-scrollbar h-full overflow-y-auto px-5 py-8"
|
|
22185
|
+
),
|
|
22186
|
+
children: /* @__PURE__ */ jsx("div", { className: "sticky top-0", children: /* @__PURE__ */ jsx(MarkdownTOC_default, {}) })
|
|
22187
|
+
}
|
|
22188
|
+
)
|
|
22189
|
+
}
|
|
22190
|
+
) : null
|
|
22191
|
+
]
|
|
22192
|
+
}
|
|
22193
|
+
) });
|
|
22351
22194
|
}
|
|
22352
22195
|
var DocumentationPanel_default = DocumentationPanel;
|
|
22353
22196
|
function SliderItem({
|
|
@@ -22523,7 +22366,7 @@ function WorldMapCountryTable({
|
|
|
22523
22366
|
}) {
|
|
22524
22367
|
const enrichedData = useMemo(() => {
|
|
22525
22368
|
const mapped = data.map((item) => {
|
|
22526
|
-
const countryMeta = COUNTRIES.find((
|
|
22369
|
+
const countryMeta = COUNTRIES.find((c2) => c2.code === item.code);
|
|
22527
22370
|
return {
|
|
22528
22371
|
code: item.code,
|
|
22529
22372
|
value: item.value,
|
|
@@ -22613,7 +22456,7 @@ function BoxNavItem({ icon, name, to, selected, onClick }) {
|
|
|
22613
22456
|
type: "button",
|
|
22614
22457
|
onClick: handleClick,
|
|
22615
22458
|
"aria-current": selected ? "page" : void 0,
|
|
22616
|
-
className:
|
|
22459
|
+
className: classNames66(
|
|
22617
22460
|
"w-full min-w-[80px] flex flex-col items-center justify-center py-3 text-center",
|
|
22618
22461
|
"hover:text-secondary-700 hover:bg-gray-300/10 hover:cursor-pointer",
|
|
22619
22462
|
selected ? "text-eui-secondary-700 bg-gray-300/10" : "text-gray-400",
|
|
@@ -24522,6 +24365,2531 @@ function ReviewThread({
|
|
|
24522
24365
|
] });
|
|
24523
24366
|
}
|
|
24524
24367
|
var ReviewThread_default = ReviewThread;
|
|
24368
|
+
var MarkdownContext = createContext(null);
|
|
24369
|
+
|
|
24370
|
+
// src/compositions/markdown/utils/sanitizeHeading.ts
|
|
24371
|
+
function sanitizeHeading(text, options = {}) {
|
|
24372
|
+
const {
|
|
24373
|
+
removeMarkdownSyntax = true,
|
|
24374
|
+
removeHtmlTags = true,
|
|
24375
|
+
collapseWhitespace = true
|
|
24376
|
+
} = options;
|
|
24377
|
+
let value = String(text || "");
|
|
24378
|
+
if (removeHtmlTags) {
|
|
24379
|
+
value = value.replace(/<[^>]*>/g, "");
|
|
24380
|
+
}
|
|
24381
|
+
if (removeMarkdownSyntax) {
|
|
24382
|
+
value = value.replace(/!\[([^\]]*)\]\([^)]+\)/g, "$1").replace(/\[([^\]]+)\]\([^)]+\)/g, "$1").replace(/\[([^\]]+)\]\[[^\]]+\]/g, "$1").replace(/`([^`]+)`/g, "$1").replace(/[*_~]+/g, "").replace(/\\([\\`*{}\[\]()#+\-.!_>])/g, "$1");
|
|
24383
|
+
}
|
|
24384
|
+
value = value.replace(/[\u0000-\u001F\u007F]/g, "");
|
|
24385
|
+
if (collapseWhitespace) {
|
|
24386
|
+
value = value.replace(/\s+/g, " ");
|
|
24387
|
+
}
|
|
24388
|
+
return value.trim();
|
|
24389
|
+
}
|
|
24390
|
+
|
|
24391
|
+
// src/compositions/markdown/utils/createHeadingSlug.ts
|
|
24392
|
+
function escapeRegExp(value) {
|
|
24393
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
24394
|
+
}
|
|
24395
|
+
function createHeadingSlug(text, options = {}) {
|
|
24396
|
+
const {
|
|
24397
|
+
separator = "-",
|
|
24398
|
+
fallback = "heading",
|
|
24399
|
+
slugCounts,
|
|
24400
|
+
existingSlugs
|
|
24401
|
+
} = options;
|
|
24402
|
+
const escapedSeparator = escapeRegExp(separator);
|
|
24403
|
+
const sanitized = sanitizeHeading(text);
|
|
24404
|
+
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;
|
|
24405
|
+
if (slugCounts) {
|
|
24406
|
+
const count = slugCounts.get(baseSlug) ?? 0;
|
|
24407
|
+
slugCounts.set(baseSlug, count + 1);
|
|
24408
|
+
return count === 0 ? baseSlug : `${baseSlug}${separator}${count}`;
|
|
24409
|
+
}
|
|
24410
|
+
if (existingSlugs) {
|
|
24411
|
+
let slug = baseSlug;
|
|
24412
|
+
let count = 1;
|
|
24413
|
+
while (existingSlugs.has(slug)) {
|
|
24414
|
+
slug = `${baseSlug}${separator}${count}`;
|
|
24415
|
+
count++;
|
|
24416
|
+
}
|
|
24417
|
+
existingSlugs.add(slug);
|
|
24418
|
+
return slug;
|
|
24419
|
+
}
|
|
24420
|
+
return baseSlug;
|
|
24421
|
+
}
|
|
24422
|
+
function slugify(text) {
|
|
24423
|
+
return createHeadingSlug(text);
|
|
24424
|
+
}
|
|
24425
|
+
|
|
24426
|
+
// src/compositions/markdown/utils/normalizeMarkdown.ts
|
|
24427
|
+
function normalizeMarkdown(markdown, options = {}) {
|
|
24428
|
+
const {
|
|
24429
|
+
removeBom = true,
|
|
24430
|
+
normalizeLineEndings = true,
|
|
24431
|
+
trimStart = false,
|
|
24432
|
+
trimEnd = false,
|
|
24433
|
+
collapseBlankLines = false,
|
|
24434
|
+
finalNewline = false
|
|
24435
|
+
} = options;
|
|
24436
|
+
let value = String(markdown ?? "");
|
|
24437
|
+
if (removeBom) {
|
|
24438
|
+
value = value.replace(/^\uFEFF/, "");
|
|
24439
|
+
}
|
|
24440
|
+
if (normalizeLineEndings) {
|
|
24441
|
+
value = value.replace(/\r\n?/g, "\n");
|
|
24442
|
+
}
|
|
24443
|
+
if (trimStart) {
|
|
24444
|
+
value = value.trimStart();
|
|
24445
|
+
}
|
|
24446
|
+
if (trimEnd) {
|
|
24447
|
+
value = value.trimEnd();
|
|
24448
|
+
}
|
|
24449
|
+
if (collapseBlankLines) {
|
|
24450
|
+
value = value.replace(/\n{3,}/g, "\n\n");
|
|
24451
|
+
}
|
|
24452
|
+
if (finalNewline && value && !value.endsWith("\n")) {
|
|
24453
|
+
value += "\n";
|
|
24454
|
+
}
|
|
24455
|
+
return value;
|
|
24456
|
+
}
|
|
24457
|
+
|
|
24458
|
+
// src/compositions/markdown/utils/extractHeadings.ts
|
|
24459
|
+
function getFenceState(line) {
|
|
24460
|
+
const match = line.match(/^\s{0,3}(`{3,}|~{3,})/);
|
|
24461
|
+
if (!match) return null;
|
|
24462
|
+
const fence = match[1];
|
|
24463
|
+
return {
|
|
24464
|
+
marker: fence[0],
|
|
24465
|
+
length: fence.length
|
|
24466
|
+
};
|
|
24467
|
+
}
|
|
24468
|
+
function closesFence(line, fence) {
|
|
24469
|
+
const match = line.match(/^\s{0,3}(`{3,}|~{3,})\s*$/);
|
|
24470
|
+
if (!match) return false;
|
|
24471
|
+
const closingFence = match[1];
|
|
24472
|
+
return closingFence[0] === fence.marker && closingFence.length >= fence.length;
|
|
24473
|
+
}
|
|
24474
|
+
function isSetextUnderline(line) {
|
|
24475
|
+
if (/^\s{0,3}=+\s*$/.test(line)) {
|
|
24476
|
+
return 1;
|
|
24477
|
+
}
|
|
24478
|
+
if (/^\s{0,3}-+\s*$/.test(line)) {
|
|
24479
|
+
return 2;
|
|
24480
|
+
}
|
|
24481
|
+
return null;
|
|
24482
|
+
}
|
|
24483
|
+
function extractAtxHeading(line) {
|
|
24484
|
+
const match = line.match(/^\s{0,3}(#{1,6})(?:\s+|$)(.*)$/);
|
|
24485
|
+
if (!match) return null;
|
|
24486
|
+
const level = match[1].length;
|
|
24487
|
+
const rawText = match[2].replace(/\s+#+\s*$/, "").trim();
|
|
24488
|
+
return {
|
|
24489
|
+
level,
|
|
24490
|
+
text: sanitizeHeading(rawText)
|
|
24491
|
+
};
|
|
24492
|
+
}
|
|
24493
|
+
function extractHeadings(markdown, options = {}) {
|
|
24494
|
+
const {
|
|
24495
|
+
minDepth = 1,
|
|
24496
|
+
maxDepth = 6,
|
|
24497
|
+
includeSetextHeadings = true,
|
|
24498
|
+
idPrefix = ""
|
|
24499
|
+
} = options;
|
|
24500
|
+
const normalizedMarkdown = normalizeMarkdown(markdown);
|
|
24501
|
+
const lines = normalizedMarkdown.split("\n");
|
|
24502
|
+
const headings = [];
|
|
24503
|
+
const slugCounts = /* @__PURE__ */ new Map();
|
|
24504
|
+
let activeFence = null;
|
|
24505
|
+
for (let index = 0; index < lines.length; index++) {
|
|
24506
|
+
const line = lines[index];
|
|
24507
|
+
const fence = getFenceState(line);
|
|
24508
|
+
if (activeFence) {
|
|
24509
|
+
if (closesFence(line, activeFence)) {
|
|
24510
|
+
activeFence = null;
|
|
24511
|
+
}
|
|
24512
|
+
continue;
|
|
24513
|
+
}
|
|
24514
|
+
if (fence) {
|
|
24515
|
+
activeFence = fence;
|
|
24516
|
+
continue;
|
|
24517
|
+
}
|
|
24518
|
+
const atxHeading = extractAtxHeading(line);
|
|
24519
|
+
if (atxHeading) {
|
|
24520
|
+
const { level, text: text2 } = atxHeading;
|
|
24521
|
+
if (level >= minDepth && level <= maxDepth && text2) {
|
|
24522
|
+
const id = createHeadingSlug(text2, { slugCounts });
|
|
24523
|
+
headings.push({
|
|
24524
|
+
id: `${idPrefix}${id}`,
|
|
24525
|
+
text: text2,
|
|
24526
|
+
level
|
|
24527
|
+
});
|
|
24528
|
+
}
|
|
24529
|
+
continue;
|
|
24530
|
+
}
|
|
24531
|
+
if (!includeSetextHeadings) {
|
|
24532
|
+
continue;
|
|
24533
|
+
}
|
|
24534
|
+
const nextLine = lines[index + 1];
|
|
24535
|
+
if (!nextLine) {
|
|
24536
|
+
continue;
|
|
24537
|
+
}
|
|
24538
|
+
const setextLevel = isSetextUnderline(nextLine);
|
|
24539
|
+
if (!setextLevel) {
|
|
24540
|
+
continue;
|
|
24541
|
+
}
|
|
24542
|
+
const text = sanitizeHeading(line);
|
|
24543
|
+
if (!text) {
|
|
24544
|
+
continue;
|
|
24545
|
+
}
|
|
24546
|
+
if (setextLevel >= minDepth && setextLevel <= maxDepth) {
|
|
24547
|
+
const id = createHeadingSlug(text, { slugCounts });
|
|
24548
|
+
headings.push({
|
|
24549
|
+
id: `${idPrefix}${id}`,
|
|
24550
|
+
text,
|
|
24551
|
+
level: setextLevel
|
|
24552
|
+
});
|
|
24553
|
+
}
|
|
24554
|
+
index++;
|
|
24555
|
+
}
|
|
24556
|
+
return headings;
|
|
24557
|
+
}
|
|
24558
|
+
|
|
24559
|
+
// src/compositions/markdown/utils/generateHeadingNumbers.ts
|
|
24560
|
+
function generateHeadingNumbers(headings, options = {}) {
|
|
24561
|
+
const { minDepth = 1, maxDepth = 6, separator = "." } = options;
|
|
24562
|
+
const counters = [0, 0, 0, 0, 0, 0];
|
|
24563
|
+
return headings.filter((heading) => {
|
|
24564
|
+
return heading.level >= minDepth && heading.level <= maxDepth;
|
|
24565
|
+
}).map((heading) => {
|
|
24566
|
+
const level = Math.min(Math.max(heading.level, 1), 6);
|
|
24567
|
+
counters[level - 1]++;
|
|
24568
|
+
for (let index = level; index < counters.length; index++) {
|
|
24569
|
+
counters[index] = 0;
|
|
24570
|
+
}
|
|
24571
|
+
const numbering = counters.slice(0, level).filter((count) => count > 0).join(separator);
|
|
24572
|
+
return {
|
|
24573
|
+
...heading,
|
|
24574
|
+
numbering
|
|
24575
|
+
};
|
|
24576
|
+
});
|
|
24577
|
+
}
|
|
24578
|
+
function MarkdownProvider({
|
|
24579
|
+
children,
|
|
24580
|
+
markdown,
|
|
24581
|
+
value,
|
|
24582
|
+
headings: externalHeadings,
|
|
24583
|
+
meta,
|
|
24584
|
+
activeHeading: controlledActiveHeading,
|
|
24585
|
+
defaultActiveHeading = "",
|
|
24586
|
+
onActiveHeadingChange
|
|
24587
|
+
}) {
|
|
24588
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
24589
|
+
const [internalActiveHeading, setInternalActiveHeading] = useState(defaultActiveHeading);
|
|
24590
|
+
const headings = useMemo(() => {
|
|
24591
|
+
if (externalHeadings) {
|
|
24592
|
+
return externalHeadings;
|
|
24593
|
+
}
|
|
24594
|
+
return extractHeadings(resolvedMarkdown);
|
|
24595
|
+
}, [externalHeadings, resolvedMarkdown]);
|
|
24596
|
+
const numberedHeadings = useMemo(() => {
|
|
24597
|
+
return generateHeadingNumbers(headings);
|
|
24598
|
+
}, [headings]);
|
|
24599
|
+
const headingMap = useMemo(() => {
|
|
24600
|
+
return headings.reduce((acc, heading) => {
|
|
24601
|
+
acc[heading.id] = heading;
|
|
24602
|
+
return acc;
|
|
24603
|
+
}, {});
|
|
24604
|
+
}, [headings]);
|
|
24605
|
+
const activeHeading = controlledActiveHeading ?? internalActiveHeading;
|
|
24606
|
+
const getHeadingById = useCallback(
|
|
24607
|
+
(id) => {
|
|
24608
|
+
return headingMap[id];
|
|
24609
|
+
},
|
|
24610
|
+
[headingMap]
|
|
24611
|
+
);
|
|
24612
|
+
const setActiveHeading = useCallback(
|
|
24613
|
+
(id) => {
|
|
24614
|
+
if (controlledActiveHeading === void 0) {
|
|
24615
|
+
setInternalActiveHeading(id);
|
|
24616
|
+
}
|
|
24617
|
+
onActiveHeadingChange?.(id, headingMap[id]);
|
|
24618
|
+
},
|
|
24619
|
+
[controlledActiveHeading, headingMap, onActiveHeadingChange]
|
|
24620
|
+
);
|
|
24621
|
+
const contextValue = useMemo(
|
|
24622
|
+
() => ({
|
|
24623
|
+
markdown: resolvedMarkdown,
|
|
24624
|
+
headings,
|
|
24625
|
+
numberedHeadings,
|
|
24626
|
+
activeHeading,
|
|
24627
|
+
setActiveHeading,
|
|
24628
|
+
meta,
|
|
24629
|
+
getHeadingById
|
|
24630
|
+
}),
|
|
24631
|
+
[
|
|
24632
|
+
resolvedMarkdown,
|
|
24633
|
+
headings,
|
|
24634
|
+
numberedHeadings,
|
|
24635
|
+
activeHeading,
|
|
24636
|
+
setActiveHeading,
|
|
24637
|
+
meta,
|
|
24638
|
+
getHeadingById
|
|
24639
|
+
]
|
|
24640
|
+
);
|
|
24641
|
+
return /* @__PURE__ */ jsx(MarkdownContext.Provider, { value: contextValue, children });
|
|
24642
|
+
}
|
|
24643
|
+
var MarkdownProvider_default = MarkdownProvider;
|
|
24644
|
+
function useMarkdown(options = {}) {
|
|
24645
|
+
const { required = false, errorMessage } = options;
|
|
24646
|
+
const context = useContext(MarkdownContext);
|
|
24647
|
+
if (!context && required) {
|
|
24648
|
+
throw new Error(
|
|
24649
|
+
errorMessage || "useMarkdown must be used inside a MarkdownProvider."
|
|
24650
|
+
);
|
|
24651
|
+
}
|
|
24652
|
+
return context;
|
|
24653
|
+
}
|
|
24654
|
+
function useActiveHeading(options = {}) {
|
|
24655
|
+
const context = useMarkdown();
|
|
24656
|
+
const {
|
|
24657
|
+
headings: externalHeadings,
|
|
24658
|
+
activeHeading: controlledActiveHeading,
|
|
24659
|
+
defaultActiveHeading = "",
|
|
24660
|
+
enabled = true,
|
|
24661
|
+
root = null,
|
|
24662
|
+
rootMargin = "-20% 0px -70% 0px",
|
|
24663
|
+
threshold = 0,
|
|
24664
|
+
scrollBehavior = "smooth",
|
|
24665
|
+
scrollBlock = "start",
|
|
24666
|
+
onActiveHeadingChange
|
|
24667
|
+
} = options;
|
|
24668
|
+
const headings = externalHeadings ?? context?.headings ?? [];
|
|
24669
|
+
const [internalActiveHeading, setInternalActiveHeading] = useState(defaultActiveHeading);
|
|
24670
|
+
const activeHeading = controlledActiveHeading ?? context?.activeHeading ?? internalActiveHeading;
|
|
24671
|
+
const headingMap = useMemo(() => {
|
|
24672
|
+
return headings.reduce((acc, heading) => {
|
|
24673
|
+
acc[heading.id] = heading;
|
|
24674
|
+
return acc;
|
|
24675
|
+
}, {});
|
|
24676
|
+
}, [headings]);
|
|
24677
|
+
const setActiveHeading = useCallback(
|
|
24678
|
+
(id) => {
|
|
24679
|
+
if (controlledActiveHeading === void 0 && !context) {
|
|
24680
|
+
setInternalActiveHeading(id);
|
|
24681
|
+
}
|
|
24682
|
+
context?.setActiveHeading(id);
|
|
24683
|
+
onActiveHeadingChange?.(id, headingMap[id]);
|
|
24684
|
+
},
|
|
24685
|
+
[context, controlledActiveHeading, headingMap, onActiveHeadingChange]
|
|
24686
|
+
);
|
|
24687
|
+
const scrollToHeading = useCallback(
|
|
24688
|
+
(id) => {
|
|
24689
|
+
if (typeof document === "undefined") return;
|
|
24690
|
+
const element = document.getElementById(id);
|
|
24691
|
+
if (!element) return;
|
|
24692
|
+
element.scrollIntoView({
|
|
24693
|
+
behavior: scrollBehavior,
|
|
24694
|
+
block: scrollBlock
|
|
24695
|
+
});
|
|
24696
|
+
setActiveHeading(id);
|
|
24697
|
+
},
|
|
24698
|
+
[scrollBehavior, scrollBlock, setActiveHeading]
|
|
24699
|
+
);
|
|
24700
|
+
const observedHeadingIds = useMemo(() => {
|
|
24701
|
+
return headings.map((heading) => heading.id).join("|");
|
|
24702
|
+
}, [headings]);
|
|
24703
|
+
useEffect(() => {
|
|
24704
|
+
if (!enabled) return;
|
|
24705
|
+
if (typeof window === "undefined") return;
|
|
24706
|
+
if (!("IntersectionObserver" in window)) return;
|
|
24707
|
+
if (headings.length === 0) return;
|
|
24708
|
+
const elements = headings.map((heading) => document.getElementById(heading.id)).filter((element) => Boolean(element));
|
|
24709
|
+
if (elements.length === 0) return;
|
|
24710
|
+
const observer = new IntersectionObserver(
|
|
24711
|
+
(entries) => {
|
|
24712
|
+
const visibleEntries = entries.filter((entry) => entry.isIntersecting).sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
24713
|
+
const nextActiveId = visibleEntries[0]?.target.id;
|
|
24714
|
+
if (!nextActiveId) return;
|
|
24715
|
+
setActiveHeading(nextActiveId);
|
|
24716
|
+
},
|
|
24717
|
+
{
|
|
24718
|
+
root,
|
|
24719
|
+
rootMargin,
|
|
24720
|
+
threshold
|
|
24721
|
+
}
|
|
24722
|
+
);
|
|
24723
|
+
elements.forEach((element) => {
|
|
24724
|
+
observer.observe(element);
|
|
24725
|
+
});
|
|
24726
|
+
return () => {
|
|
24727
|
+
observer.disconnect();
|
|
24728
|
+
};
|
|
24729
|
+
}, [
|
|
24730
|
+
enabled,
|
|
24731
|
+
root,
|
|
24732
|
+
rootMargin,
|
|
24733
|
+
threshold,
|
|
24734
|
+
observedHeadingIds,
|
|
24735
|
+
headings,
|
|
24736
|
+
setActiveHeading
|
|
24737
|
+
]);
|
|
24738
|
+
return {
|
|
24739
|
+
activeHeading,
|
|
24740
|
+
setActiveHeading,
|
|
24741
|
+
scrollToHeading
|
|
24742
|
+
};
|
|
24743
|
+
}
|
|
24744
|
+
function useMarkdownHeadings(options = {}) {
|
|
24745
|
+
const context = useMarkdown();
|
|
24746
|
+
const {
|
|
24747
|
+
markdown,
|
|
24748
|
+
headings: externalHeadings,
|
|
24749
|
+
minDepth = 1,
|
|
24750
|
+
maxDepth = 6
|
|
24751
|
+
} = options;
|
|
24752
|
+
const baseHeadings = useMemo(() => {
|
|
24753
|
+
if (externalHeadings) {
|
|
24754
|
+
return externalHeadings;
|
|
24755
|
+
}
|
|
24756
|
+
if (markdown !== void 0) {
|
|
24757
|
+
return extractHeadings(markdown);
|
|
24758
|
+
}
|
|
24759
|
+
return context?.headings ?? [];
|
|
24760
|
+
}, [context?.headings, externalHeadings, markdown]);
|
|
24761
|
+
const headings = useMemo(() => {
|
|
24762
|
+
return baseHeadings.filter((heading) => {
|
|
24763
|
+
return heading.level >= minDepth && heading.level <= maxDepth;
|
|
24764
|
+
});
|
|
24765
|
+
}, [baseHeadings, minDepth, maxDepth]);
|
|
24766
|
+
const numberedHeadings = useMemo(() => {
|
|
24767
|
+
return generateHeadingNumbers(headings);
|
|
24768
|
+
}, [headings]);
|
|
24769
|
+
const headingMap = useMemo(() => {
|
|
24770
|
+
return headings.reduce((acc, heading) => {
|
|
24771
|
+
acc[heading.id] = heading;
|
|
24772
|
+
return acc;
|
|
24773
|
+
}, {});
|
|
24774
|
+
}, [headings]);
|
|
24775
|
+
const getHeadingById = (id) => {
|
|
24776
|
+
return headingMap[id];
|
|
24777
|
+
};
|
|
24778
|
+
return {
|
|
24779
|
+
headings,
|
|
24780
|
+
numberedHeadings,
|
|
24781
|
+
hasHeadings: headings.length > 0,
|
|
24782
|
+
getHeadingById
|
|
24783
|
+
};
|
|
24784
|
+
}
|
|
24785
|
+
function MarkdownHeading({
|
|
24786
|
+
id,
|
|
24787
|
+
level,
|
|
24788
|
+
children,
|
|
24789
|
+
className,
|
|
24790
|
+
showAnchor = true,
|
|
24791
|
+
...props
|
|
24792
|
+
}) {
|
|
24793
|
+
const tag = `h${Math.min(Math.max(level, 1), 6)}`;
|
|
24794
|
+
return React2.createElement(
|
|
24795
|
+
tag,
|
|
24796
|
+
{
|
|
24797
|
+
...props,
|
|
24798
|
+
id,
|
|
24799
|
+
className: classNames66("eui-markdown-heading", className)
|
|
24800
|
+
},
|
|
24801
|
+
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
24802
|
+
children,
|
|
24803
|
+
showAnchor && id ? /* @__PURE__ */ jsx(
|
|
24804
|
+
"a",
|
|
24805
|
+
{
|
|
24806
|
+
href: `#${id}`,
|
|
24807
|
+
className: "eui-markdown-heading-anchor",
|
|
24808
|
+
"aria-label": "Link to heading",
|
|
24809
|
+
children: "#"
|
|
24810
|
+
}
|
|
24811
|
+
) : null
|
|
24812
|
+
] })
|
|
24813
|
+
);
|
|
24814
|
+
}
|
|
24815
|
+
var MarkdownHeading_default = MarkdownHeading;
|
|
24816
|
+
PrismLight.registerLanguage("bash", bash);
|
|
24817
|
+
PrismLight.registerLanguage("shell", bash);
|
|
24818
|
+
PrismLight.registerLanguage("sh", bash);
|
|
24819
|
+
PrismLight.registerLanguage("zsh", bash);
|
|
24820
|
+
PrismLight.registerLanguage("c", c);
|
|
24821
|
+
PrismLight.registerLanguage("cpp", cpp);
|
|
24822
|
+
PrismLight.registerLanguage("c++", cpp);
|
|
24823
|
+
PrismLight.registerLanguage("css", css);
|
|
24824
|
+
PrismLight.registerLanguage("scss", scss);
|
|
24825
|
+
PrismLight.registerLanguage("go", go);
|
|
24826
|
+
PrismLight.registerLanguage("java", java);
|
|
24827
|
+
PrismLight.registerLanguage("js", javascript);
|
|
24828
|
+
PrismLight.registerLanguage("javascript", javascript);
|
|
24829
|
+
PrismLight.registerLanguage("jsx", jsx210);
|
|
24830
|
+
PrismLight.registerLanguage("json", json);
|
|
24831
|
+
PrismLight.registerLanguage("html", markup);
|
|
24832
|
+
PrismLight.registerLanguage("xml", markup);
|
|
24833
|
+
PrismLight.registerLanguage("markup", markup);
|
|
24834
|
+
PrismLight.registerLanguage("py", python);
|
|
24835
|
+
PrismLight.registerLanguage("python", python);
|
|
24836
|
+
PrismLight.registerLanguage("rs", rust);
|
|
24837
|
+
PrismLight.registerLanguage("rust", rust);
|
|
24838
|
+
PrismLight.registerLanguage("sql", sql);
|
|
24839
|
+
PrismLight.registerLanguage("ts", typescript);
|
|
24840
|
+
PrismLight.registerLanguage("typescript", typescript);
|
|
24841
|
+
PrismLight.registerLanguage("tsx", tsx);
|
|
24842
|
+
PrismLight.registerLanguage("yaml", yaml);
|
|
24843
|
+
PrismLight.registerLanguage("yml", yaml);
|
|
24844
|
+
var LANGUAGE_ALIASES = {
|
|
24845
|
+
js: "javascript",
|
|
24846
|
+
ts: "typescript",
|
|
24847
|
+
py: "python",
|
|
24848
|
+
sh: "bash",
|
|
24849
|
+
shell: "bash",
|
|
24850
|
+
zsh: "bash",
|
|
24851
|
+
yml: "yaml",
|
|
24852
|
+
html: "markup",
|
|
24853
|
+
xml: "markup",
|
|
24854
|
+
"c++": "cpp",
|
|
24855
|
+
text: "text",
|
|
24856
|
+
txt: "text",
|
|
24857
|
+
plain: "text",
|
|
24858
|
+
plaintext: "text"
|
|
24859
|
+
};
|
|
24860
|
+
function normalizeLanguage(language) {
|
|
24861
|
+
if (!language) return "text";
|
|
24862
|
+
const normalized = language.toLowerCase().trim();
|
|
24863
|
+
return LANGUAGE_ALIASES[normalized] ?? normalized;
|
|
24864
|
+
}
|
|
24865
|
+
function MarkdownCodeBlock({
|
|
24866
|
+
code,
|
|
24867
|
+
language,
|
|
24868
|
+
meta,
|
|
24869
|
+
className,
|
|
24870
|
+
showCopy = true,
|
|
24871
|
+
wrapLongLines = false,
|
|
24872
|
+
...props
|
|
24873
|
+
}) {
|
|
24874
|
+
const [copied, setCopied] = useState(false);
|
|
24875
|
+
const timeoutRef = useRef(null);
|
|
24876
|
+
const title = meta?.title ?? meta?.filename;
|
|
24877
|
+
const resolvedLanguage = useMemo(() => {
|
|
24878
|
+
return normalizeLanguage(language);
|
|
24879
|
+
}, [language]);
|
|
24880
|
+
const languageLabel = language || resolvedLanguage;
|
|
24881
|
+
const showHeader = Boolean(title || languageLabel || showCopy);
|
|
24882
|
+
const highlightLines = useMemo(() => {
|
|
24883
|
+
return new Set(meta?.highlightLines ?? []);
|
|
24884
|
+
}, [meta?.highlightLines]);
|
|
24885
|
+
const showLineNumbers = Boolean(meta?.showLineNumbers);
|
|
24886
|
+
useEffect(() => {
|
|
24887
|
+
return () => {
|
|
24888
|
+
if (timeoutRef.current) {
|
|
24889
|
+
window.clearTimeout(timeoutRef.current);
|
|
24890
|
+
}
|
|
24891
|
+
};
|
|
24892
|
+
}, []);
|
|
24893
|
+
const copyCode = async () => {
|
|
24894
|
+
if (typeof navigator === "undefined") return;
|
|
24895
|
+
if (!navigator.clipboard) return;
|
|
24896
|
+
await navigator.clipboard.writeText(code);
|
|
24897
|
+
setCopied(true);
|
|
24898
|
+
if (timeoutRef.current) {
|
|
24899
|
+
window.clearTimeout(timeoutRef.current);
|
|
24900
|
+
}
|
|
24901
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
24902
|
+
setCopied(false);
|
|
24903
|
+
}, 1500);
|
|
24904
|
+
};
|
|
24905
|
+
const lineNumberStyle = {
|
|
24906
|
+
minWidth: "3rem",
|
|
24907
|
+
paddingRight: "1rem",
|
|
24908
|
+
color: "rgb(100 116 139)",
|
|
24909
|
+
textAlign: "right",
|
|
24910
|
+
userSelect: "none"
|
|
24911
|
+
};
|
|
24912
|
+
return /* @__PURE__ */ jsxs("div", { ...props, className: classNames66("eui-markdown-code", className), children: [
|
|
24913
|
+
showHeader ? /* @__PURE__ */ jsxs("div", { className: "eui-markdown-code-header", children: [
|
|
24914
|
+
/* @__PURE__ */ jsxs("div", { className: "eui-markdown-code-header-main", children: [
|
|
24915
|
+
title ? /* @__PURE__ */ jsx("div", { className: "eui-markdown-code-title", children: title }) : null,
|
|
24916
|
+
languageLabel ? /* @__PURE__ */ jsx("div", { className: "eui-markdown-code-language", children: languageLabel }) : null
|
|
24917
|
+
] }),
|
|
24918
|
+
showCopy ? /* @__PURE__ */ jsx(
|
|
24919
|
+
"button",
|
|
24920
|
+
{
|
|
24921
|
+
type: "button",
|
|
24922
|
+
className: "eui-markdown-copy-button",
|
|
24923
|
+
onClick: copyCode,
|
|
24924
|
+
children: copied ? "Copied" : "Copy"
|
|
24925
|
+
}
|
|
24926
|
+
) : null
|
|
24927
|
+
] }) : null,
|
|
24928
|
+
/* @__PURE__ */ jsx(
|
|
24929
|
+
PrismLight,
|
|
24930
|
+
{
|
|
24931
|
+
className: "eui-markdown-code-highlighter",
|
|
24932
|
+
language: resolvedLanguage,
|
|
24933
|
+
style: vscDarkPlus,
|
|
24934
|
+
showLineNumbers,
|
|
24935
|
+
wrapLines: highlightLines.size > 0,
|
|
24936
|
+
wrapLongLines,
|
|
24937
|
+
PreTag: "pre",
|
|
24938
|
+
CodeTag: "code",
|
|
24939
|
+
customStyle: {
|
|
24940
|
+
margin: 0,
|
|
24941
|
+
padding: "1rem",
|
|
24942
|
+
background: "transparent",
|
|
24943
|
+
fontSize: "0.875rem",
|
|
24944
|
+
lineHeight: 1.7
|
|
24945
|
+
},
|
|
24946
|
+
codeTagProps: {
|
|
24947
|
+
style: {
|
|
24948
|
+
fontFamily: '"JetBrains Mono", "Fira Code", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace'
|
|
24949
|
+
}
|
|
24950
|
+
},
|
|
24951
|
+
lineNumberStyle,
|
|
24952
|
+
lineProps: (lineNumber) => {
|
|
24953
|
+
const highlighted = highlightLines.has(lineNumber);
|
|
24954
|
+
return {
|
|
24955
|
+
className: highlighted ? "eui-markdown-code-line-highlighted" : void 0,
|
|
24956
|
+
style: {
|
|
24957
|
+
display: "block",
|
|
24958
|
+
background: highlighted ? "rgba(250, 204, 21, 0.12)" : void 0
|
|
24959
|
+
}
|
|
24960
|
+
};
|
|
24961
|
+
},
|
|
24962
|
+
children: code
|
|
24963
|
+
}
|
|
24964
|
+
)
|
|
24965
|
+
] });
|
|
24966
|
+
}
|
|
24967
|
+
var MarkdownCodeBlock_default = MarkdownCodeBlock;
|
|
24968
|
+
function MarkdownInlineCode({
|
|
24969
|
+
children,
|
|
24970
|
+
className,
|
|
24971
|
+
...props
|
|
24972
|
+
}) {
|
|
24973
|
+
return /* @__PURE__ */ jsx(
|
|
24974
|
+
"code",
|
|
24975
|
+
{
|
|
24976
|
+
...props,
|
|
24977
|
+
className: classNames66("eui-markdown-inline-code", className),
|
|
24978
|
+
children
|
|
24979
|
+
}
|
|
24980
|
+
);
|
|
24981
|
+
}
|
|
24982
|
+
var MarkdownInlineCode_default = MarkdownInlineCode;
|
|
24983
|
+
function isExternalHref(href) {
|
|
24984
|
+
if (!href) return false;
|
|
24985
|
+
return /^https?:\/\//i.test(href);
|
|
24986
|
+
}
|
|
24987
|
+
function getSafeHref(href) {
|
|
24988
|
+
if (!href) return void 0;
|
|
24989
|
+
const trimmed = href.trim();
|
|
24990
|
+
const isSafe = trimmed.startsWith("#") || trimmed.startsWith("/") || trimmed.startsWith("./") || trimmed.startsWith("../") || /^https?:\/\//i.test(trimmed) || /^mailto:/i.test(trimmed) || /^tel:/i.test(trimmed);
|
|
24991
|
+
return isSafe ? trimmed : void 0;
|
|
24992
|
+
}
|
|
24993
|
+
function MarkdownLink({
|
|
24994
|
+
href,
|
|
24995
|
+
target,
|
|
24996
|
+
children,
|
|
24997
|
+
className,
|
|
24998
|
+
openLinksInNewTab = true,
|
|
24999
|
+
...props
|
|
25000
|
+
}) {
|
|
25001
|
+
const safeHref = getSafeHref(href);
|
|
25002
|
+
if (!safeHref) {
|
|
25003
|
+
return /* @__PURE__ */ jsx("span", { className, children });
|
|
25004
|
+
}
|
|
25005
|
+
const external = isExternalHref(safeHref);
|
|
25006
|
+
const resolvedTarget = target ?? (openLinksInNewTab && external ? "_blank" : void 0);
|
|
25007
|
+
const rel = resolvedTarget === "_blank" ? "noopener noreferrer" : props.rel;
|
|
25008
|
+
return /* @__PURE__ */ jsx(
|
|
25009
|
+
"a",
|
|
25010
|
+
{
|
|
25011
|
+
...props,
|
|
25012
|
+
href: safeHref,
|
|
25013
|
+
target: resolvedTarget,
|
|
25014
|
+
rel,
|
|
25015
|
+
className: classNames66("eui-markdown-link", className),
|
|
25016
|
+
children
|
|
25017
|
+
}
|
|
25018
|
+
);
|
|
25019
|
+
}
|
|
25020
|
+
var MarkdownLink_default = MarkdownLink;
|
|
25021
|
+
function getSafeImageSrc(src) {
|
|
25022
|
+
if (!src) return void 0;
|
|
25023
|
+
const trimmed = src.trim();
|
|
25024
|
+
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);
|
|
25025
|
+
return isSafe ? trimmed : void 0;
|
|
25026
|
+
}
|
|
25027
|
+
function MarkdownImage({
|
|
25028
|
+
src,
|
|
25029
|
+
alt,
|
|
25030
|
+
title,
|
|
25031
|
+
className,
|
|
25032
|
+
...props
|
|
25033
|
+
}) {
|
|
25034
|
+
const safeSrc = getSafeImageSrc(src);
|
|
25035
|
+
if (!safeSrc) {
|
|
25036
|
+
return null;
|
|
25037
|
+
}
|
|
25038
|
+
return /* @__PURE__ */ jsx(
|
|
25039
|
+
"img",
|
|
25040
|
+
{
|
|
25041
|
+
...props,
|
|
25042
|
+
src: safeSrc,
|
|
25043
|
+
alt: alt ?? "",
|
|
25044
|
+
title,
|
|
25045
|
+
loading: "lazy",
|
|
25046
|
+
decoding: "async",
|
|
25047
|
+
className: classNames66("eui-markdown-image", className)
|
|
25048
|
+
}
|
|
25049
|
+
);
|
|
25050
|
+
}
|
|
25051
|
+
var MarkdownImage_default = MarkdownImage;
|
|
25052
|
+
function MarkdownTable({
|
|
25053
|
+
children,
|
|
25054
|
+
className,
|
|
25055
|
+
...props
|
|
25056
|
+
}) {
|
|
25057
|
+
return /* @__PURE__ */ jsx("div", { className: "eui-markdown-table-wrapper", children: /* @__PURE__ */ jsx("table", { ...props, className: classNames66("eui-markdown-table", className), children }) });
|
|
25058
|
+
}
|
|
25059
|
+
function MarkdownTableCell({
|
|
25060
|
+
children,
|
|
25061
|
+
className,
|
|
25062
|
+
...props
|
|
25063
|
+
}) {
|
|
25064
|
+
return /* @__PURE__ */ jsx("td", { ...props, className: classNames66("eui-markdown-table-cell", className), children });
|
|
25065
|
+
}
|
|
25066
|
+
function MarkdownTableHeaderCell({
|
|
25067
|
+
children,
|
|
25068
|
+
className,
|
|
25069
|
+
...props
|
|
25070
|
+
}) {
|
|
25071
|
+
return /* @__PURE__ */ jsx(
|
|
25072
|
+
"th",
|
|
25073
|
+
{
|
|
25074
|
+
...props,
|
|
25075
|
+
className: classNames66("eui-markdown-table-header-cell", className),
|
|
25076
|
+
children
|
|
25077
|
+
}
|
|
25078
|
+
);
|
|
25079
|
+
}
|
|
25080
|
+
var MarkdownTable_default = MarkdownTable;
|
|
25081
|
+
function MarkdownBlockquote({
|
|
25082
|
+
children,
|
|
25083
|
+
className,
|
|
25084
|
+
...props
|
|
25085
|
+
}) {
|
|
25086
|
+
return /* @__PURE__ */ jsx(
|
|
25087
|
+
"blockquote",
|
|
25088
|
+
{
|
|
25089
|
+
...props,
|
|
25090
|
+
className: classNames66("eui-markdown-blockquote", className),
|
|
25091
|
+
children
|
|
25092
|
+
}
|
|
25093
|
+
);
|
|
25094
|
+
}
|
|
25095
|
+
var MarkdownBlockquote_default = MarkdownBlockquote;
|
|
25096
|
+
function getTextContent(node) {
|
|
25097
|
+
if (typeof node === "string" || typeof node === "number") {
|
|
25098
|
+
return String(node);
|
|
25099
|
+
}
|
|
25100
|
+
if (Array.isArray(node)) {
|
|
25101
|
+
return node.map(getTextContent).join("");
|
|
25102
|
+
}
|
|
25103
|
+
if (isValidElement(node)) {
|
|
25104
|
+
return getTextContent(node.props.children);
|
|
25105
|
+
}
|
|
25106
|
+
return "";
|
|
25107
|
+
}
|
|
25108
|
+
function createHeadingKey(level, text) {
|
|
25109
|
+
return `${level}:${sanitizeHeading(text)}`;
|
|
25110
|
+
}
|
|
25111
|
+
function parseNumberRanges(value) {
|
|
25112
|
+
if (!value) return [];
|
|
25113
|
+
const normalized = value.replace(/[{}[\]\s]/g, "");
|
|
25114
|
+
if (!normalized) return [];
|
|
25115
|
+
const values = /* @__PURE__ */ new Set();
|
|
25116
|
+
normalized.split(",").forEach((part) => {
|
|
25117
|
+
if (!part) return;
|
|
25118
|
+
const rangeMatch = part.match(/^(\d+)-(\d+)$/);
|
|
25119
|
+
if (rangeMatch) {
|
|
25120
|
+
const start = Number(rangeMatch[1]);
|
|
25121
|
+
const end = Number(rangeMatch[2]);
|
|
25122
|
+
for (let line2 = start; line2 <= end; line2++) {
|
|
25123
|
+
values.add(line2);
|
|
25124
|
+
}
|
|
25125
|
+
return;
|
|
25126
|
+
}
|
|
25127
|
+
const line = Number(part);
|
|
25128
|
+
if (!Number.isNaN(line)) {
|
|
25129
|
+
values.add(line);
|
|
25130
|
+
}
|
|
25131
|
+
});
|
|
25132
|
+
return Array.from(values).sort((a, b) => a - b);
|
|
25133
|
+
}
|
|
25134
|
+
function parseCodeMeta(metaString) {
|
|
25135
|
+
if (!metaString) return void 0;
|
|
25136
|
+
const filenameMatch = metaString.match(
|
|
25137
|
+
/(?:filename|file)=["']?([^"'\s]+)["']?/
|
|
25138
|
+
);
|
|
25139
|
+
const titleMatch = metaString.match(/(?:title)=["']?([^"']+)["']?/);
|
|
25140
|
+
const highlightMatch = metaString.match(/(?:highlight|lines)=["']?([^"'\s]+)["']?/) || metaString.match(/{([^}]+)}/);
|
|
25141
|
+
return {
|
|
25142
|
+
filename: filenameMatch?.[1],
|
|
25143
|
+
title: titleMatch?.[1],
|
|
25144
|
+
showLineNumbers: /\b(showLineNumbers|lineNumbers|line-numbers)\b/.test(
|
|
25145
|
+
metaString
|
|
25146
|
+
),
|
|
25147
|
+
highlightLines: parseNumberRanges(highlightMatch?.[1])
|
|
25148
|
+
};
|
|
25149
|
+
}
|
|
25150
|
+
function getCodeMetaString(node) {
|
|
25151
|
+
const value = node;
|
|
25152
|
+
return value?.data?.meta || value?.data?.hProperties?.meta || value?.properties?.meta || value?.properties?.dataMeta || value?.meta;
|
|
25153
|
+
}
|
|
25154
|
+
function getLanguageFromClassName(className) {
|
|
25155
|
+
if (!className) return void 0;
|
|
25156
|
+
const match = className.match(/language-([^\s]+)/);
|
|
25157
|
+
return match?.[1];
|
|
25158
|
+
}
|
|
25159
|
+
function getCodeInfoFromPreChildren(children) {
|
|
25160
|
+
const childArray = React2.Children.toArray(children);
|
|
25161
|
+
const codeElement = childArray.find((child) => {
|
|
25162
|
+
if (!isValidElement(child)) return false;
|
|
25163
|
+
return child.type === "code";
|
|
25164
|
+
});
|
|
25165
|
+
const codeProps = codeElement?.props;
|
|
25166
|
+
const code = getTextContent(codeProps?.children ?? children).replace(
|
|
25167
|
+
/\n$/,
|
|
25168
|
+
""
|
|
25169
|
+
);
|
|
25170
|
+
const language = getLanguageFromClassName(codeProps?.className);
|
|
25171
|
+
const meta = parseCodeMeta(codeProps?.["data-meta"]);
|
|
25172
|
+
return {
|
|
25173
|
+
code,
|
|
25174
|
+
language,
|
|
25175
|
+
meta
|
|
25176
|
+
};
|
|
25177
|
+
}
|
|
25178
|
+
function MarkdownRenderer({
|
|
25179
|
+
markdown,
|
|
25180
|
+
headings = [],
|
|
25181
|
+
headingIdPrefix = "",
|
|
25182
|
+
components,
|
|
25183
|
+
className,
|
|
25184
|
+
contentClassName,
|
|
25185
|
+
openLinksInNewTab = true,
|
|
25186
|
+
linkTarget,
|
|
25187
|
+
enableGfm = true,
|
|
25188
|
+
allowHtml = false,
|
|
25189
|
+
sanitizeHtml = true,
|
|
25190
|
+
showCopyCode = true,
|
|
25191
|
+
showHeadingAnchors = true
|
|
25192
|
+
}) {
|
|
25193
|
+
const headingQueues = /* @__PURE__ */ new Map();
|
|
25194
|
+
headings.forEach((heading) => {
|
|
25195
|
+
const key = createHeadingKey(heading.level, heading.text);
|
|
25196
|
+
const queue = headingQueues.get(key) ?? [];
|
|
25197
|
+
queue.push(heading.id);
|
|
25198
|
+
headingQueues.set(key, queue);
|
|
25199
|
+
});
|
|
25200
|
+
const headingUsage = /* @__PURE__ */ new Map();
|
|
25201
|
+
const fallbackSlugCounts = /* @__PURE__ */ new Map();
|
|
25202
|
+
const resolveHeadingId = (level, children) => {
|
|
25203
|
+
const text = getTextContent(children);
|
|
25204
|
+
const key = createHeadingKey(level, text);
|
|
25205
|
+
const queue = headingQueues.get(key);
|
|
25206
|
+
if (queue?.length) {
|
|
25207
|
+
const usedCount = headingUsage.get(key) ?? 0;
|
|
25208
|
+
headingUsage.set(key, usedCount + 1);
|
|
25209
|
+
const existingId = queue[usedCount];
|
|
25210
|
+
if (existingId) {
|
|
25211
|
+
return existingId;
|
|
25212
|
+
}
|
|
25213
|
+
}
|
|
25214
|
+
return `${headingIdPrefix}${createHeadingSlug(text, {
|
|
25215
|
+
slugCounts: fallbackSlugCounts
|
|
25216
|
+
})}`;
|
|
25217
|
+
};
|
|
25218
|
+
const remarkPlugins = [];
|
|
25219
|
+
if (enableGfm) {
|
|
25220
|
+
remarkPlugins.push(remarkGfm);
|
|
25221
|
+
}
|
|
25222
|
+
const rehypePlugins = [];
|
|
25223
|
+
if (allowHtml) {
|
|
25224
|
+
rehypePlugins.push(rehypeRaw);
|
|
25225
|
+
if (sanitizeHtml) {
|
|
25226
|
+
rehypePlugins.push(rehypeSanitize);
|
|
25227
|
+
}
|
|
25228
|
+
}
|
|
25229
|
+
const rendererComponents = {
|
|
25230
|
+
h1: ({ node: _node, children, ...rest }) => {
|
|
25231
|
+
const Component = components?.h1 ?? MarkdownHeading_default;
|
|
25232
|
+
return /* @__PURE__ */ jsx(
|
|
25233
|
+
Component,
|
|
25234
|
+
{
|
|
25235
|
+
...rest,
|
|
25236
|
+
id: resolveHeadingId(1, children),
|
|
25237
|
+
level: 1,
|
|
25238
|
+
showAnchor: showHeadingAnchors,
|
|
25239
|
+
children
|
|
25240
|
+
}
|
|
25241
|
+
);
|
|
25242
|
+
},
|
|
25243
|
+
h2: ({ node: _node, children, ...rest }) => {
|
|
25244
|
+
const Component = components?.h2 ?? MarkdownHeading_default;
|
|
25245
|
+
return /* @__PURE__ */ jsx(
|
|
25246
|
+
Component,
|
|
25247
|
+
{
|
|
25248
|
+
...rest,
|
|
25249
|
+
id: resolveHeadingId(2, children),
|
|
25250
|
+
level: 2,
|
|
25251
|
+
showAnchor: showHeadingAnchors,
|
|
25252
|
+
children
|
|
25253
|
+
}
|
|
25254
|
+
);
|
|
25255
|
+
},
|
|
25256
|
+
h3: ({ node: _node, children, ...rest }) => {
|
|
25257
|
+
const Component = components?.h3 ?? MarkdownHeading_default;
|
|
25258
|
+
return /* @__PURE__ */ jsx(
|
|
25259
|
+
Component,
|
|
25260
|
+
{
|
|
25261
|
+
...rest,
|
|
25262
|
+
id: resolveHeadingId(3, children),
|
|
25263
|
+
level: 3,
|
|
25264
|
+
showAnchor: showHeadingAnchors,
|
|
25265
|
+
children
|
|
25266
|
+
}
|
|
25267
|
+
);
|
|
25268
|
+
},
|
|
25269
|
+
h4: ({ node: _node, children, ...rest }) => {
|
|
25270
|
+
const Component = components?.h4 ?? MarkdownHeading_default;
|
|
25271
|
+
return /* @__PURE__ */ jsx(
|
|
25272
|
+
Component,
|
|
25273
|
+
{
|
|
25274
|
+
...rest,
|
|
25275
|
+
id: resolveHeadingId(4, children),
|
|
25276
|
+
level: 4,
|
|
25277
|
+
showAnchor: showHeadingAnchors,
|
|
25278
|
+
children
|
|
25279
|
+
}
|
|
25280
|
+
);
|
|
25281
|
+
},
|
|
25282
|
+
h5: ({ node: _node, children, ...rest }) => {
|
|
25283
|
+
const Component = components?.h5 ?? MarkdownHeading_default;
|
|
25284
|
+
return /* @__PURE__ */ jsx(
|
|
25285
|
+
Component,
|
|
25286
|
+
{
|
|
25287
|
+
...rest,
|
|
25288
|
+
id: resolveHeadingId(5, children),
|
|
25289
|
+
level: 5,
|
|
25290
|
+
showAnchor: showHeadingAnchors,
|
|
25291
|
+
children
|
|
25292
|
+
}
|
|
25293
|
+
);
|
|
25294
|
+
},
|
|
25295
|
+
h6: ({ node: _node, children, ...rest }) => {
|
|
25296
|
+
const Component = components?.h6 ?? MarkdownHeading_default;
|
|
25297
|
+
return /* @__PURE__ */ jsx(
|
|
25298
|
+
Component,
|
|
25299
|
+
{
|
|
25300
|
+
...rest,
|
|
25301
|
+
id: resolveHeadingId(6, children),
|
|
25302
|
+
level: 6,
|
|
25303
|
+
showAnchor: showHeadingAnchors,
|
|
25304
|
+
children
|
|
25305
|
+
}
|
|
25306
|
+
);
|
|
25307
|
+
},
|
|
25308
|
+
/**
|
|
25309
|
+
* Important:
|
|
25310
|
+
* For block code, return a native <code> with className="language-*".
|
|
25311
|
+
* Then the pre renderer can reliably extract language + meta.
|
|
25312
|
+
*/
|
|
25313
|
+
code: ({ node, className: className2, children, ...rest }) => {
|
|
25314
|
+
const language = getLanguageFromClassName(className2);
|
|
25315
|
+
if (language) {
|
|
25316
|
+
return /* @__PURE__ */ jsx(
|
|
25317
|
+
"code",
|
|
25318
|
+
{
|
|
25319
|
+
...rest,
|
|
25320
|
+
className: className2,
|
|
25321
|
+
"data-meta": getCodeMetaString(node),
|
|
25322
|
+
children
|
|
25323
|
+
}
|
|
25324
|
+
);
|
|
25325
|
+
}
|
|
25326
|
+
const Component = components?.code ?? MarkdownInlineCode_default;
|
|
25327
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, className: className2, children });
|
|
25328
|
+
},
|
|
25329
|
+
/**
|
|
25330
|
+
* Do not spread rest here.
|
|
25331
|
+
* React-markdown's pre props are HTMLPreElement props.
|
|
25332
|
+
* MarkdownCodeBlock root is a div.
|
|
25333
|
+
*/
|
|
25334
|
+
pre: ({ node: _node, children }) => {
|
|
25335
|
+
const Component = components?.pre ?? MarkdownCodeBlock_default;
|
|
25336
|
+
const { code, language, meta } = getCodeInfoFromPreChildren(children);
|
|
25337
|
+
return /* @__PURE__ */ jsx(
|
|
25338
|
+
Component,
|
|
25339
|
+
{
|
|
25340
|
+
code,
|
|
25341
|
+
language,
|
|
25342
|
+
meta,
|
|
25343
|
+
showCopy: showCopyCode
|
|
25344
|
+
}
|
|
25345
|
+
);
|
|
25346
|
+
},
|
|
25347
|
+
a: ({ node: _node, children, href, target, ...rest }) => {
|
|
25348
|
+
const Component = components?.a ?? MarkdownLink_default;
|
|
25349
|
+
return /* @__PURE__ */ jsx(
|
|
25350
|
+
Component,
|
|
25351
|
+
{
|
|
25352
|
+
...rest,
|
|
25353
|
+
href,
|
|
25354
|
+
target: linkTarget ?? target,
|
|
25355
|
+
openLinksInNewTab,
|
|
25356
|
+
children
|
|
25357
|
+
}
|
|
25358
|
+
);
|
|
25359
|
+
},
|
|
25360
|
+
img: ({ node: _node, src, alt, title, ...rest }) => {
|
|
25361
|
+
const Component = components?.img ?? MarkdownImage_default;
|
|
25362
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, src, alt, title });
|
|
25363
|
+
},
|
|
25364
|
+
table: ({ node: _node, children, ...rest }) => {
|
|
25365
|
+
const Component = components?.table ?? MarkdownTable_default;
|
|
25366
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, children });
|
|
25367
|
+
},
|
|
25368
|
+
td: ({ node: _node, children, ...rest }) => {
|
|
25369
|
+
const Component = components?.td ?? MarkdownTableCell;
|
|
25370
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, children });
|
|
25371
|
+
},
|
|
25372
|
+
th: ({ node: _node, children, ...rest }) => {
|
|
25373
|
+
const Component = components?.th ?? MarkdownTableHeaderCell;
|
|
25374
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, children });
|
|
25375
|
+
},
|
|
25376
|
+
blockquote: ({ node: _node, children, ...rest }) => {
|
|
25377
|
+
const Component = components?.blockquote ?? MarkdownBlockquote_default;
|
|
25378
|
+
return /* @__PURE__ */ jsx(Component, { ...rest, children });
|
|
25379
|
+
},
|
|
25380
|
+
...components
|
|
25381
|
+
};
|
|
25382
|
+
return /* @__PURE__ */ jsx("div", { className: classNames66("eui-markdown markdown-body", className), children: /* @__PURE__ */ jsx("div", { className: contentClassName, children: /* @__PURE__ */ jsx(
|
|
25383
|
+
ReactMarkdown,
|
|
25384
|
+
{
|
|
25385
|
+
remarkPlugins,
|
|
25386
|
+
rehypePlugins,
|
|
25387
|
+
skipHtml: !allowHtml,
|
|
25388
|
+
components: rendererComponents,
|
|
25389
|
+
children: markdown
|
|
25390
|
+
}
|
|
25391
|
+
) }) });
|
|
25392
|
+
}
|
|
25393
|
+
var MarkdownRenderer_default = MarkdownRenderer;
|
|
25394
|
+
function MarkdownViewer({
|
|
25395
|
+
value,
|
|
25396
|
+
headings: externalHeadings,
|
|
25397
|
+
headingIdPrefix = "",
|
|
25398
|
+
enableActiveHeading = true,
|
|
25399
|
+
...props
|
|
25400
|
+
}) {
|
|
25401
|
+
const context = useMarkdown();
|
|
25402
|
+
const markdown = value ?? context?.markdown ?? "";
|
|
25403
|
+
const headings = useMemo(() => {
|
|
25404
|
+
if (externalHeadings) {
|
|
25405
|
+
return externalHeadings;
|
|
25406
|
+
}
|
|
25407
|
+
if (context?.headings?.length) {
|
|
25408
|
+
return context.headings;
|
|
25409
|
+
}
|
|
25410
|
+
return extractHeadings(markdown, {
|
|
25411
|
+
idPrefix: headingIdPrefix
|
|
25412
|
+
});
|
|
25413
|
+
}, [context?.headings, externalHeadings, headingIdPrefix, markdown]);
|
|
25414
|
+
useActiveHeading({
|
|
25415
|
+
headings,
|
|
25416
|
+
enabled: enableActiveHeading && headings.length > 0
|
|
25417
|
+
});
|
|
25418
|
+
return /* @__PURE__ */ jsx(
|
|
25419
|
+
MarkdownRenderer_default,
|
|
25420
|
+
{
|
|
25421
|
+
markdown,
|
|
25422
|
+
headings,
|
|
25423
|
+
headingIdPrefix,
|
|
25424
|
+
...props
|
|
25425
|
+
}
|
|
25426
|
+
);
|
|
25427
|
+
}
|
|
25428
|
+
var MarkdownViewer_default = MarkdownViewer;
|
|
25429
|
+
function hasNumbering(heading) {
|
|
25430
|
+
return "numbering" in heading;
|
|
25431
|
+
}
|
|
25432
|
+
function MarkdownTOCItem({
|
|
25433
|
+
heading,
|
|
25434
|
+
active = false,
|
|
25435
|
+
numbered = true,
|
|
25436
|
+
sanitizeLabel = true,
|
|
25437
|
+
indentSize = 12,
|
|
25438
|
+
className,
|
|
25439
|
+
activeClassName,
|
|
25440
|
+
inactiveClassName,
|
|
25441
|
+
onSelect
|
|
25442
|
+
}) {
|
|
25443
|
+
const label = sanitizeLabel ? sanitizeHeading(heading.text) : heading.text;
|
|
25444
|
+
const numbering = hasNumbering(heading) ? heading.numbering : void 0;
|
|
25445
|
+
return /* @__PURE__ */ jsxs(
|
|
25446
|
+
"button",
|
|
25447
|
+
{
|
|
25448
|
+
type: "button",
|
|
25449
|
+
onClick: () => onSelect?.(heading),
|
|
25450
|
+
"aria-current": active ? "location" : void 0,
|
|
25451
|
+
title: label,
|
|
25452
|
+
className: classNames66(
|
|
25453
|
+
"eui-markdown-toc-item",
|
|
25454
|
+
"block w-full text-left text-sm transition-all ease-in-out duration-150",
|
|
25455
|
+
"hover:text-primary",
|
|
25456
|
+
active ? classNames66("text-primary font-semibold underline", activeClassName) : classNames66("text-gray-500 dark:text-gray-400", inactiveClassName),
|
|
25457
|
+
className
|
|
25458
|
+
),
|
|
25459
|
+
style: {
|
|
25460
|
+
paddingLeft: `${Math.max(heading.level - 1, 0) * indentSize}px`
|
|
25461
|
+
},
|
|
25462
|
+
children: [
|
|
25463
|
+
numbered && numbering ? /* @__PURE__ */ jsx("span", { className: "eui-markdown-toc-item-number mr-2 opacity-70", children: numbering }) : null,
|
|
25464
|
+
/* @__PURE__ */ jsx("span", { className: "eui-markdown-toc-item-label", children: label })
|
|
25465
|
+
]
|
|
25466
|
+
}
|
|
25467
|
+
);
|
|
25468
|
+
}
|
|
25469
|
+
var MarkdownTOCItem_default = MarkdownTOCItem;
|
|
25470
|
+
function MarkdownTOC({
|
|
25471
|
+
title = "Table of Contents",
|
|
25472
|
+
markdown,
|
|
25473
|
+
headings: externalHeadings,
|
|
25474
|
+
minDepth = 1,
|
|
25475
|
+
maxDepth = 6,
|
|
25476
|
+
numbered = true,
|
|
25477
|
+
sanitizeLabels = true,
|
|
25478
|
+
collapsible = false,
|
|
25479
|
+
defaultCollapsed = false,
|
|
25480
|
+
emptyState = null,
|
|
25481
|
+
smoothScroll = true,
|
|
25482
|
+
scrollBlock = "start",
|
|
25483
|
+
indentSize = 12,
|
|
25484
|
+
className,
|
|
25485
|
+
titleClassName,
|
|
25486
|
+
listClassName,
|
|
25487
|
+
itemClassName,
|
|
25488
|
+
activeItemClassName,
|
|
25489
|
+
inactiveItemClassName,
|
|
25490
|
+
activeHeading: controlledActiveHeading,
|
|
25491
|
+
onActiveHeadingChange,
|
|
25492
|
+
onHeadingClick
|
|
25493
|
+
}) {
|
|
25494
|
+
const context = useMarkdown();
|
|
25495
|
+
const [collapsed, setCollapsed] = useState(defaultCollapsed);
|
|
25496
|
+
const { headings, numberedHeadings, hasHeadings } = useMarkdownHeadings({
|
|
25497
|
+
markdown,
|
|
25498
|
+
headings: externalHeadings,
|
|
25499
|
+
minDepth,
|
|
25500
|
+
maxDepth
|
|
25501
|
+
});
|
|
25502
|
+
const tocHeadings = useMemo(() => {
|
|
25503
|
+
return numbered ? numberedHeadings : headings;
|
|
25504
|
+
}, [headings, numbered, numberedHeadings]);
|
|
25505
|
+
const { activeHeading, scrollToHeading, setActiveHeading } = useActiveHeading(
|
|
25506
|
+
{
|
|
25507
|
+
headings,
|
|
25508
|
+
enabled: false,
|
|
25509
|
+
activeHeading: controlledActiveHeading,
|
|
25510
|
+
scrollBehavior: smoothScroll ? "smooth" : "auto",
|
|
25511
|
+
scrollBlock,
|
|
25512
|
+
onActiveHeadingChange
|
|
25513
|
+
}
|
|
25514
|
+
);
|
|
25515
|
+
if (!context && !markdown && !externalHeadings) {
|
|
25516
|
+
return null;
|
|
25517
|
+
}
|
|
25518
|
+
if (!hasHeadings) {
|
|
25519
|
+
return emptyState ? /* @__PURE__ */ jsx(
|
|
25520
|
+
"div",
|
|
25521
|
+
{
|
|
25522
|
+
className: classNames66(
|
|
25523
|
+
"eui-markdown-toc",
|
|
25524
|
+
"text-sm text-gray-500 dark:text-gray-400",
|
|
25525
|
+
className
|
|
25526
|
+
),
|
|
25527
|
+
children: emptyState
|
|
25528
|
+
}
|
|
25529
|
+
) : null;
|
|
25530
|
+
}
|
|
25531
|
+
const handleSelect = (heading) => {
|
|
25532
|
+
scrollToHeading(heading.id);
|
|
25533
|
+
setActiveHeading(heading.id);
|
|
25534
|
+
onHeadingClick?.(heading);
|
|
25535
|
+
};
|
|
25536
|
+
const content = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
25537
|
+
title ? /* @__PURE__ */ jsx("div", { className: "eui-markdown-toc-header", children: collapsible ? /* @__PURE__ */ jsxs(
|
|
25538
|
+
"button",
|
|
25539
|
+
{
|
|
25540
|
+
type: "button",
|
|
25541
|
+
onClick: () => setCollapsed((value) => !value),
|
|
25542
|
+
className: classNames66(
|
|
25543
|
+
"eui-markdown-toc-title",
|
|
25544
|
+
"flex w-full items-center justify-between gap-2 text-left",
|
|
25545
|
+
"text-sm font-semibold uppercase tracking-wide",
|
|
25546
|
+
"text-gray-900 dark:text-gray-100",
|
|
25547
|
+
titleClassName
|
|
25548
|
+
),
|
|
25549
|
+
"aria-expanded": !collapsed,
|
|
25550
|
+
children: [
|
|
25551
|
+
/* @__PURE__ */ jsx("span", { children: title }),
|
|
25552
|
+
/* @__PURE__ */ jsx(
|
|
25553
|
+
"span",
|
|
25554
|
+
{
|
|
25555
|
+
className: classNames66(
|
|
25556
|
+
"text-xs opacity-60 transition-transform duration-150",
|
|
25557
|
+
!collapsed && "rotate-90"
|
|
25558
|
+
),
|
|
25559
|
+
"aria-hidden": "true",
|
|
25560
|
+
children: "\u203A"
|
|
25561
|
+
}
|
|
25562
|
+
)
|
|
25563
|
+
]
|
|
25564
|
+
}
|
|
25565
|
+
) : /* @__PURE__ */ jsx(
|
|
25566
|
+
"h2",
|
|
25567
|
+
{
|
|
25568
|
+
className: classNames66(
|
|
25569
|
+
"eui-markdown-toc-title",
|
|
25570
|
+
"text-sm font-semibold uppercase tracking-wide",
|
|
25571
|
+
"text-gray-900 dark:text-gray-100",
|
|
25572
|
+
titleClassName
|
|
25573
|
+
),
|
|
25574
|
+
children: title
|
|
25575
|
+
}
|
|
25576
|
+
) }) : null,
|
|
25577
|
+
!collapsed ? /* @__PURE__ */ jsx(
|
|
25578
|
+
"nav",
|
|
25579
|
+
{
|
|
25580
|
+
className: classNames66(
|
|
25581
|
+
"eui-markdown-toc-list",
|
|
25582
|
+
"space-y-1",
|
|
25583
|
+
listClassName
|
|
25584
|
+
),
|
|
25585
|
+
"aria-label": title || "Markdown table of contents",
|
|
25586
|
+
children: tocHeadings.map((heading) => /* @__PURE__ */ jsx(
|
|
25587
|
+
MarkdownTOCItem_default,
|
|
25588
|
+
{
|
|
25589
|
+
heading,
|
|
25590
|
+
active: activeHeading === heading.id,
|
|
25591
|
+
numbered,
|
|
25592
|
+
sanitizeLabel: sanitizeLabels,
|
|
25593
|
+
indentSize,
|
|
25594
|
+
className: itemClassName,
|
|
25595
|
+
activeClassName: activeItemClassName,
|
|
25596
|
+
inactiveClassName: inactiveItemClassName,
|
|
25597
|
+
onSelect: handleSelect
|
|
25598
|
+
},
|
|
25599
|
+
heading.id
|
|
25600
|
+
))
|
|
25601
|
+
}
|
|
25602
|
+
) : null
|
|
25603
|
+
] });
|
|
25604
|
+
return /* @__PURE__ */ jsx("aside", { className: classNames66("eui-markdown-toc", "space-y-4", className), children: content });
|
|
25605
|
+
}
|
|
25606
|
+
var MarkdownTOC_default = MarkdownTOC;
|
|
25607
|
+
var DEFAULT_MARKDOWN_TOOLBAR_ACTIONS = [
|
|
25608
|
+
{
|
|
25609
|
+
id: "heading-1",
|
|
25610
|
+
label: "H1",
|
|
25611
|
+
title: "Heading 1"
|
|
25612
|
+
},
|
|
25613
|
+
{
|
|
25614
|
+
id: "heading-2",
|
|
25615
|
+
label: "H2",
|
|
25616
|
+
title: "Heading 2"
|
|
25617
|
+
},
|
|
25618
|
+
{
|
|
25619
|
+
id: "heading-3",
|
|
25620
|
+
label: "H3",
|
|
25621
|
+
title: "Heading 3"
|
|
25622
|
+
},
|
|
25623
|
+
{
|
|
25624
|
+
id: "bold",
|
|
25625
|
+
label: "B",
|
|
25626
|
+
title: "Bold",
|
|
25627
|
+
shortcut: "Ctrl+B"
|
|
25628
|
+
},
|
|
25629
|
+
{
|
|
25630
|
+
id: "italic",
|
|
25631
|
+
label: "I",
|
|
25632
|
+
title: "Italic",
|
|
25633
|
+
shortcut: "Ctrl+I"
|
|
25634
|
+
},
|
|
25635
|
+
{
|
|
25636
|
+
id: "strike",
|
|
25637
|
+
label: "S",
|
|
25638
|
+
title: "Strikethrough"
|
|
25639
|
+
},
|
|
25640
|
+
{
|
|
25641
|
+
id: "inline-code",
|
|
25642
|
+
label: "`",
|
|
25643
|
+
title: "Inline code"
|
|
25644
|
+
},
|
|
25645
|
+
{
|
|
25646
|
+
id: "code-block",
|
|
25647
|
+
label: "{}",
|
|
25648
|
+
title: "Code block"
|
|
25649
|
+
},
|
|
25650
|
+
{
|
|
25651
|
+
id: "link",
|
|
25652
|
+
label: "Link",
|
|
25653
|
+
title: "Link"
|
|
25654
|
+
},
|
|
25655
|
+
{
|
|
25656
|
+
id: "image",
|
|
25657
|
+
label: "Img",
|
|
25658
|
+
title: "Image"
|
|
25659
|
+
},
|
|
25660
|
+
{
|
|
25661
|
+
id: "unordered-list",
|
|
25662
|
+
label: "\u2022 List",
|
|
25663
|
+
title: "Bullet list"
|
|
25664
|
+
},
|
|
25665
|
+
{
|
|
25666
|
+
id: "ordered-list",
|
|
25667
|
+
label: "1. List",
|
|
25668
|
+
title: "Numbered list"
|
|
25669
|
+
},
|
|
25670
|
+
{
|
|
25671
|
+
id: "quote",
|
|
25672
|
+
label: "Quote",
|
|
25673
|
+
title: "Blockquote"
|
|
25674
|
+
},
|
|
25675
|
+
{
|
|
25676
|
+
id: "table",
|
|
25677
|
+
label: "Table",
|
|
25678
|
+
title: "Table"
|
|
25679
|
+
},
|
|
25680
|
+
{
|
|
25681
|
+
id: "hr",
|
|
25682
|
+
label: "\u2014",
|
|
25683
|
+
title: "Horizontal rule"
|
|
25684
|
+
}
|
|
25685
|
+
];
|
|
25686
|
+
function MarkdownToolbar({
|
|
25687
|
+
actions = DEFAULT_MARKDOWN_TOOLBAR_ACTIONS,
|
|
25688
|
+
disabled = false,
|
|
25689
|
+
actionsDisabled = false,
|
|
25690
|
+
compact = false,
|
|
25691
|
+
viewMode = "preview",
|
|
25692
|
+
showViewModeToggle = true,
|
|
25693
|
+
onViewModeToggle,
|
|
25694
|
+
className,
|
|
25695
|
+
buttonClassName,
|
|
25696
|
+
toggleButtonClassName,
|
|
25697
|
+
onAction
|
|
25698
|
+
}) {
|
|
25699
|
+
const isPreviewMode = viewMode === "preview";
|
|
25700
|
+
return /* @__PURE__ */ jsxs(
|
|
25701
|
+
"div",
|
|
25702
|
+
{
|
|
25703
|
+
className: classNames66(
|
|
25704
|
+
"eui-markdown-toolbar",
|
|
25705
|
+
"flex flex-wrap items-center gap-1 border-b border-gray-200 bg-gray-50 p-2",
|
|
25706
|
+
"dark:border-gray-700 dark:bg-gray-900",
|
|
25707
|
+
className
|
|
25708
|
+
),
|
|
25709
|
+
children: [
|
|
25710
|
+
/* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-1", children: actions.map((action) => /* @__PURE__ */ jsx(
|
|
25711
|
+
"button",
|
|
25712
|
+
{
|
|
25713
|
+
type: "button",
|
|
25714
|
+
disabled: disabled || actionsDisabled,
|
|
25715
|
+
title: action.shortcut ? `${action.title || action.label} (${action.shortcut})` : action.title || action.label,
|
|
25716
|
+
onClick: () => onAction?.(action.id),
|
|
25717
|
+
className: classNames66(
|
|
25718
|
+
"eui-markdown-toolbar-button",
|
|
25719
|
+
"inline-flex items-center justify-center rounded border border-transparent",
|
|
25720
|
+
"text-gray-700 transition-colors hover:border-gray-300 hover:bg-white",
|
|
25721
|
+
"dark:text-gray-200 dark:hover:border-gray-600 dark:hover:bg-gray-800",
|
|
25722
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
25723
|
+
compact ? "h-7 px-2 text-xs" : "h-8 px-2.5 text-sm",
|
|
25724
|
+
buttonClassName
|
|
25725
|
+
),
|
|
25726
|
+
children: action.label
|
|
25727
|
+
},
|
|
25728
|
+
action.id
|
|
25729
|
+
)) }),
|
|
25730
|
+
showViewModeToggle ? /* @__PURE__ */ jsx("div", { className: "ml-auto", children: /* @__PURE__ */ jsx(
|
|
25731
|
+
"button",
|
|
25732
|
+
{
|
|
25733
|
+
type: "button",
|
|
25734
|
+
disabled,
|
|
25735
|
+
onClick: onViewModeToggle,
|
|
25736
|
+
title: isPreviewMode ? "Switch to Markdown syntax" : "Switch to preview",
|
|
25737
|
+
className: classNames66(
|
|
25738
|
+
"eui-markdown-view-toggle",
|
|
25739
|
+
"inline-flex items-center justify-center rounded border font-medium transition-colors",
|
|
25740
|
+
"border-gray-300 bg-white text-gray-700 hover:bg-gray-100",
|
|
25741
|
+
"dark:border-gray-600 dark:bg-gray-800 dark:text-gray-100 dark:hover:bg-gray-700",
|
|
25742
|
+
"disabled:cursor-not-allowed disabled:opacity-50",
|
|
25743
|
+
compact ? "h-7 px-2 text-xs" : "h-8 px-3 text-sm",
|
|
25744
|
+
toggleButtonClassName
|
|
25745
|
+
),
|
|
25746
|
+
children: isPreviewMode ? "Syntax" : "Preview"
|
|
25747
|
+
}
|
|
25748
|
+
) }) : null
|
|
25749
|
+
]
|
|
25750
|
+
}
|
|
25751
|
+
);
|
|
25752
|
+
}
|
|
25753
|
+
var MarkdownToolbar_default = MarkdownToolbar;
|
|
25754
|
+
function getLineRange(value, start, end) {
|
|
25755
|
+
const lineStart = value.lastIndexOf("\n", start - 1) + 1;
|
|
25756
|
+
const lineEndIndex = value.indexOf("\n", end);
|
|
25757
|
+
return {
|
|
25758
|
+
lineStart,
|
|
25759
|
+
lineEnd: lineEndIndex === -1 ? value.length : lineEndIndex
|
|
25760
|
+
};
|
|
25761
|
+
}
|
|
25762
|
+
function replaceRange(value, start, end, replacement) {
|
|
25763
|
+
return value.slice(0, start) + replacement + value.slice(end);
|
|
25764
|
+
}
|
|
25765
|
+
function wrapSelection(value, start, end, before, after = before, placeholder = "text") {
|
|
25766
|
+
const selected = value.slice(start, end);
|
|
25767
|
+
const content = selected || placeholder;
|
|
25768
|
+
const replacement = `${before}${content}${after}`;
|
|
25769
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25770
|
+
const selectionStart = start + before.length;
|
|
25771
|
+
const selectionEnd = selectionStart + content.length;
|
|
25772
|
+
return {
|
|
25773
|
+
value: nextValue,
|
|
25774
|
+
selectionStart,
|
|
25775
|
+
selectionEnd
|
|
25776
|
+
};
|
|
25777
|
+
}
|
|
25778
|
+
function prefixSelectedLines(value, start, end, getPrefix) {
|
|
25779
|
+
const { lineStart, lineEnd } = getLineRange(value, start, end);
|
|
25780
|
+
const selectedBlock = value.slice(lineStart, lineEnd);
|
|
25781
|
+
const lines = selectedBlock.split("\n");
|
|
25782
|
+
const replacement = lines.map((line, index) => {
|
|
25783
|
+
const prefix = getPrefix(index);
|
|
25784
|
+
if (line.startsWith(prefix)) {
|
|
25785
|
+
return line;
|
|
25786
|
+
}
|
|
25787
|
+
return `${prefix}${line}`;
|
|
25788
|
+
}).join("\n");
|
|
25789
|
+
const nextValue = replaceRange(value, lineStart, lineEnd, replacement);
|
|
25790
|
+
const delta = replacement.length - selectedBlock.length;
|
|
25791
|
+
return {
|
|
25792
|
+
value: nextValue,
|
|
25793
|
+
selectionStart: start + getPrefix(0).length,
|
|
25794
|
+
selectionEnd: end + delta
|
|
25795
|
+
};
|
|
25796
|
+
}
|
|
25797
|
+
function prefixCurrentLine(value, start, end, prefix) {
|
|
25798
|
+
const { lineStart, lineEnd } = getLineRange(value, start, end);
|
|
25799
|
+
const line = value.slice(lineStart, lineEnd);
|
|
25800
|
+
const cleanedLine = line.replace(/^#{1,6}\s+/, "");
|
|
25801
|
+
const replacement = `${prefix}${cleanedLine}`;
|
|
25802
|
+
const nextValue = replaceRange(value, lineStart, lineEnd, replacement);
|
|
25803
|
+
return {
|
|
25804
|
+
value: nextValue,
|
|
25805
|
+
selectionStart: lineStart + prefix.length,
|
|
25806
|
+
selectionEnd: lineStart + replacement.length
|
|
25807
|
+
};
|
|
25808
|
+
}
|
|
25809
|
+
function insertBlock(value, start, end, block) {
|
|
25810
|
+
const before = value.slice(0, start);
|
|
25811
|
+
const after = value.slice(end);
|
|
25812
|
+
const needsLeadingNewline = before.length > 0 && !before.endsWith("\n");
|
|
25813
|
+
const needsTrailingNewline = after.length > 0 && !after.startsWith("\n");
|
|
25814
|
+
const replacement = `${needsLeadingNewline ? "\n" : ""}${block}${needsTrailingNewline ? "\n" : ""}`;
|
|
25815
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25816
|
+
const selectionStart = start + (needsLeadingNewline ? 1 : 0);
|
|
25817
|
+
const selectionEnd = selectionStart + block.length;
|
|
25818
|
+
return {
|
|
25819
|
+
value: nextValue,
|
|
25820
|
+
selectionStart,
|
|
25821
|
+
selectionEnd
|
|
25822
|
+
};
|
|
25823
|
+
}
|
|
25824
|
+
function applyMarkdownAction(value, start, end, action) {
|
|
25825
|
+
switch (action) {
|
|
25826
|
+
case "heading-1":
|
|
25827
|
+
return prefixCurrentLine(value, start, end, "# ");
|
|
25828
|
+
case "heading-2":
|
|
25829
|
+
return prefixCurrentLine(value, start, end, "## ");
|
|
25830
|
+
case "heading-3":
|
|
25831
|
+
return prefixCurrentLine(value, start, end, "### ");
|
|
25832
|
+
case "bold":
|
|
25833
|
+
return wrapSelection(value, start, end, "**", "**", "bold text");
|
|
25834
|
+
case "italic":
|
|
25835
|
+
return wrapSelection(value, start, end, "_", "_", "italic text");
|
|
25836
|
+
case "strike":
|
|
25837
|
+
return wrapSelection(value, start, end, "~~", "~~", "strikethrough text");
|
|
25838
|
+
case "inline-code":
|
|
25839
|
+
return wrapSelection(value, start, end, "`", "`", "code");
|
|
25840
|
+
case "code-block": {
|
|
25841
|
+
const selected = value.slice(start, end) || "code";
|
|
25842
|
+
return insertBlock(value, start, end, `\`\`\`ts
|
|
25843
|
+
${selected}
|
|
25844
|
+
\`\`\``);
|
|
25845
|
+
}
|
|
25846
|
+
case "link": {
|
|
25847
|
+
const selected = value.slice(start, end) || "link text";
|
|
25848
|
+
const replacement = `[${selected}](https://example.com)`;
|
|
25849
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25850
|
+
return {
|
|
25851
|
+
value: nextValue,
|
|
25852
|
+
selectionStart: start + 1,
|
|
25853
|
+
selectionEnd: start + 1 + selected.length
|
|
25854
|
+
};
|
|
25855
|
+
}
|
|
25856
|
+
case "image": {
|
|
25857
|
+
const selected = value.slice(start, end) || "image alt";
|
|
25858
|
+
const replacement = ``;
|
|
25859
|
+
const nextValue = replaceRange(value, start, end, replacement);
|
|
25860
|
+
return {
|
|
25861
|
+
value: nextValue,
|
|
25862
|
+
selectionStart: start + 2,
|
|
25863
|
+
selectionEnd: start + 2 + selected.length
|
|
25864
|
+
};
|
|
25865
|
+
}
|
|
25866
|
+
case "unordered-list":
|
|
25867
|
+
return prefixSelectedLines(value, start, end, () => "- ");
|
|
25868
|
+
case "ordered-list":
|
|
25869
|
+
return prefixSelectedLines(
|
|
25870
|
+
value,
|
|
25871
|
+
start,
|
|
25872
|
+
end,
|
|
25873
|
+
(index) => `${index + 1}. `
|
|
25874
|
+
);
|
|
25875
|
+
case "quote":
|
|
25876
|
+
return prefixSelectedLines(value, start, end, () => "> ");
|
|
25877
|
+
case "table":
|
|
25878
|
+
return insertBlock(
|
|
25879
|
+
value,
|
|
25880
|
+
start,
|
|
25881
|
+
end,
|
|
25882
|
+
[
|
|
25883
|
+
"| Column 1 | Column 2 | Column 3 |",
|
|
25884
|
+
"| --- | --- | --- |",
|
|
25885
|
+
"| Value 1 | Value 2 | Value 3 |"
|
|
25886
|
+
].join("\n")
|
|
25887
|
+
);
|
|
25888
|
+
case "hr":
|
|
25889
|
+
return insertBlock(value, start, end, "---");
|
|
25890
|
+
default:
|
|
25891
|
+
return {
|
|
25892
|
+
value,
|
|
25893
|
+
selectionStart: start,
|
|
25894
|
+
selectionEnd: end
|
|
25895
|
+
};
|
|
25896
|
+
}
|
|
25897
|
+
}
|
|
25898
|
+
function MarkdownSourceEditor({
|
|
25899
|
+
value,
|
|
25900
|
+
defaultValue = "",
|
|
25901
|
+
onChange,
|
|
25902
|
+
onBlur,
|
|
25903
|
+
viewMode,
|
|
25904
|
+
defaultViewMode = "preview",
|
|
25905
|
+
onViewModeChange,
|
|
25906
|
+
showToolbar = true,
|
|
25907
|
+
showViewModeToggle = true,
|
|
25908
|
+
toolbarProps,
|
|
25909
|
+
previewProps,
|
|
25910
|
+
minHeight = 260,
|
|
25911
|
+
maxHeight,
|
|
25912
|
+
disabled = false,
|
|
25913
|
+
readOnly = false,
|
|
25914
|
+
placeholder = "Write markdown...",
|
|
25915
|
+
containerClassName,
|
|
25916
|
+
toolbarClassName,
|
|
25917
|
+
textareaClassName,
|
|
25918
|
+
previewClassName,
|
|
25919
|
+
className,
|
|
25920
|
+
onKeyDown,
|
|
25921
|
+
...props
|
|
25922
|
+
}) {
|
|
25923
|
+
const textareaRef = useRef(null);
|
|
25924
|
+
const isControlled = value !== void 0;
|
|
25925
|
+
const isViewModeControlled = viewMode !== void 0;
|
|
25926
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
25927
|
+
const [internalViewMode, setInternalViewMode] = useState(defaultViewMode);
|
|
25928
|
+
const currentValue = isControlled ? value : internalValue;
|
|
25929
|
+
const currentViewMode = isViewModeControlled ? viewMode : internalViewMode;
|
|
25930
|
+
const resolvedValue = currentValue ?? "";
|
|
25931
|
+
useEffect(() => {
|
|
25932
|
+
if (!isControlled) {
|
|
25933
|
+
setInternalValue(defaultValue);
|
|
25934
|
+
}
|
|
25935
|
+
}, [defaultValue, isControlled]);
|
|
25936
|
+
useEffect(() => {
|
|
25937
|
+
if (!isViewModeControlled) {
|
|
25938
|
+
setInternalViewMode(defaultViewMode);
|
|
25939
|
+
}
|
|
25940
|
+
}, [defaultViewMode, isViewModeControlled]);
|
|
25941
|
+
const updateValue = (nextValue) => {
|
|
25942
|
+
if (!isControlled) {
|
|
25943
|
+
setInternalValue(nextValue);
|
|
25944
|
+
}
|
|
25945
|
+
onChange?.(nextValue);
|
|
25946
|
+
};
|
|
25947
|
+
const updateViewMode = (nextViewMode) => {
|
|
25948
|
+
if (!isViewModeControlled) {
|
|
25949
|
+
setInternalViewMode(nextViewMode);
|
|
25950
|
+
}
|
|
25951
|
+
onViewModeChange?.(nextViewMode);
|
|
25952
|
+
};
|
|
25953
|
+
const toggleViewMode = () => {
|
|
25954
|
+
updateViewMode(currentViewMode === "preview" ? "source" : "preview");
|
|
25955
|
+
};
|
|
25956
|
+
const runAction = (action) => {
|
|
25957
|
+
const textarea = textareaRef.current;
|
|
25958
|
+
if (!textarea || disabled || readOnly) return;
|
|
25959
|
+
const start = textarea.selectionStart;
|
|
25960
|
+
const end = textarea.selectionEnd;
|
|
25961
|
+
const result = applyMarkdownAction(resolvedValue, start, end, action);
|
|
25962
|
+
updateValue(result.value);
|
|
25963
|
+
window.setTimeout(() => {
|
|
25964
|
+
textarea.focus();
|
|
25965
|
+
textarea.setSelectionRange(result.selectionStart, result.selectionEnd);
|
|
25966
|
+
}, 0);
|
|
25967
|
+
};
|
|
25968
|
+
const handleToolbarAction = (action) => {
|
|
25969
|
+
if (currentViewMode === "preview") {
|
|
25970
|
+
updateViewMode("source");
|
|
25971
|
+
window.setTimeout(() => {
|
|
25972
|
+
runAction(action);
|
|
25973
|
+
}, 0);
|
|
25974
|
+
return;
|
|
25975
|
+
}
|
|
25976
|
+
runAction(action);
|
|
25977
|
+
};
|
|
25978
|
+
const handleKeyDown = (event) => {
|
|
25979
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === "b") {
|
|
25980
|
+
event.preventDefault();
|
|
25981
|
+
runAction("bold");
|
|
25982
|
+
return;
|
|
25983
|
+
}
|
|
25984
|
+
if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === "i") {
|
|
25985
|
+
event.preventDefault();
|
|
25986
|
+
runAction("italic");
|
|
25987
|
+
return;
|
|
25988
|
+
}
|
|
25989
|
+
onKeyDown?.(event);
|
|
25990
|
+
};
|
|
25991
|
+
return /* @__PURE__ */ jsxs(
|
|
25992
|
+
"div",
|
|
25993
|
+
{
|
|
25994
|
+
className: classNames66(
|
|
25995
|
+
"eui-markdown-editor",
|
|
25996
|
+
"overflow-hidden rounded border border-gray-300 bg-white",
|
|
25997
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
25998
|
+
containerClassName,
|
|
25999
|
+
className
|
|
26000
|
+
),
|
|
26001
|
+
children: [
|
|
26002
|
+
showToolbar ? /* @__PURE__ */ jsx(
|
|
26003
|
+
MarkdownToolbar_default,
|
|
26004
|
+
{
|
|
26005
|
+
...toolbarProps,
|
|
26006
|
+
disabled,
|
|
26007
|
+
actionsDisabled: readOnly,
|
|
26008
|
+
viewMode: currentViewMode,
|
|
26009
|
+
showViewModeToggle,
|
|
26010
|
+
className: classNames66(toolbarClassName, toolbarProps?.className),
|
|
26011
|
+
onViewModeToggle: toggleViewMode,
|
|
26012
|
+
onAction: handleToolbarAction
|
|
26013
|
+
}
|
|
26014
|
+
) : null,
|
|
26015
|
+
currentViewMode === "preview" ? /* @__PURE__ */ jsx(
|
|
26016
|
+
"div",
|
|
26017
|
+
{
|
|
26018
|
+
className: classNames66(
|
|
26019
|
+
"eui-markdown-editor-preview",
|
|
26020
|
+
"min-h-[260px] p-4",
|
|
26021
|
+
previewClassName
|
|
26022
|
+
),
|
|
26023
|
+
style: {
|
|
26024
|
+
minHeight,
|
|
26025
|
+
maxHeight
|
|
26026
|
+
},
|
|
26027
|
+
children: resolvedValue.trim() ? /* @__PURE__ */ jsx(MarkdownViewer_default, { ...previewProps, value: resolvedValue }) : /* @__PURE__ */ jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: placeholder })
|
|
26028
|
+
}
|
|
26029
|
+
) : /* @__PURE__ */ jsx(
|
|
26030
|
+
"textarea",
|
|
26031
|
+
{
|
|
26032
|
+
...props,
|
|
26033
|
+
ref: textareaRef,
|
|
26034
|
+
value: resolvedValue,
|
|
26035
|
+
disabled,
|
|
26036
|
+
readOnly,
|
|
26037
|
+
placeholder,
|
|
26038
|
+
onChange: (event) => updateValue(event.target.value),
|
|
26039
|
+
onBlur,
|
|
26040
|
+
onKeyDown: handleKeyDown,
|
|
26041
|
+
className: classNames66(
|
|
26042
|
+
"eui-markdown-source-textarea",
|
|
26043
|
+
"block w-full resize-y border-0 bg-transparent p-4 font-mono text-sm leading-7",
|
|
26044
|
+
"text-gray-900 outline-none placeholder:text-gray-400",
|
|
26045
|
+
"dark:text-gray-100 dark:placeholder:text-gray-500",
|
|
26046
|
+
"disabled:cursor-not-allowed disabled:opacity-60",
|
|
26047
|
+
textareaClassName
|
|
26048
|
+
),
|
|
26049
|
+
style: {
|
|
26050
|
+
minHeight,
|
|
26051
|
+
maxHeight,
|
|
26052
|
+
...props.style
|
|
26053
|
+
}
|
|
26054
|
+
}
|
|
26055
|
+
)
|
|
26056
|
+
]
|
|
26057
|
+
}
|
|
26058
|
+
);
|
|
26059
|
+
}
|
|
26060
|
+
var MarkdownSourceEditor_default = MarkdownSourceEditor;
|
|
26061
|
+
function MarkdownPreviewPane({
|
|
26062
|
+
value = "",
|
|
26063
|
+
emptyState = /* @__PURE__ */ jsx("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: "Nothing to preview yet." }),
|
|
26064
|
+
className,
|
|
26065
|
+
contentClassName,
|
|
26066
|
+
...viewerProps
|
|
26067
|
+
}) {
|
|
26068
|
+
return /* @__PURE__ */ jsx(
|
|
26069
|
+
"div",
|
|
26070
|
+
{
|
|
26071
|
+
className: classNames66(
|
|
26072
|
+
"eui-markdown-preview-pane",
|
|
26073
|
+
"rounded border border-gray-300 bg-white p-4",
|
|
26074
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
26075
|
+
className
|
|
26076
|
+
),
|
|
26077
|
+
children: value.trim() ? /* @__PURE__ */ jsx(
|
|
26078
|
+
MarkdownViewer_default,
|
|
26079
|
+
{
|
|
26080
|
+
...viewerProps,
|
|
26081
|
+
value,
|
|
26082
|
+
className: contentClassName
|
|
26083
|
+
}
|
|
26084
|
+
) : emptyState
|
|
26085
|
+
}
|
|
26086
|
+
);
|
|
26087
|
+
}
|
|
26088
|
+
var MarkdownPreviewPane_default = MarkdownPreviewPane;
|
|
26089
|
+
function MarkdownSplitEditor({
|
|
26090
|
+
value,
|
|
26091
|
+
defaultValue = "",
|
|
26092
|
+
onChange,
|
|
26093
|
+
onBlur,
|
|
26094
|
+
previewProps,
|
|
26095
|
+
previewPlacement = "right",
|
|
26096
|
+
sourceLabel = "Editor",
|
|
26097
|
+
previewLabel = "Preview",
|
|
26098
|
+
wrapperClassName,
|
|
26099
|
+
sourceWrapperClassName,
|
|
26100
|
+
previewWrapperClassName,
|
|
26101
|
+
...sourceEditorProps
|
|
26102
|
+
}) {
|
|
26103
|
+
const isControlled = value !== void 0;
|
|
26104
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
26105
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26106
|
+
useEffect(() => {
|
|
26107
|
+
if (!isControlled) {
|
|
26108
|
+
setInternalValue(defaultValue);
|
|
26109
|
+
}
|
|
26110
|
+
}, [defaultValue, isControlled]);
|
|
26111
|
+
const updateValue = (nextValue) => {
|
|
26112
|
+
if (!isControlled) {
|
|
26113
|
+
setInternalValue(nextValue);
|
|
26114
|
+
}
|
|
26115
|
+
onChange?.(nextValue);
|
|
26116
|
+
};
|
|
26117
|
+
const isHorizontal = previewPlacement === "right";
|
|
26118
|
+
return /* @__PURE__ */ jsxs(
|
|
26119
|
+
"div",
|
|
26120
|
+
{
|
|
26121
|
+
className: classNames66(
|
|
26122
|
+
"eui-markdown-split-editor",
|
|
26123
|
+
"grid gap-4",
|
|
26124
|
+
isHorizontal ? "grid-cols-1 lg:grid-cols-2" : "grid-cols-1",
|
|
26125
|
+
wrapperClassName
|
|
26126
|
+
),
|
|
26127
|
+
children: [
|
|
26128
|
+
/* @__PURE__ */ jsxs(
|
|
26129
|
+
"div",
|
|
26130
|
+
{
|
|
26131
|
+
className: classNames66(
|
|
26132
|
+
"eui-markdown-split-source",
|
|
26133
|
+
"min-w-0 space-y-2",
|
|
26134
|
+
sourceWrapperClassName
|
|
26135
|
+
),
|
|
26136
|
+
children: [
|
|
26137
|
+
sourceLabel ? /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-gray-700 dark:text-gray-200", children: sourceLabel }) : null,
|
|
26138
|
+
/* @__PURE__ */ jsx(
|
|
26139
|
+
MarkdownSourceEditor_default,
|
|
26140
|
+
{
|
|
26141
|
+
...sourceEditorProps,
|
|
26142
|
+
value: currentValue,
|
|
26143
|
+
onChange: updateValue,
|
|
26144
|
+
onBlur,
|
|
26145
|
+
defaultViewMode: "source",
|
|
26146
|
+
showViewModeToggle: false
|
|
26147
|
+
}
|
|
26148
|
+
)
|
|
26149
|
+
]
|
|
26150
|
+
}
|
|
26151
|
+
),
|
|
26152
|
+
/* @__PURE__ */ jsxs(
|
|
26153
|
+
"div",
|
|
26154
|
+
{
|
|
26155
|
+
className: classNames66(
|
|
26156
|
+
"eui-markdown-split-preview",
|
|
26157
|
+
"min-w-0 space-y-2",
|
|
26158
|
+
previewWrapperClassName
|
|
26159
|
+
),
|
|
26160
|
+
children: [
|
|
26161
|
+
previewLabel ? /* @__PURE__ */ jsx("div", { className: "text-sm font-semibold text-gray-700 dark:text-gray-200", children: previewLabel }) : null,
|
|
26162
|
+
/* @__PURE__ */ jsx(MarkdownPreviewPane_default, { ...previewProps, value: currentValue })
|
|
26163
|
+
]
|
|
26164
|
+
}
|
|
26165
|
+
)
|
|
26166
|
+
]
|
|
26167
|
+
}
|
|
26168
|
+
);
|
|
26169
|
+
}
|
|
26170
|
+
var MarkdownSplitEditor_default = MarkdownSplitEditor;
|
|
26171
|
+
function MarkdownEditor({
|
|
26172
|
+
value,
|
|
26173
|
+
defaultValue = "",
|
|
26174
|
+
onChange,
|
|
26175
|
+
onBlur,
|
|
26176
|
+
mode = "source",
|
|
26177
|
+
viewMode,
|
|
26178
|
+
defaultViewMode = "preview",
|
|
26179
|
+
onViewModeChange,
|
|
26180
|
+
splitProps,
|
|
26181
|
+
richEditor,
|
|
26182
|
+
...sourceEditorProps
|
|
26183
|
+
}) {
|
|
26184
|
+
const isControlled = value !== void 0;
|
|
26185
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
26186
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26187
|
+
useEffect(() => {
|
|
26188
|
+
if (!isControlled) {
|
|
26189
|
+
setInternalValue(defaultValue);
|
|
26190
|
+
}
|
|
26191
|
+
}, [defaultValue, isControlled]);
|
|
26192
|
+
const updateValue = (nextValue) => {
|
|
26193
|
+
if (!isControlled) {
|
|
26194
|
+
setInternalValue(nextValue);
|
|
26195
|
+
}
|
|
26196
|
+
onChange?.(nextValue);
|
|
26197
|
+
};
|
|
26198
|
+
if (mode === "rich" && richEditor) {
|
|
26199
|
+
return /* @__PURE__ */ jsx(Fragment, { children: richEditor });
|
|
26200
|
+
}
|
|
26201
|
+
if (mode === "split") {
|
|
26202
|
+
return /* @__PURE__ */ jsx(
|
|
26203
|
+
MarkdownSplitEditor_default,
|
|
26204
|
+
{
|
|
26205
|
+
...sourceEditorProps,
|
|
26206
|
+
...splitProps,
|
|
26207
|
+
value: currentValue,
|
|
26208
|
+
onChange: updateValue,
|
|
26209
|
+
onBlur
|
|
26210
|
+
}
|
|
26211
|
+
);
|
|
26212
|
+
}
|
|
26213
|
+
return /* @__PURE__ */ jsx(
|
|
26214
|
+
MarkdownSourceEditor_default,
|
|
26215
|
+
{
|
|
26216
|
+
...sourceEditorProps,
|
|
26217
|
+
value: currentValue,
|
|
26218
|
+
onChange: updateValue,
|
|
26219
|
+
onBlur,
|
|
26220
|
+
viewMode,
|
|
26221
|
+
defaultViewMode,
|
|
26222
|
+
onViewModeChange
|
|
26223
|
+
}
|
|
26224
|
+
);
|
|
26225
|
+
}
|
|
26226
|
+
var MarkdownEditor_default = MarkdownEditor;
|
|
26227
|
+
function MarkdownField({
|
|
26228
|
+
name,
|
|
26229
|
+
validate,
|
|
26230
|
+
label,
|
|
26231
|
+
helperText,
|
|
26232
|
+
wrapperClassName,
|
|
26233
|
+
labelClassName,
|
|
26234
|
+
helperTextClassName,
|
|
26235
|
+
...editorProps
|
|
26236
|
+
}) {
|
|
26237
|
+
const [field, meta, helpers] = useField({
|
|
26238
|
+
name,
|
|
26239
|
+
validate
|
|
26240
|
+
});
|
|
26241
|
+
const hasError = Boolean(meta.touched && meta.error);
|
|
26242
|
+
return /* @__PURE__ */ jsxs(
|
|
26243
|
+
"div",
|
|
26244
|
+
{
|
|
26245
|
+
className: classNames66(
|
|
26246
|
+
"eui-markdown-field",
|
|
26247
|
+
"relative space-y-2",
|
|
26248
|
+
wrapperClassName
|
|
26249
|
+
),
|
|
26250
|
+
children: [
|
|
26251
|
+
label ? /* @__PURE__ */ jsx(
|
|
26252
|
+
"label",
|
|
26253
|
+
{
|
|
26254
|
+
htmlFor: editorProps.id || field.name,
|
|
26255
|
+
className: classNames66(
|
|
26256
|
+
"block text-sm font-medium text-gray-700 dark:text-gray-200",
|
|
26257
|
+
labelClassName
|
|
26258
|
+
),
|
|
26259
|
+
children: label
|
|
26260
|
+
}
|
|
26261
|
+
) : null,
|
|
26262
|
+
/* @__PURE__ */ jsx(
|
|
26263
|
+
MarkdownEditor_default,
|
|
26264
|
+
{
|
|
26265
|
+
...editorProps,
|
|
26266
|
+
id: editorProps.id || field.name,
|
|
26267
|
+
name: field.name,
|
|
26268
|
+
value: field.value || "",
|
|
26269
|
+
onChange: (nextValue) => {
|
|
26270
|
+
helpers.setValue(nextValue);
|
|
26271
|
+
},
|
|
26272
|
+
onBlur: () => {
|
|
26273
|
+
helpers.setTouched(true);
|
|
26274
|
+
}
|
|
26275
|
+
}
|
|
26276
|
+
),
|
|
26277
|
+
helperText && !hasError ? /* @__PURE__ */ jsx(
|
|
26278
|
+
"p",
|
|
26279
|
+
{
|
|
26280
|
+
className: classNames66(
|
|
26281
|
+
"text-sm text-gray-500 dark:text-gray-400",
|
|
26282
|
+
helperTextClassName
|
|
26283
|
+
),
|
|
26284
|
+
children: helperText
|
|
26285
|
+
}
|
|
26286
|
+
) : null,
|
|
26287
|
+
/* @__PURE__ */ jsx(InputResponse_default, { name: field.name, visibility: hasError, variant: "danger" })
|
|
26288
|
+
]
|
|
26289
|
+
}
|
|
26290
|
+
);
|
|
26291
|
+
}
|
|
26292
|
+
var MarkdownField_default = MarkdownField;
|
|
26293
|
+
function resolveSize(value) {
|
|
26294
|
+
if (value === void 0) return void 0;
|
|
26295
|
+
return typeof value === "number" ? `${value}px` : value;
|
|
26296
|
+
}
|
|
26297
|
+
function MarkdownLayout({
|
|
26298
|
+
children,
|
|
26299
|
+
content,
|
|
26300
|
+
toc,
|
|
26301
|
+
sidebar,
|
|
26302
|
+
aside,
|
|
26303
|
+
header,
|
|
26304
|
+
footer,
|
|
26305
|
+
tocPosition = "right",
|
|
26306
|
+
showToc = true,
|
|
26307
|
+
showSidebar = true,
|
|
26308
|
+
showAside = true,
|
|
26309
|
+
stickyToc = true,
|
|
26310
|
+
stickySidebar = true,
|
|
26311
|
+
stickyAside = true,
|
|
26312
|
+
stickyOffset = "6rem",
|
|
26313
|
+
maxWidth = "1440px",
|
|
26314
|
+
className,
|
|
26315
|
+
containerClassName,
|
|
26316
|
+
gridClassName,
|
|
26317
|
+
contentClassName,
|
|
26318
|
+
tocClassName,
|
|
26319
|
+
sidebarClassName,
|
|
26320
|
+
asideClassName,
|
|
26321
|
+
headerClassName,
|
|
26322
|
+
footerClassName
|
|
26323
|
+
}) {
|
|
26324
|
+
const resolvedContent = children ?? content;
|
|
26325
|
+
const hasToc = showToc && Boolean(toc);
|
|
26326
|
+
const hasSidebar = showSidebar && Boolean(sidebar);
|
|
26327
|
+
const hasAside = showAside && Boolean(aside);
|
|
26328
|
+
const stickyStyle = {
|
|
26329
|
+
top: resolveSize(stickyOffset)
|
|
26330
|
+
};
|
|
26331
|
+
const hasLeftToc = hasToc && tocPosition === "left";
|
|
26332
|
+
const hasRightToc = hasToc && tocPosition === "right";
|
|
26333
|
+
return /* @__PURE__ */ jsx("div", { className: classNames66("eui-markdown-layout", "w-full", className), children: /* @__PURE__ */ jsxs(
|
|
26334
|
+
"div",
|
|
26335
|
+
{
|
|
26336
|
+
className: classNames66(
|
|
26337
|
+
"eui-markdown-layout-container",
|
|
26338
|
+
"mx-auto w-full px-4 sm:px-6 lg:px-8",
|
|
26339
|
+
containerClassName
|
|
26340
|
+
),
|
|
26341
|
+
style: {
|
|
26342
|
+
maxWidth: resolveSize(maxWidth)
|
|
26343
|
+
},
|
|
26344
|
+
children: [
|
|
26345
|
+
header ? /* @__PURE__ */ jsx(
|
|
26346
|
+
"header",
|
|
26347
|
+
{
|
|
26348
|
+
className: classNames66(
|
|
26349
|
+
"eui-markdown-layout-header",
|
|
26350
|
+
"mb-8",
|
|
26351
|
+
headerClassName
|
|
26352
|
+
),
|
|
26353
|
+
children: header
|
|
26354
|
+
}
|
|
26355
|
+
) : null,
|
|
26356
|
+
/* @__PURE__ */ jsxs(
|
|
26357
|
+
"div",
|
|
26358
|
+
{
|
|
26359
|
+
className: classNames66(
|
|
26360
|
+
"eui-markdown-layout-grid",
|
|
26361
|
+
"grid grid-cols-1 gap-8",
|
|
26362
|
+
hasSidebar && hasToc && "xl:grid-cols-[16rem_minmax(0,1fr)_18rem]",
|
|
26363
|
+
hasSidebar && !hasToc && "lg:grid-cols-[16rem_minmax(0,1fr)]",
|
|
26364
|
+
!hasSidebar && hasToc && "lg:grid-cols-[minmax(0,1fr)_18rem]",
|
|
26365
|
+
hasAside && "2xl:grid-cols-[16rem_minmax(0,1fr)_18rem_16rem]",
|
|
26366
|
+
gridClassName
|
|
26367
|
+
),
|
|
26368
|
+
children: [
|
|
26369
|
+
hasSidebar ? /* @__PURE__ */ jsx(
|
|
26370
|
+
"aside",
|
|
26371
|
+
{
|
|
26372
|
+
className: classNames66(
|
|
26373
|
+
"eui-markdown-layout-sidebar",
|
|
26374
|
+
"min-w-0",
|
|
26375
|
+
stickySidebar && "lg:sticky lg:self-start",
|
|
26376
|
+
sidebarClassName
|
|
26377
|
+
),
|
|
26378
|
+
style: stickySidebar ? stickyStyle : void 0,
|
|
26379
|
+
children: sidebar
|
|
26380
|
+
}
|
|
26381
|
+
) : null,
|
|
26382
|
+
hasLeftToc ? /* @__PURE__ */ jsx(
|
|
26383
|
+
"aside",
|
|
26384
|
+
{
|
|
26385
|
+
className: classNames66(
|
|
26386
|
+
"eui-markdown-layout-toc",
|
|
26387
|
+
"min-w-0",
|
|
26388
|
+
stickyToc && "lg:sticky lg:self-start",
|
|
26389
|
+
tocClassName
|
|
26390
|
+
),
|
|
26391
|
+
style: stickyToc ? stickyStyle : void 0,
|
|
26392
|
+
children: toc
|
|
26393
|
+
}
|
|
26394
|
+
) : null,
|
|
26395
|
+
/* @__PURE__ */ jsx(
|
|
26396
|
+
"main",
|
|
26397
|
+
{
|
|
26398
|
+
className: classNames66(
|
|
26399
|
+
"eui-markdown-layout-content",
|
|
26400
|
+
"min-w-0",
|
|
26401
|
+
contentClassName
|
|
26402
|
+
),
|
|
26403
|
+
children: resolvedContent
|
|
26404
|
+
}
|
|
26405
|
+
),
|
|
26406
|
+
hasRightToc ? /* @__PURE__ */ jsx(
|
|
26407
|
+
"aside",
|
|
26408
|
+
{
|
|
26409
|
+
className: classNames66(
|
|
26410
|
+
"eui-markdown-layout-toc",
|
|
26411
|
+
"min-w-0",
|
|
26412
|
+
stickyToc && "lg:sticky lg:self-start",
|
|
26413
|
+
tocClassName
|
|
26414
|
+
),
|
|
26415
|
+
style: stickyToc ? stickyStyle : void 0,
|
|
26416
|
+
children: toc
|
|
26417
|
+
}
|
|
26418
|
+
) : null,
|
|
26419
|
+
hasAside ? /* @__PURE__ */ jsx(
|
|
26420
|
+
"aside",
|
|
26421
|
+
{
|
|
26422
|
+
className: classNames66(
|
|
26423
|
+
"eui-markdown-layout-aside",
|
|
26424
|
+
"min-w-0",
|
|
26425
|
+
stickyAside && "2xl:sticky 2xl:self-start",
|
|
26426
|
+
asideClassName
|
|
26427
|
+
),
|
|
26428
|
+
style: stickyAside ? stickyStyle : void 0,
|
|
26429
|
+
children: aside
|
|
26430
|
+
}
|
|
26431
|
+
) : null
|
|
26432
|
+
]
|
|
26433
|
+
}
|
|
26434
|
+
),
|
|
26435
|
+
footer ? /* @__PURE__ */ jsx(
|
|
26436
|
+
"footer",
|
|
26437
|
+
{
|
|
26438
|
+
className: classNames66(
|
|
26439
|
+
"eui-markdown-layout-footer",
|
|
26440
|
+
"mt-10",
|
|
26441
|
+
footerClassName
|
|
26442
|
+
),
|
|
26443
|
+
children: footer
|
|
26444
|
+
}
|
|
26445
|
+
) : null
|
|
26446
|
+
]
|
|
26447
|
+
}
|
|
26448
|
+
) });
|
|
26449
|
+
}
|
|
26450
|
+
var MarkdownLayout_default = MarkdownLayout;
|
|
26451
|
+
function MarkdownDocsLayoutContent({
|
|
26452
|
+
children,
|
|
26453
|
+
markdown,
|
|
26454
|
+
value,
|
|
26455
|
+
headings,
|
|
26456
|
+
title,
|
|
26457
|
+
description,
|
|
26458
|
+
header,
|
|
26459
|
+
headerActions,
|
|
26460
|
+
content,
|
|
26461
|
+
toc,
|
|
26462
|
+
viewerProps,
|
|
26463
|
+
tocProps,
|
|
26464
|
+
enableDefaultViewer = true,
|
|
26465
|
+
enableDefaultToc = true,
|
|
26466
|
+
docsHeaderClassName,
|
|
26467
|
+
docsTitleClassName,
|
|
26468
|
+
docsDescriptionClassName,
|
|
26469
|
+
...layoutProps
|
|
26470
|
+
}) {
|
|
26471
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
26472
|
+
const resolvedHeader = header ?? (title || description || headerActions ? /* @__PURE__ */ jsx(
|
|
26473
|
+
"div",
|
|
26474
|
+
{
|
|
26475
|
+
className: classNames66(
|
|
26476
|
+
"eui-markdown-docs-header",
|
|
26477
|
+
"flex flex-col gap-4 border-b border-gray-200 pb-6",
|
|
26478
|
+
"dark:border-gray-700",
|
|
26479
|
+
docsHeaderClassName
|
|
26480
|
+
),
|
|
26481
|
+
children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
26482
|
+
/* @__PURE__ */ jsxs("div", { className: "min-w-0 space-y-2", children: [
|
|
26483
|
+
title ? /* @__PURE__ */ jsx(
|
|
26484
|
+
"h1",
|
|
26485
|
+
{
|
|
26486
|
+
className: classNames66(
|
|
26487
|
+
"eui-markdown-docs-title",
|
|
26488
|
+
"text-3xl font-bold tracking-tight text-gray-950",
|
|
26489
|
+
"dark:text-gray-50",
|
|
26490
|
+
docsTitleClassName
|
|
26491
|
+
),
|
|
26492
|
+
children: title
|
|
26493
|
+
}
|
|
26494
|
+
) : null,
|
|
26495
|
+
description ? /* @__PURE__ */ jsx(
|
|
26496
|
+
"div",
|
|
26497
|
+
{
|
|
26498
|
+
className: classNames66(
|
|
26499
|
+
"eui-markdown-docs-description",
|
|
26500
|
+
"max-w-3xl text-base leading-7 text-gray-600",
|
|
26501
|
+
"dark:text-gray-400",
|
|
26502
|
+
docsDescriptionClassName
|
|
26503
|
+
),
|
|
26504
|
+
children: description
|
|
26505
|
+
}
|
|
26506
|
+
) : null
|
|
26507
|
+
] }),
|
|
26508
|
+
headerActions ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: headerActions }) : null
|
|
26509
|
+
] })
|
|
26510
|
+
}
|
|
26511
|
+
) : null);
|
|
26512
|
+
const resolvedContent = children ?? content ?? (enableDefaultViewer ? /* @__PURE__ */ jsx(
|
|
26513
|
+
MarkdownViewer_default,
|
|
26514
|
+
{
|
|
26515
|
+
...viewerProps,
|
|
26516
|
+
value: resolvedMarkdown,
|
|
26517
|
+
headings
|
|
26518
|
+
}
|
|
26519
|
+
) : null);
|
|
26520
|
+
const resolvedToc = toc ?? (enableDefaultToc ? /* @__PURE__ */ jsx(
|
|
26521
|
+
MarkdownTOC_default,
|
|
26522
|
+
{
|
|
26523
|
+
...tocProps,
|
|
26524
|
+
markdown: resolvedMarkdown,
|
|
26525
|
+
headings
|
|
26526
|
+
}
|
|
26527
|
+
) : null);
|
|
26528
|
+
return /* @__PURE__ */ jsx(
|
|
26529
|
+
MarkdownLayout_default,
|
|
26530
|
+
{
|
|
26531
|
+
...layoutProps,
|
|
26532
|
+
header: resolvedHeader,
|
|
26533
|
+
toc: resolvedToc,
|
|
26534
|
+
content: resolvedContent
|
|
26535
|
+
}
|
|
26536
|
+
);
|
|
26537
|
+
}
|
|
26538
|
+
function MarkdownDocsLayout({
|
|
26539
|
+
markdown,
|
|
26540
|
+
value,
|
|
26541
|
+
headings,
|
|
26542
|
+
meta,
|
|
26543
|
+
providerProps,
|
|
26544
|
+
enableProvider = true,
|
|
26545
|
+
...props
|
|
26546
|
+
}) {
|
|
26547
|
+
const resolvedMarkdown = value ?? markdown ?? "";
|
|
26548
|
+
if (!enableProvider) {
|
|
26549
|
+
return /* @__PURE__ */ jsx(
|
|
26550
|
+
MarkdownDocsLayoutContent,
|
|
26551
|
+
{
|
|
26552
|
+
...props,
|
|
26553
|
+
markdown,
|
|
26554
|
+
value,
|
|
26555
|
+
headings
|
|
26556
|
+
}
|
|
26557
|
+
);
|
|
26558
|
+
}
|
|
26559
|
+
return /* @__PURE__ */ jsx(
|
|
26560
|
+
MarkdownProvider_default,
|
|
26561
|
+
{
|
|
26562
|
+
...providerProps,
|
|
26563
|
+
markdown: resolvedMarkdown,
|
|
26564
|
+
headings,
|
|
26565
|
+
meta,
|
|
26566
|
+
children: /* @__PURE__ */ jsx(
|
|
26567
|
+
MarkdownDocsLayoutContent,
|
|
26568
|
+
{
|
|
26569
|
+
...props,
|
|
26570
|
+
markdown: resolvedMarkdown,
|
|
26571
|
+
headings
|
|
26572
|
+
}
|
|
26573
|
+
)
|
|
26574
|
+
}
|
|
26575
|
+
);
|
|
26576
|
+
}
|
|
26577
|
+
var MarkdownDocsLayout_default = MarkdownDocsLayout;
|
|
26578
|
+
function toCssSize2(value) {
|
|
26579
|
+
if (typeof value === "number") return `${value}px`;
|
|
26580
|
+
return value;
|
|
26581
|
+
}
|
|
26582
|
+
function CodeMirrorMarkdownEditor({
|
|
26583
|
+
value,
|
|
26584
|
+
defaultValue = "",
|
|
26585
|
+
onChange,
|
|
26586
|
+
onBlur,
|
|
26587
|
+
id,
|
|
26588
|
+
name,
|
|
26589
|
+
placeholder = "Write markdown...",
|
|
26590
|
+
disabled = false,
|
|
26591
|
+
readOnly = false,
|
|
26592
|
+
autoFocus = false,
|
|
26593
|
+
minHeight = 320,
|
|
26594
|
+
maxHeight,
|
|
26595
|
+
height,
|
|
26596
|
+
dark = false,
|
|
26597
|
+
className,
|
|
26598
|
+
editorClassName,
|
|
26599
|
+
extensions
|
|
26600
|
+
}) {
|
|
26601
|
+
const isControlled = value !== void 0;
|
|
26602
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
26603
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26604
|
+
useEffect(() => {
|
|
26605
|
+
if (!isControlled) {
|
|
26606
|
+
setInternalValue(defaultValue);
|
|
26607
|
+
}
|
|
26608
|
+
}, [defaultValue, isControlled]);
|
|
26609
|
+
const updateValue = (nextValue) => {
|
|
26610
|
+
if (!isControlled) {
|
|
26611
|
+
setInternalValue(nextValue);
|
|
26612
|
+
}
|
|
26613
|
+
onChange?.(nextValue);
|
|
26614
|
+
};
|
|
26615
|
+
return /* @__PURE__ */ jsx(
|
|
26616
|
+
"div",
|
|
26617
|
+
{
|
|
26618
|
+
id,
|
|
26619
|
+
"data-name": name,
|
|
26620
|
+
className: classNames66(
|
|
26621
|
+
"eui-markdown-adapter",
|
|
26622
|
+
"eui-markdown-codemirror-adapter",
|
|
26623
|
+
"overflow-hidden rounded border border-gray-300 bg-white",
|
|
26624
|
+
"dark:border-gray-700 dark:bg-gray-950",
|
|
26625
|
+
disabled && "cursor-not-allowed opacity-60",
|
|
26626
|
+
className
|
|
26627
|
+
),
|
|
26628
|
+
style: {
|
|
26629
|
+
minHeight: toCssSize2(minHeight),
|
|
26630
|
+
maxHeight: toCssSize2(maxHeight)
|
|
26631
|
+
},
|
|
26632
|
+
children: /* @__PURE__ */ jsx(
|
|
26633
|
+
CodeMirror,
|
|
26634
|
+
{
|
|
26635
|
+
value: currentValue,
|
|
26636
|
+
height,
|
|
26637
|
+
minHeight: toCssSize2(minHeight),
|
|
26638
|
+
maxHeight: toCssSize2(maxHeight),
|
|
26639
|
+
placeholder,
|
|
26640
|
+
autoFocus,
|
|
26641
|
+
editable: !disabled && !readOnly,
|
|
26642
|
+
readOnly,
|
|
26643
|
+
theme: dark ? oneDark : void 0,
|
|
26644
|
+
extensions: [markdown(), ...extensions ?? []],
|
|
26645
|
+
basicSetup: {
|
|
26646
|
+
lineNumbers: true,
|
|
26647
|
+
foldGutter: true,
|
|
26648
|
+
highlightActiveLine: true,
|
|
26649
|
+
highlightSelectionMatches: true,
|
|
26650
|
+
autocompletion: true,
|
|
26651
|
+
closeBrackets: true,
|
|
26652
|
+
bracketMatching: true
|
|
26653
|
+
},
|
|
26654
|
+
className: classNames66("eui-markdown-codemirror", editorClassName),
|
|
26655
|
+
onChange: updateValue,
|
|
26656
|
+
onBlur
|
|
26657
|
+
}
|
|
26658
|
+
)
|
|
26659
|
+
}
|
|
26660
|
+
);
|
|
26661
|
+
}
|
|
26662
|
+
var CodeMirrorMarkdownEditor_default = CodeMirrorMarkdownEditor;
|
|
26663
|
+
function toCssSize3(value) {
|
|
26664
|
+
if (typeof value === "number") return `${value}px`;
|
|
26665
|
+
return value;
|
|
26666
|
+
}
|
|
26667
|
+
function createDefaultPlugins(showToolbar) {
|
|
26668
|
+
return [
|
|
26669
|
+
headingsPlugin(),
|
|
26670
|
+
listsPlugin(),
|
|
26671
|
+
quotePlugin(),
|
|
26672
|
+
thematicBreakPlugin(),
|
|
26673
|
+
markdownShortcutPlugin(),
|
|
26674
|
+
linkPlugin(),
|
|
26675
|
+
imagePlugin(),
|
|
26676
|
+
tablePlugin(),
|
|
26677
|
+
codeBlockPlugin({
|
|
26678
|
+
defaultCodeBlockLanguage: "tsx"
|
|
26679
|
+
}),
|
|
26680
|
+
codeMirrorPlugin({
|
|
26681
|
+
codeBlockLanguages: {
|
|
26682
|
+
js: "JavaScript",
|
|
26683
|
+
jsx: "JSX",
|
|
26684
|
+
ts: "TypeScript",
|
|
26685
|
+
tsx: "TSX",
|
|
26686
|
+
css: "CSS",
|
|
26687
|
+
scss: "SCSS",
|
|
26688
|
+
json: "JSON",
|
|
26689
|
+
bash: "Bash",
|
|
26690
|
+
sh: "Shell",
|
|
26691
|
+
html: "HTML",
|
|
26692
|
+
xml: "XML",
|
|
26693
|
+
md: "Markdown"
|
|
26694
|
+
}
|
|
26695
|
+
}),
|
|
26696
|
+
...showToolbar ? [
|
|
26697
|
+
toolbarPlugin({
|
|
26698
|
+
toolbarContents: () => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
26699
|
+
/* @__PURE__ */ jsx(UndoRedo, {}),
|
|
26700
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
26701
|
+
/* @__PURE__ */ jsx(BoldItalicUnderlineToggles, {}),
|
|
26702
|
+
/* @__PURE__ */ jsx(CodeToggle, {}),
|
|
26703
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
26704
|
+
/* @__PURE__ */ jsx(ListsToggle, {}),
|
|
26705
|
+
/* @__PURE__ */ jsx(Separator, {}),
|
|
26706
|
+
/* @__PURE__ */ jsx(CreateLink, {}),
|
|
26707
|
+
/* @__PURE__ */ jsx(InsertImage, {}),
|
|
26708
|
+
/* @__PURE__ */ jsx(InsertTable, {}),
|
|
26709
|
+
/* @__PURE__ */ jsx(InsertCodeBlock, {})
|
|
26710
|
+
] })
|
|
26711
|
+
})
|
|
26712
|
+
] : []
|
|
26713
|
+
];
|
|
26714
|
+
}
|
|
26715
|
+
function MDXMarkdownEditor({
|
|
26716
|
+
value,
|
|
26717
|
+
defaultValue = "",
|
|
26718
|
+
onChange,
|
|
26719
|
+
onBlur,
|
|
26720
|
+
id,
|
|
26721
|
+
name,
|
|
26722
|
+
disabled = false,
|
|
26723
|
+
readOnly = false,
|
|
26724
|
+
minHeight = 360,
|
|
26725
|
+
maxHeight,
|
|
26726
|
+
dark = false,
|
|
26727
|
+
className,
|
|
26728
|
+
editorClassName,
|
|
26729
|
+
plugins,
|
|
26730
|
+
showToolbar = true,
|
|
26731
|
+
...props
|
|
26732
|
+
}) {
|
|
26733
|
+
const editorRef = useRef(null);
|
|
26734
|
+
const isControlled = value !== void 0;
|
|
26735
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
26736
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26737
|
+
useEffect(() => {
|
|
26738
|
+
if (!isControlled) {
|
|
26739
|
+
setInternalValue(defaultValue);
|
|
26740
|
+
}
|
|
26741
|
+
}, [defaultValue, isControlled]);
|
|
26742
|
+
useEffect(() => {
|
|
26743
|
+
if (!isControlled) return;
|
|
26744
|
+
editorRef.current?.setMarkdown(value ?? "");
|
|
26745
|
+
}, [value, isControlled]);
|
|
26746
|
+
const updateValue = (nextValue) => {
|
|
26747
|
+
if (!isControlled) {
|
|
26748
|
+
setInternalValue(nextValue);
|
|
26749
|
+
}
|
|
26750
|
+
onChange?.(nextValue);
|
|
26751
|
+
};
|
|
26752
|
+
return /* @__PURE__ */ jsx(
|
|
26753
|
+
"div",
|
|
26754
|
+
{
|
|
26755
|
+
id,
|
|
26756
|
+
"data-name": name,
|
|
26757
|
+
onBlur,
|
|
26758
|
+
className: classNames66(
|
|
26759
|
+
"eui-markdown-adapter",
|
|
26760
|
+
"eui-markdown-mdx-adapter",
|
|
26761
|
+
dark && "dark",
|
|
26762
|
+
disabled && "is-disabled",
|
|
26763
|
+
className
|
|
26764
|
+
),
|
|
26765
|
+
style: {
|
|
26766
|
+
minHeight: toCssSize3(minHeight),
|
|
26767
|
+
maxHeight: toCssSize3(maxHeight)
|
|
26768
|
+
},
|
|
26769
|
+
children: /* @__PURE__ */ jsx(
|
|
26770
|
+
MDXEditor,
|
|
26771
|
+
{
|
|
26772
|
+
...props,
|
|
26773
|
+
ref: editorRef,
|
|
26774
|
+
markdown: currentValue ?? "",
|
|
26775
|
+
readOnly: disabled || readOnly,
|
|
26776
|
+
plugins: plugins ?? createDefaultPlugins(showToolbar),
|
|
26777
|
+
className: classNames66("eui-markdown-mdx-editor", editorClassName),
|
|
26778
|
+
contentEditableClassName: "eui-markdown-mdx-content",
|
|
26779
|
+
onChange: updateValue
|
|
26780
|
+
}
|
|
26781
|
+
)
|
|
26782
|
+
}
|
|
26783
|
+
);
|
|
26784
|
+
}
|
|
26785
|
+
var MDXMarkdownEditor_default = MDXMarkdownEditor;
|
|
26786
|
+
function toCssSize4(value) {
|
|
26787
|
+
if (typeof value === "number") return `${value}px`;
|
|
26788
|
+
return value;
|
|
26789
|
+
}
|
|
26790
|
+
function MilkdownInnerEditor({
|
|
26791
|
+
currentValue,
|
|
26792
|
+
updateValue,
|
|
26793
|
+
onBlur,
|
|
26794
|
+
disabled = false,
|
|
26795
|
+
readOnly = false,
|
|
26796
|
+
editorClassName,
|
|
26797
|
+
useGfm = true
|
|
26798
|
+
}) {
|
|
26799
|
+
useEditor(
|
|
26800
|
+
(root) => {
|
|
26801
|
+
let editor = Editor.make().config((ctx) => {
|
|
26802
|
+
ctx.set(rootCtx, root);
|
|
26803
|
+
ctx.set(defaultValueCtx, currentValue);
|
|
26804
|
+
ctx.update(editorViewOptionsCtx, (prev) => ({
|
|
26805
|
+
...prev,
|
|
26806
|
+
editable: () => !disabled && !readOnly,
|
|
26807
|
+
attributes: {
|
|
26808
|
+
class: classNames66("eui-markdown-milkdown-content", editorClassName),
|
|
26809
|
+
spellcheck: "true"
|
|
26810
|
+
},
|
|
26811
|
+
handleDOMEvents: {
|
|
26812
|
+
blur: () => {
|
|
26813
|
+
onBlur?.();
|
|
26814
|
+
return false;
|
|
26815
|
+
}
|
|
26816
|
+
}
|
|
26817
|
+
}));
|
|
26818
|
+
ctx.get(listenerCtx).markdownUpdated((_ctx, markdown) => {
|
|
26819
|
+
updateValue(markdown);
|
|
26820
|
+
});
|
|
26821
|
+
});
|
|
26822
|
+
editor = editor.use(commonmark);
|
|
26823
|
+
if (useGfm) {
|
|
26824
|
+
editor = editor.use(gfm);
|
|
26825
|
+
}
|
|
26826
|
+
editor = editor.use(listener);
|
|
26827
|
+
return editor;
|
|
26828
|
+
},
|
|
26829
|
+
[disabled, readOnly, editorClassName, onBlur, updateValue, useGfm]
|
|
26830
|
+
);
|
|
26831
|
+
return /* @__PURE__ */ jsx(Milkdown, {});
|
|
26832
|
+
}
|
|
26833
|
+
function MilkdownMarkdownEditor({
|
|
26834
|
+
value,
|
|
26835
|
+
defaultValue = "",
|
|
26836
|
+
onChange,
|
|
26837
|
+
onBlur,
|
|
26838
|
+
id,
|
|
26839
|
+
name,
|
|
26840
|
+
disabled = false,
|
|
26841
|
+
readOnly = false,
|
|
26842
|
+
minHeight = 360,
|
|
26843
|
+
maxHeight,
|
|
26844
|
+
className,
|
|
26845
|
+
editorClassName,
|
|
26846
|
+
useGfm = true
|
|
26847
|
+
}) {
|
|
26848
|
+
const isControlled = value !== void 0;
|
|
26849
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
26850
|
+
const currentValue = isControlled ? value : internalValue;
|
|
26851
|
+
useEffect(() => {
|
|
26852
|
+
if (!isControlled) {
|
|
26853
|
+
setInternalValue(defaultValue);
|
|
26854
|
+
}
|
|
26855
|
+
}, [defaultValue, isControlled]);
|
|
26856
|
+
const updateValue = (nextValue) => {
|
|
26857
|
+
if (!isControlled) {
|
|
26858
|
+
setInternalValue(nextValue);
|
|
26859
|
+
}
|
|
26860
|
+
onChange?.(nextValue);
|
|
26861
|
+
};
|
|
26862
|
+
return /* @__PURE__ */ jsx(
|
|
26863
|
+
"div",
|
|
26864
|
+
{
|
|
26865
|
+
id,
|
|
26866
|
+
"data-name": name,
|
|
26867
|
+
className: classNames66(
|
|
26868
|
+
"eui-markdown-adapter",
|
|
26869
|
+
"eui-markdown-milkdown-adapter",
|
|
26870
|
+
disabled && "is-disabled",
|
|
26871
|
+
className
|
|
26872
|
+
),
|
|
26873
|
+
style: {
|
|
26874
|
+
minHeight: toCssSize4(minHeight),
|
|
26875
|
+
maxHeight: toCssSize4(maxHeight)
|
|
26876
|
+
},
|
|
26877
|
+
children: /* @__PURE__ */ jsx(MilkdownProvider, { children: /* @__PURE__ */ jsx(
|
|
26878
|
+
MilkdownInnerEditor,
|
|
26879
|
+
{
|
|
26880
|
+
currentValue: currentValue ?? "",
|
|
26881
|
+
updateValue,
|
|
26882
|
+
onBlur,
|
|
26883
|
+
disabled,
|
|
26884
|
+
readOnly,
|
|
26885
|
+
editorClassName,
|
|
26886
|
+
useGfm
|
|
26887
|
+
}
|
|
26888
|
+
) })
|
|
26889
|
+
}
|
|
26890
|
+
);
|
|
26891
|
+
}
|
|
26892
|
+
var MilkdownMarkdownEditor_default = MilkdownMarkdownEditor;
|
|
24525
26893
|
function GenericLayout({
|
|
24526
26894
|
children,
|
|
24527
26895
|
styles,
|
|
@@ -24530,7 +26898,7 @@ function GenericLayout({
|
|
|
24530
26898
|
return /* @__PURE__ */ jsx(ThemeProvider, { defaultTheme, children: /* @__PURE__ */ jsx(
|
|
24531
26899
|
"div",
|
|
24532
26900
|
{
|
|
24533
|
-
className:
|
|
26901
|
+
className: classNames66({
|
|
24534
26902
|
[`${styles}`]: styles
|
|
24535
26903
|
}),
|
|
24536
26904
|
children
|
|
@@ -24579,7 +26947,7 @@ function SidemenuLayout({ data, children }) {
|
|
|
24579
26947
|
return /* @__PURE__ */ jsx(DefaultLayout_default, { children: /* @__PURE__ */ jsxs(
|
|
24580
26948
|
"div",
|
|
24581
26949
|
{
|
|
24582
|
-
className:
|
|
26950
|
+
className: classNames66({
|
|
24583
26951
|
grid: true,
|
|
24584
26952
|
"grid-cols-7 gap-10": !isMobile,
|
|
24585
26953
|
"grid-cols-1 gap-": isMobile
|
|
@@ -24638,6 +27006,6 @@ function ScrollToTop({
|
|
|
24638
27006
|
}
|
|
24639
27007
|
var ScrollToTop_default = ScrollToTop;
|
|
24640
27008
|
|
|
24641
|
-
export { Accordion_default as Accordion, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand_default as Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_DOT_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartProvider, ChartToolbar, ChartTooltip, Checkbox_default as Checkbox, Chip, CloudinaryImage_default as CloudinaryImage, CloudinaryProvider, CloudinaryVideo_default as CloudinaryVideo, Code, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, DEFAULT_CHART_THEME, DEFAULT_REVIEW_THREAD_CONFIG, DataView, DataViewTable_default as DataViewTable, DateSelector_default as DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse_default as FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_default as ImageInput, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info_default as Info, Input, InputFile, InputLabel_default as InputLabel, InputList, InputListGroup, InputResponse_default as InputResponse, Label, Layout, Lead, LinePlot, Link, List_default as List, ListItem_default as ListItem, MarkdownEditor_default as MarkdownEditor, MarkdownProvider_default as MarkdownProvider, MarkdownTOC_default as MarkdownTOC, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_default as MultiImageInput, NumericRating_default as NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PriceTag, ProgressBar, ProgressBarRating_default as ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select_default as Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner_default as Spinner, StarRating_default as StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNDropdown, TNDropdownItem, TNDropdownTitle, TNGroup, Table_default as Table, Tag_default as Tag, Tags_default as Tags, TextArea_default as TextArea, ThemeContext, ThemeProvider, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge_default as ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo_default as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, chartReducer, cn, createConfigurator, createForceLayout, createGridLayout, createInitialChartState, createTreeLayout, createURLResolver, decrementReplyCount, enumValues, euiToast, findReview, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getCurrencySymbol, getLayout, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, hasReviewReply, incrementReplyCount, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, sendToast, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useIsMobile_default as useIsMobile, useModal_default as useModal, useReviewThreadState, useTheme_default as useTheme };
|
|
27009
|
+
export { Accordion_default as Accordion, AreaPlot, AsyncComponentWrapper_default as AsyncComponentWrapper, Avatar, Backdrop_default as Backdrop, Badge, BarPlot, BaseChartDataSource, Block_default as Block, BlockGroup_default as BlockGroup, BoxNav_default as BoxNav, BoxNavItem_default as BoxNavItem, Brand_default as Brand, Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, Button_default as Button, CHART_COLOR_PALETTE, CHART_DARK_THEME, CHART_DATA_MODES, CHART_DEFAULT_ACTIVE_DOT_RADIUS, CHART_DEFAULT_ANIMATION_DURATION, CHART_DEFAULT_BAR_RADIUS, CHART_DEFAULT_DOT_RADIUS, CHART_DEFAULT_HEIGHT, CHART_DEFAULT_MARGIN, CHART_DEFAULT_MAX_REALTIME_POINTS, CHART_DEFAULT_POLLING_INTERVAL, CHART_DEFAULT_STROKE_WIDTH, CHART_EMPTY_MESSAGE, CHART_ERROR_MESSAGE, CHART_LIGHT_THEME, CHART_LOADING_MESSAGE, CHART_STATUSES, CHART_STATUS_COLORS, CHART_VALUE_FORMATS, Caption, Card_default as Card, CardContent_default as CardContent, CardFooter_default as CardFooter, CardHeader_default as CardHeader, Chapter, Chart, ChartContainer, ChartContext, ChartEmptyState, ChartErrorState, ChartHeader, ChartLegend, ChartLoadingState, ChartPanel, ChartProvider, ChartToolbar, ChartTooltip, Checkbox_default as Checkbox, Chip, CloudinaryImage_default as CloudinaryImage, CloudinaryProvider, CloudinaryVideo_default as CloudinaryVideo, Code, CodeMirrorMarkdownEditor_default as CodeMirrorMarkdownEditor, CommentThread_default as CommentThread, ConfigBootstrap_default as ConfigBootstrap, Configurator, ConfiguratorError, Content, ContentArea_default as ContentArea, DEFAULT_CHART_THEME, DEFAULT_REVIEW_THREAD_CONFIG, DataView, DataViewTable_default as DataViewTable, DateSelector_default as DateSelector, DefaultLayout_default as DefaultLayout, Display, DocumentationPanel_default as DocumentationPanel, Drawer, DrawerToggler_default as DrawerToggler, EUIDevLayout_default as EUIDevLayout, EUIProvider, EnvErrorScreen_default as EnvErrorScreen, Flag, Flex, FlexCol_default as FlexCol, FlexRow_default as FlexRow, Footer, FooterNav_default as FooterNav, FooterNavGroup_default as FooterNavGroup, FooterNavItem, FooterNavItemContext, FooterNavItemTitle, Form, FormResponse_default as FormResponse, GaugePlot, GenericLayout_default as GenericLayout, GlowWrapper_default as GlowWrapper, Graph, GraphEdge, GraphNode, GraphRenderer, Grid_default as Grid, Header, HeaderNav_default as HeaderNav, HeaderNavGroup_default as HeaderNavGroup, HeaderNavItem, HeaderNavItemContext, HeaderNavItemTitle, HomeLayout_default as HomeLayout, Image2 as Image, ImageInput_default as ImageInput, InfiniteScrollTrigger_default as InfiniteScrollTrigger, Info_default as Info, Input, InputFile, InputLabel_default as InputLabel, InputList, InputListGroup, InputResponse_default as InputResponse, Label, Layout, Lead, LinePlot, Link, List_default as List, ListItem_default as ListItem, MDXMarkdownEditor_default as MDXMarkdownEditor, MarkdownBlockquote_default as MarkdownBlockquote, MarkdownCodeBlock_default as MarkdownCodeBlock, MarkdownContext, MarkdownDocsLayout_default as MarkdownDocsLayout, MarkdownEditor_default as MarkdownEditor, MarkdownField_default as MarkdownField, MarkdownHeading_default as MarkdownHeadingComponent, MarkdownImage_default as MarkdownImage, MarkdownInlineCode_default as MarkdownInlineCode, MarkdownLayout_default as MarkdownLayout, MarkdownLink_default as MarkdownLink, MarkdownPreviewPane_default as MarkdownPreviewPane, MarkdownProvider_default as MarkdownProvider, MarkdownRenderer_default as MarkdownRenderer, MarkdownSourceEditor_default as MarkdownSourceEditor, MarkdownSplitEditor_default as MarkdownSplitEditor, MarkdownTOC_default as MarkdownTOC, MarkdownTOCItem_default as MarkdownTOCItem, MarkdownTable_default as MarkdownTable, MarkdownTableCell, MarkdownTableHeaderCell, MarkdownToolbar_default as MarkdownToolbar, MarkdownViewer_default as MarkdownViewer, Menu, MenuGroup, MenuItem, MenuItemTitle, MilkdownMarkdownEditor_default as MilkdownMarkdownEditor, Modal_default as Modal, MotionSurface_default as MotionSurface, MultiImageInput_default as MultiImageInput, NumericRating_default as NumericRating, Overline, Paragraph, PiePlot, PollingChartDataSource, PriceTag, ProgressBar, ProgressBarRating_default as ProgressBarRating, Quote, Radio_default as Radio, RealtimeChartDataSource, ReviewThread_default as ReviewThread, RouteTab_default as RouteTab, RouteTabs_default as RouteTabs, ScatterPlot, ScrollToTop_default as ScrollToTop, Section, Select_default as Select, ShapeSwitch, ShowMore_default as ShowMore, Sidebar_default as Sidebar, SidebarLayout_default as SidebarLayout, SidemenuLayout_default as SidemenuLayout, Skeleton, Slider_default as Slider, Spinner_default as Spinner, StarRating_default as StarRating, StarRatingDistribution_default as StarRatingDistribution, StarRatingInput_default as StarRatingInput, StatPlot, StaticChartDataSource, Switch_default as Switch, TNDropdown, TNDropdownItem, TNDropdownTitle, TNGroup, Table_default as Table, Tag_default as Tag, Tags_default as Tags, TextArea_default as TextArea, ThemeContext, ThemeProvider, ThemeSwitch, TitleBanner, Toast, Tooltip6 as Tooltip, TopNav, Transition, TransitionAccordion_default as TransitionAccordion, TransitionBase_default as TransitionBase, TransitionDropdown_default as TransitionDropdown, TransitionFade_default as TransitionFade, TransitionFadeIn_default as TransitionFadeIn, TransitionScale_default as TransitionScale, TransitionSlide_default as TransitionSlide, Typography, UnderConstructionBanner, ValueBadge_default as ValueBadge, WorldMap, WorldMapCountryTable, YoutubeVideo_default as YoutubeVideoPlayer, addReplyToCache, addReviewReply, appendReview, applyReactionState, assertAbsoluteURL, buildURL, canDeleteReview, canDeleteReviewReply, canEditReview, canEditReviewReply, canReplyToReview, canReportReview, canReportReviewReply, chartReducer, cn, createConfigurator, createForceLayout, createGridLayout, createHeadingSlug, createInitialChartState, createTreeLayout, createURLResolver, decrementReplyCount, enumValues, euiToast, extractHeadings, findReview, formatChartValue, formatCommentDate, formatConfigError, formatReviewDate, generateHeadingNumbers, getAllowedOrigins, getBrowserHref, getBrowserOrigin, getBrowserRedirectURL, getCurrencySymbol, getLayout, getOptimisticDislikeState, getOptimisticLikeState, getSafeRedirect, hasReviewReply, incrementReplyCount, isMatch, isRenderFn, limitRealtimePoints, normalize, normalizeChartData, normalizeChartDataPoint, normalizeMarkdown, normalizeReview, normalizeReviewAuthor, normalizeReviewReply, parseJson, parseJsonRecord, parseUrlMap, prependReview, registerLayout, removeComment, removeCommentTreeFromCache, removeReview, removeReviewReply, replaceRealtimePoints, replaceReview, replaceReviewReply, resolveAppearanceStyles, resolveChartColor, resolveChartColors, resolveWithGlobal, sanitizeHeading, sendToast, slugify, toConfiguratorError, updateComment, updateReplyCacheComment, updateReview, updateReviewReply, upsertReview, useActiveHeading, useChartContext, useChartData, useChartPolling, useChartRealtime, useChartSeries, useChartTheme, useClickOutside, useCloudinaryConfig, useCurrentTheme_default as useCurrentTheme, useDrawer_default as useDrawer, useEUIConfig, useIsMobile_default as useIsMobile, useMarkdown, useMarkdownHeadings, useModal_default as useModal, useReviewThreadState, useTheme_default as useTheme };
|
|
24642
27010
|
//# sourceMappingURL=index.mjs.map
|
|
24643
27011
|
//# sourceMappingURL=index.mjs.map
|