markdown-flow-ui 0.2.10 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/_virtual/index.cjs3.js +1 -1
  2. package/dist/_virtual/index.cjs4.js +1 -1
  3. package/dist/_virtual/index.cjs8.js +1 -1
  4. package/dist/_virtual/index.cjs9.js +1 -1
  5. package/dist/_virtual/index.es3.js +4 -5
  6. package/dist/_virtual/index.es3.js.map +1 -1
  7. package/dist/_virtual/index.es4.js +5 -4
  8. package/dist/_virtual/index.es4.js.map +1 -1
  9. package/dist/_virtual/index.es8.js +2 -2
  10. package/dist/_virtual/index.es9.js +2 -2
  11. package/dist/assets/markdown-flow-ui.css +1 -1
  12. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.js +2 -0
  13. package/dist/components/MarkdownFlow/ScrollToBottomButton.cjs.js.map +1 -0
  14. package/dist/components/MarkdownFlow/ScrollToBottomButton.d.ts +8 -0
  15. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js +28 -0
  16. package/dist/components/MarkdownFlow/ScrollToBottomButton.es.js.map +1 -0
  17. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs.js +2 -0
  18. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.cjs.js.map +1 -0
  19. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js +68 -0
  20. package/dist/components/MarkdownFlow/ScrollableMarkdownFlow.es.js.map +1 -0
  21. package/dist/components/MarkdownFlow/index.cjs.js +1 -1
  22. package/dist/components/MarkdownFlow/index.d.ts +4 -1
  23. package/dist/components/MarkdownFlow/index.es.js +1 -0
  24. package/dist/components/MarkdownFlow/index.es.js.map +1 -1
  25. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.js +2 -0
  26. package/dist/components/MarkdownFlow/useScrollToBottom.cjs.js.map +1 -0
  27. package/dist/components/MarkdownFlow/useScrollToBottom.d.ts +20 -8
  28. package/dist/components/MarkdownFlow/useScrollToBottom.es.js +101 -0
  29. package/dist/components/MarkdownFlow/useScrollToBottom.es.js.map +1 -0
  30. package/dist/components/MarkdownFlow/useScrollToBottom.test.d.ts +1 -0
  31. package/dist/components/index.d.ts +4 -1
  32. package/dist/components/ui/inputGroup/textarea.cjs.js +1 -1
  33. package/dist/components/ui/inputGroup/textarea.es.js +1 -1
  34. package/dist/index.cjs.js +1 -1
  35. package/dist/index.es.js +21 -19
  36. package/dist/index.es.js.map +1 -1
  37. package/dist/node_modules/@braintree/sanitize-url/dist/index.cjs.js +1 -1
  38. package/dist/node_modules/@braintree/sanitize-url/dist/index.es.js +1 -1
  39. package/dist/node_modules/classnames/index.cjs.js +1 -1
  40. package/dist/node_modules/classnames/index.es.js +1 -1
  41. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js +7 -0
  42. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js.map +1 -0
  43. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.es.js +13 -0
  44. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.es.js.map +1 -0
  45. package/dist/node_modules/rc-input/es/BaseInput.cjs.js +1 -1
  46. package/dist/node_modules/rc-input/es/BaseInput.es.js +1 -1
  47. package/dist/node_modules/rc-textarea/es/ResizableTextArea.cjs.js +1 -1
  48. package/dist/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
  49. package/dist/node_modules/rc-textarea/es/TextArea.cjs.js +1 -1
  50. package/dist/node_modules/rc-textarea/es/TextArea.es.js +1 -1
  51. package/dist/node_modules/rc-textarea/es/index.cjs.js +1 -1
  52. package/dist/node_modules/rc-textarea/es/index.es.js +1 -1
  53. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.cjs.js +1 -1
  54. package/dist/node_modules/remark-flow/dist/interaction-plugin-core.es.js +1 -1
  55. package/dist/renderer.cjs.js +1 -1
  56. package/dist/renderer.d.ts +5 -2
  57. package/dist/renderer.es.js +19 -17
  58. package/dist/renderer.es.js.map +1 -1
  59. package/package.json +1 -1
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("../../_virtual/jsx-runtime.cjs.js"),c=require("react-dom"),i=require("../../node_modules/lucide-react/dist/esm/icons/chevron-down.cjs.js"),u=({visible:n,ariaLabel:l,portalTarget:t,className:s="",...e})=>{if(!n)return null;const o=r.jsxRuntimeExports.jsx("button",{...e,type:e.type||"button",className:`scroll-to-bottom-btn ${s}`.trim(),"aria-label":l,children:r.jsxRuntimeExports.jsx(i.default,{"aria-hidden":"true",focusable:"false"})});return t?c.createPortal(o,t):o};exports.ScrollToBottomButton=u;exports.default=u;
2
+ //# sourceMappingURL=ScrollToBottomButton.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToBottomButton.cjs.js","sources":["../../../src/components/MarkdownFlow/ScrollToBottomButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface ScrollToBottomButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n visible: boolean;\n ariaLabel: string;\n portalTarget?: HTMLElement | null;\n}\n\nexport const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps> = ({\n visible,\n ariaLabel,\n portalTarget,\n className = \"\",\n ...props\n}) => {\n if (!visible) return null;\n const button = (\n <button\n {...props}\n type={props.type || \"button\"}\n className={`scroll-to-bottom-btn ${className}`.trim()}\n aria-label={ariaLabel}\n >\n <ChevronDown aria-hidden=\"true\" focusable=\"false\" />\n </button>\n );\n return portalTarget ? createPortal(button, portalTarget) : button;\n};\n\nexport default ScrollToBottomButton;\n"],"names":["ScrollToBottomButton","visible","ariaLabel","portalTarget","className","props","button","jsx","ChevronDown","createPortal"],"mappings":"wQAWaA,EAA4D,CAAC,CACxE,QAAAC,EACA,UAAAC,EACA,aAAAC,EACA,UAAAC,EAAY,GACZ,GAAGC,CACL,IAAM,CACJ,GAAI,CAACJ,EAAS,OAAO,KACrB,MAAMK,EACJC,EAAAA,kBAAAA,IAAC,SAAA,CACE,GAAGF,EACJ,KAAMA,EAAM,MAAQ,SACpB,UAAW,wBAAwBD,CAAS,GAAG,KAAA,EAC/C,aAAYF,EAEZ,SAAAK,EAAAA,kBAAAA,IAACC,UAAA,CAAY,cAAY,OAAO,UAAU,OAAA,CAAQ,CAAA,CAAA,EAGtD,OAAOL,EAAeM,EAAAA,aAAaH,EAAQH,CAAY,EAAIG,CAC7D"}
@@ -0,0 +1,8 @@
1
+ import { default as React } from 'react';
2
+ export interface ScrollToBottomButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
3
+ visible: boolean;
4
+ ariaLabel: string;
5
+ portalTarget?: HTMLElement | null;
6
+ }
7
+ export declare const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps>;
8
+ export default ScrollToBottomButton;
@@ -0,0 +1,28 @@
1
+ import { j as e } from "../../_virtual/jsx-runtime.es.js";
2
+ import { createPortal as s } from "react-dom";
3
+ import m from "../../node_modules/lucide-react/dist/esm/icons/chevron-down.es.js";
4
+ const b = ({
5
+ visible: n,
6
+ ariaLabel: l,
7
+ portalTarget: t,
8
+ className: a = "",
9
+ ...o
10
+ }) => {
11
+ if (!n) return null;
12
+ const r = /* @__PURE__ */ e.jsx(
13
+ "button",
14
+ {
15
+ ...o,
16
+ type: o.type || "button",
17
+ className: `scroll-to-bottom-btn ${a}`.trim(),
18
+ "aria-label": l,
19
+ children: /* @__PURE__ */ e.jsx(m, { "aria-hidden": "true", focusable: "false" })
20
+ }
21
+ );
22
+ return t ? s(r, t) : r;
23
+ };
24
+ export {
25
+ b as ScrollToBottomButton,
26
+ b as default
27
+ };
28
+ //# sourceMappingURL=ScrollToBottomButton.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollToBottomButton.es.js","sources":["../../../src/components/MarkdownFlow/ScrollToBottomButton.tsx"],"sourcesContent":["import React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface ScrollToBottomButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n visible: boolean;\n ariaLabel: string;\n portalTarget?: HTMLElement | null;\n}\n\nexport const ScrollToBottomButton: React.FC<ScrollToBottomButtonProps> = ({\n visible,\n ariaLabel,\n portalTarget,\n className = \"\",\n ...props\n}) => {\n if (!visible) return null;\n const button = (\n <button\n {...props}\n type={props.type || \"button\"}\n className={`scroll-to-bottom-btn ${className}`.trim()}\n aria-label={ariaLabel}\n >\n <ChevronDown aria-hidden=\"true\" focusable=\"false\" />\n </button>\n );\n return portalTarget ? createPortal(button, portalTarget) : button;\n};\n\nexport default ScrollToBottomButton;\n"],"names":["ScrollToBottomButton","visible","ariaLabel","portalTarget","className","props","button","jsx","ChevronDown","createPortal"],"mappings":";;;AAWO,MAAMA,IAA4D,CAAC;AAAA,EACxE,SAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,MAAM;AACJ,MAAI,CAACJ,EAAS,QAAO;AACrB,QAAMK,IACJC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGF;AAAA,MACJ,MAAMA,EAAM,QAAQ;AAAA,MACpB,WAAW,wBAAwBD,CAAS,GAAG,KAAA;AAAA,MAC/C,cAAYF;AAAA,MAEZ,UAAAK,gBAAAA,EAAAA,IAACC,GAAA,EAAY,eAAY,QAAO,WAAU,QAAA,CAAQ;AAAA,IAAA;AAAA,EAAA;AAGtD,SAAOL,IAAeM,EAAaH,GAAQH,CAAY,IAAIG;AAC7D;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../../_virtual/jsx-runtime.cjs.js"),b=require("react"),v=require("./MarkdownFlow.cjs.js"),f=require("./useScrollToBottom.cjs.js"),h=require("./ScrollToBottomButton.cjs.js"),q=require("../ContentRender/contentRenderI18n.cjs.js");;/* empty css */const w=({initialContentList:e=[],customRenderBar:n,onSend:c,height:u="100%",className:i="",locale:t,confirmButtonText:a,copyButtonText:d,copiedButtonText:m,beforeSend:x,interactionDefaultValueOptions:T,scrollToBottomAriaLabel:j,...r})=>{const l=b.useRef(null),B=q.getContentRenderLocaleTexts(t),R=j||B.scrollToBottomLabel,{showScrollToBottom:s,scrollToBottom:S}=f.useScrollToBottom(l,{contentVersion:e,autoScrollOnInit:!0,scrollThreshold:150});return o.jsxRuntimeExports.jsxs("div",{className:`scrollable-markdown-container ${i}`,style:{height:u,position:"relative"},...r,children:[o.jsxRuntimeExports.jsx("div",{ref:l,style:{height:"100%",overflow:"auto"},children:o.jsxRuntimeExports.jsx(v.default,{...r,initialContentList:e,customRenderBar:n,onSend:c,locale:t,confirmButtonText:a,copyButtonText:d,copiedButtonText:m,beforeSend:x,interactionDefaultValueOptions:T})}),s&&o.jsxRuntimeExports.jsx(h.ScrollToBottomButton,{visible:s,onClick:()=>S(),ariaLabel:R})]})};exports.default=w;
2
+ //# sourceMappingURL=ScrollableMarkdownFlow.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableMarkdownFlow.cjs.js","sources":["../../../src/components/MarkdownFlow/ScrollableMarkdownFlow.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport MarkdownFlow from \"./MarkdownFlow\";\nimport useScrollToBottom from \"./useScrollToBottom\";\n// import type { OnSendContentParams, CustomRenderBarProps } from \"../types\";\nimport ScrollToBottomButton from \"./ScrollToBottomButton\";\nimport type { MarkdownFlowProps } from \"./MarkdownFlow\";\nimport { getContentRenderLocaleTexts } from \"../ContentRender/contentRenderI18n\";\n\nimport \"./markdownFlow.css\";\n\nexport interface ScrollableMarkdownFlowProps extends MarkdownFlowProps {\n height?: string | number;\n className?: string;\n scrollToBottomAriaLabel?: string;\n}\n\nconst ScrollableMarkdownFlow: React.FC<ScrollableMarkdownFlowProps> = ({\n initialContentList = [],\n customRenderBar,\n onSend,\n height = \"100%\",\n className = \"\",\n locale,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend,\n interactionDefaultValueOptions,\n scrollToBottomAriaLabel,\n ...restProps\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const localeTexts = getContentRenderLocaleTexts(locale);\n const resolvedScrollToBottomAriaLabel =\n scrollToBottomAriaLabel || localeTexts.scrollToBottomLabel;\n\n const { showScrollToBottom, scrollToBottom } = useScrollToBottom(\n containerRef,\n {\n contentVersion: initialContentList,\n autoScrollOnInit: true,\n scrollThreshold: 150,\n }\n );\n\n return (\n <div\n className={`scrollable-markdown-container ${className}`}\n style={{ height, position: \"relative\" }}\n {...restProps}\n >\n <div ref={containerRef} style={{ height: \"100%\", overflow: \"auto\" }}>\n <MarkdownFlow\n {...restProps}\n initialContentList={initialContentList}\n customRenderBar={customRenderBar}\n onSend={onSend}\n locale={locale}\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n beforeSend={beforeSend}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n />\n </div>\n {showScrollToBottom && (\n <ScrollToBottomButton\n visible={showScrollToBottom}\n onClick={() => scrollToBottom()}\n ariaLabel={resolvedScrollToBottomAriaLabel}\n />\n )}\n </div>\n );\n};\n\nexport default ScrollableMarkdownFlow;\n"],"names":["ScrollableMarkdownFlow","initialContentList","customRenderBar","onSend","height","className","locale","confirmButtonText","copyButtonText","copiedButtonText","beforeSend","interactionDefaultValueOptions","scrollToBottomAriaLabel","restProps","containerRef","useRef","localeTexts","getContentRenderLocaleTexts","resolvedScrollToBottomAriaLabel","showScrollToBottom","scrollToBottom","useScrollToBottom","jsxs","jsx","MarkdownFlow","ScrollToBottomButton"],"mappings":"sYAgBA,MAAMA,EAAgE,CAAC,CACrE,mBAAAC,EAAqB,CAAA,EACrB,gBAAAC,EACA,OAAAC,EACA,OAAAC,EAAS,OACT,UAAAC,EAAY,GACZ,OAAAC,EACA,kBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,+BAAAC,EACA,wBAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAeC,EAAAA,OAAuB,IAAI,EAC1CC,EAAcC,EAAAA,4BAA4BX,CAAM,EAChDY,EACJN,GAA2BI,EAAY,oBAEnC,CAAE,mBAAAG,EAAoB,eAAAC,CAAA,EAAmBC,EAAAA,kBAC7CP,EACA,CACE,eAAgBb,EAChB,iBAAkB,GAClB,gBAAiB,GAAA,CACnB,EAGF,OACEqB,EAAAA,kBAAAA,KAAC,MAAA,CACC,UAAW,iCAAiCjB,CAAS,GACrD,MAAO,CAAE,OAAAD,EAAQ,SAAU,UAAA,EAC1B,GAAGS,EAEJ,SAAA,CAAAU,EAAAA,kBAAAA,IAAC,MAAA,CAAI,IAAKT,EAAc,MAAO,CAAE,OAAQ,OAAQ,SAAU,MAAA,EACzD,SAAAS,EAAAA,kBAAAA,IAACC,EAAAA,QAAA,CACE,GAAGX,EACJ,mBAAAZ,EACA,gBAAAC,EACA,OAAAC,EACA,OAAAG,EACA,kBAAAC,EACA,eAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,+BAAAC,CAAA,CAAA,EAEJ,EACCQ,GACCI,EAAAA,kBAAAA,IAACE,EAAAA,qBAAA,CACC,QAASN,EACT,QAAS,IAAMC,EAAA,EACf,UAAWF,CAAA,CAAA,CACb,CAAA,CAAA,CAIR"}
@@ -0,0 +1,68 @@
1
+ import { j as o } from "../../_virtual/jsx-runtime.es.js";
2
+ import { useRef as B } from "react";
3
+ import b from "./MarkdownFlow.es.js";
4
+ import { useScrollToBottom as j } from "./useScrollToBottom.es.js";
5
+ import { ScrollToBottomButton as v } from "./ScrollToBottomButton.es.js";
6
+ import { getContentRenderLocaleTexts as S } from "../ContentRender/contentRenderI18n.es.js";
7
+ /* empty css */
8
+ const A = ({
9
+ initialContentList: t = [],
10
+ customRenderBar: n,
11
+ onSend: c,
12
+ height: m = "100%",
13
+ className: a = "",
14
+ locale: r,
15
+ confirmButtonText: i,
16
+ copyButtonText: d,
17
+ copiedButtonText: f,
18
+ beforeSend: u,
19
+ interactionDefaultValueOptions: p,
20
+ scrollToBottomAriaLabel: x,
21
+ ...l
22
+ }) => {
23
+ const e = B(null), T = S(r), h = x || T.scrollToBottomLabel, { showScrollToBottom: s, scrollToBottom: w } = j(
24
+ e,
25
+ {
26
+ contentVersion: t,
27
+ autoScrollOnInit: !0,
28
+ scrollThreshold: 150
29
+ }
30
+ );
31
+ return /* @__PURE__ */ o.jsxs(
32
+ "div",
33
+ {
34
+ className: `scrollable-markdown-container ${a}`,
35
+ style: { height: m, position: "relative" },
36
+ ...l,
37
+ children: [
38
+ /* @__PURE__ */ o.jsx("div", { ref: e, style: { height: "100%", overflow: "auto" }, children: /* @__PURE__ */ o.jsx(
39
+ b,
40
+ {
41
+ ...l,
42
+ initialContentList: t,
43
+ customRenderBar: n,
44
+ onSend: c,
45
+ locale: r,
46
+ confirmButtonText: i,
47
+ copyButtonText: d,
48
+ copiedButtonText: f,
49
+ beforeSend: u,
50
+ interactionDefaultValueOptions: p
51
+ }
52
+ ) }),
53
+ s && /* @__PURE__ */ o.jsx(
54
+ v,
55
+ {
56
+ visible: s,
57
+ onClick: () => w(),
58
+ ariaLabel: h
59
+ }
60
+ )
61
+ ]
62
+ }
63
+ );
64
+ };
65
+ export {
66
+ A as default
67
+ };
68
+ //# sourceMappingURL=ScrollableMarkdownFlow.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableMarkdownFlow.es.js","sources":["../../../src/components/MarkdownFlow/ScrollableMarkdownFlow.tsx"],"sourcesContent":["import React, { useRef } from \"react\";\nimport MarkdownFlow from \"./MarkdownFlow\";\nimport useScrollToBottom from \"./useScrollToBottom\";\n// import type { OnSendContentParams, CustomRenderBarProps } from \"../types\";\nimport ScrollToBottomButton from \"./ScrollToBottomButton\";\nimport type { MarkdownFlowProps } from \"./MarkdownFlow\";\nimport { getContentRenderLocaleTexts } from \"../ContentRender/contentRenderI18n\";\n\nimport \"./markdownFlow.css\";\n\nexport interface ScrollableMarkdownFlowProps extends MarkdownFlowProps {\n height?: string | number;\n className?: string;\n scrollToBottomAriaLabel?: string;\n}\n\nconst ScrollableMarkdownFlow: React.FC<ScrollableMarkdownFlowProps> = ({\n initialContentList = [],\n customRenderBar,\n onSend,\n height = \"100%\",\n className = \"\",\n locale,\n confirmButtonText,\n copyButtonText,\n copiedButtonText,\n beforeSend,\n interactionDefaultValueOptions,\n scrollToBottomAriaLabel,\n ...restProps\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const localeTexts = getContentRenderLocaleTexts(locale);\n const resolvedScrollToBottomAriaLabel =\n scrollToBottomAriaLabel || localeTexts.scrollToBottomLabel;\n\n const { showScrollToBottom, scrollToBottom } = useScrollToBottom(\n containerRef,\n {\n contentVersion: initialContentList,\n autoScrollOnInit: true,\n scrollThreshold: 150,\n }\n );\n\n return (\n <div\n className={`scrollable-markdown-container ${className}`}\n style={{ height, position: \"relative\" }}\n {...restProps}\n >\n <div ref={containerRef} style={{ height: \"100%\", overflow: \"auto\" }}>\n <MarkdownFlow\n {...restProps}\n initialContentList={initialContentList}\n customRenderBar={customRenderBar}\n onSend={onSend}\n locale={locale}\n confirmButtonText={confirmButtonText}\n copyButtonText={copyButtonText}\n copiedButtonText={copiedButtonText}\n beforeSend={beforeSend}\n interactionDefaultValueOptions={interactionDefaultValueOptions}\n />\n </div>\n {showScrollToBottom && (\n <ScrollToBottomButton\n visible={showScrollToBottom}\n onClick={() => scrollToBottom()}\n ariaLabel={resolvedScrollToBottomAriaLabel}\n />\n )}\n </div>\n );\n};\n\nexport default ScrollableMarkdownFlow;\n"],"names":["ScrollableMarkdownFlow","initialContentList","customRenderBar","onSend","height","className","locale","confirmButtonText","copyButtonText","copiedButtonText","beforeSend","interactionDefaultValueOptions","scrollToBottomAriaLabel","restProps","containerRef","useRef","localeTexts","getContentRenderLocaleTexts","resolvedScrollToBottomAriaLabel","showScrollToBottom","scrollToBottom","useScrollToBottom","jsxs","jsx","MarkdownFlow","ScrollToBottomButton"],"mappings":";;;;;;;AAgBA,MAAMA,IAAgE,CAAC;AAAA,EACrE,oBAAAC,IAAqB,CAAA;AAAA,EACrB,iBAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AAAA,EACZ,QAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,yBAAAC;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMC,IAAeC,EAAuB,IAAI,GAC1CC,IAAcC,EAA4BX,CAAM,GAChDY,IACJN,KAA2BI,EAAY,qBAEnC,EAAE,oBAAAG,GAAoB,gBAAAC,EAAA,IAAmBC;AAAA,IAC7CP;AAAA,IACA;AAAA,MACE,gBAAgBb;AAAA,MAChB,kBAAkB;AAAA,MAClB,iBAAiB;AAAA,IAAA;AAAA,EACnB;AAGF,SACEqB,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,iCAAiCjB,CAAS;AAAA,MACrD,OAAO,EAAE,QAAAD,GAAQ,UAAU,WAAA;AAAA,MAC1B,GAAGS;AAAA,MAEJ,UAAA;AAAA,QAAAU,gBAAAA,EAAAA,IAAC,OAAA,EAAI,KAAKT,GAAc,OAAO,EAAE,QAAQ,QAAQ,UAAU,OAAA,GACzD,UAAAS,gBAAAA,EAAAA;AAAAA,UAACC;AAAA,UAAA;AAAA,YACE,GAAGX;AAAA,YACJ,oBAAAZ;AAAA,YACA,iBAAAC;AAAA,YACA,QAAAC;AAAA,YACA,QAAAG;AAAA,YACA,mBAAAC;AAAA,YACA,gBAAAC;AAAA,YACA,kBAAAC;AAAA,YACA,YAAAC;AAAA,YACA,gCAAAC;AAAA,UAAA;AAAA,QAAA,GAEJ;AAAA,QACCQ,KACCI,gBAAAA,EAAAA;AAAAA,UAACE;AAAA,UAAA;AAAA,YACC,SAASN;AAAA,YACT,SAAS,MAAMC,EAAA;AAAA,YACf,WAAWF;AAAA,UAAA;AAAA,QAAA;AAAA,MACb;AAAA,IAAA;AAAA,EAAA;AAIR;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./MarkdownFlow.cjs.js");require("../../_virtual/jsx-runtime.cjs.js");require("react");require("../ContentRender/contentRenderI18n.cjs.js");;/* empty css */exports.MarkdownFlow=e.default;exports.default=e.default;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("./MarkdownFlow.cjs.js");require("../../_virtual/jsx-runtime.cjs.js");require("react");require("react-dom");require("../ContentRender/contentRenderI18n.cjs.js");;/* empty css */exports.MarkdownFlow=e.default;exports.default=e.default;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,7 @@
1
1
  import { default as MarkdownFlow } from './MarkdownFlow';
2
2
  import { default as ScrollableMarkdownFlow } from './ScrollableMarkdownFlow';
3
+ import { default as ScrollToBottomButton } from './ScrollToBottomButton';
3
4
  export default MarkdownFlow;
4
- export { MarkdownFlow, ScrollableMarkdownFlow };
5
+ export { MarkdownFlow, ScrollableMarkdownFlow, ScrollToBottomButton };
6
+ export { default as useScrollToBottom } from './useScrollToBottom';
7
+ export type { ScrollTarget, ScrollTargetRef, UseScrollToBottomOptions, UseScrollToBottomReturn, } from './useScrollToBottom';
@@ -1,6 +1,7 @@
1
1
  import r from "./MarkdownFlow.es.js";
2
2
  import "../../_virtual/jsx-runtime.es.js";
3
3
  import "react";
4
+ import "react-dom";
4
5
  import "../ContentRender/contentRenderI18n.es.js";
5
6
  /* empty css */
6
7
  export {
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const u=require("react"),p=e=>typeof Window<"u"&&e instanceof Window,y=e=>typeof Document<"u"&&e instanceof Document,B=e=>{const n=p(e)?e.document:e;return n.scrollingElement||n.documentElement},h=e=>{if(p(e)||y(e)){const n=B(e),t=p(e)?e.innerHeight:n?.clientHeight||0;return{scrollTop:n?.scrollTop||0,scrollHeight:n?.scrollHeight||0,clientHeight:t}}return{scrollTop:e.scrollTop,scrollHeight:e.scrollHeight,clientHeight:e.clientHeight}},F=e=>e?"current"in e?e.current:e:null,R=e=>{const n=typeof window<"u"?window.getComputedStyle(e):null,t=n?.overflowY||n?.overflow;return e.scrollHeight>e.clientHeight&&t!=="visible"},v=(e,n)=>{const t=F(n);if(t)return t;const l=e?.current;if(!l)return null;if(R(l))return l;let s=l.parentElement;for(;s;){if(R(s))return s;s=s.parentElement}return typeof window<"u"?window:null},A=(e,n={})=>{const{contentRef:t=e,scrollTarget:l,scrollThreshold:s=150,contentVersion:C,followNewContent:g=!0,autoScrollOnInit:T=!1,behavior:S="smooth"}=n,[M,H]=u.useState(!1),[z,b]=u.useState(!0),a=u.useRef(g),E=u.useRef(!1),d=u.useRef(null),m=u.useCallback(()=>{const o=v(t,l);if(!o)return;const{scrollTop:r,scrollHeight:f,clientHeight:i}=h(o),c=r+i>=f-s;b(c),H(!c&&f>i),c&&(a.current=!0)},[t,l,s]),w=u.useCallback((o=S)=>{const r=v(t,l);if(!r)return;const f=typeof window<"u"&&window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,i=o==="smooth"&&f?"auto":o,c=h(r).scrollHeight;p(r)?r.scrollTo({top:c,behavior:i}):y(r)?B(r)?.scrollTo({top:c,behavior:i}):r.scrollTo({top:c,behavior:i}),a.current=!0,b(!0),H(!1)},[S,t,l]);return u.useEffect(()=>{const o=v(t,l);if(!o)return;const r=()=>{d.current!==null&&cancelAnimationFrame(d.current),d.current=requestAnimationFrame(()=>{d.current=null;const c=h(o);c.scrollTop+c.clientHeight<c.scrollHeight-s&&(a.current=!1),m()})},f=()=>r();o.addEventListener("scroll",r,{passive:!0}),window.addEventListener("resize",f);const i=typeof ResizeObserver<"u"?new ResizeObserver(f):null;return t.current&&i?.observe(t.current),typeof Element<"u"&&o instanceof Element&&o!==t.current&&i?.observe(o),m(),()=>{o.removeEventListener("scroll",r),window.removeEventListener("resize",f),i?.disconnect(),d.current!==null&&cancelAnimationFrame(d.current)}},[t,m,l,s]),u.useEffect(()=>{if(!E.current){E.current=!0,T&&w("auto");return}if(a.current){const o=requestAnimationFrame(()=>w("auto"));return()=>cancelAnimationFrame(o)}m()},[T,C,m,w]),u.useEffect(()=>{a.current=g},[g]),{showScrollToBottom:M,isAtBottom:z,followNewContent:a.current,scrollToBottom:w,refresh:m}};exports.default=A;exports.getScrollMetrics=h;exports.resolveScrollTarget=v;exports.useScrollToBottom=A;
2
+ //# sourceMappingURL=useScrollToBottom.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollToBottom.cjs.js","sources":["../../../src/components/MarkdownFlow/useScrollToBottom.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type RefObject,\n} from \"react\";\n\nexport type ScrollBehavior = \"smooth\" | \"auto\";\nexport type ScrollTarget = HTMLElement | Document | Window;\nexport type ScrollTargetRef = RefObject<ScrollTarget | null>;\n\nexport interface UseScrollToBottomOptions {\n contentRef?: RefObject<HTMLElement | null>;\n scrollTarget?: ScrollTarget | ScrollTargetRef | null;\n scrollThreshold?: number;\n contentVersion?: unknown;\n followNewContent?: boolean;\n autoScrollOnInit?: boolean;\n behavior?: ScrollBehavior;\n}\n\nexport interface UseScrollToBottomReturn {\n showScrollToBottom: boolean;\n isAtBottom: boolean;\n followNewContent: boolean;\n scrollToBottom: (behavior?: ScrollBehavior) => void;\n refresh: () => void;\n}\n\nconst isWindow = (target: ScrollTarget): target is Window =>\n typeof Window !== \"undefined\" && target instanceof Window;\n\nconst isDocument = (target: ScrollTarget): target is Document =>\n typeof Document !== \"undefined\" && target instanceof Document;\n\nconst getDocumentScroller = (target: Document | Window): HTMLElement | null => {\n const document = isWindow(target) ? target.document : target;\n return (document.scrollingElement || document.documentElement) as HTMLElement;\n};\n\nexport const getScrollMetrics = (target: ScrollTarget) => {\n if (isWindow(target) || isDocument(target)) {\n const scroller = getDocumentScroller(target);\n const viewportHeight = isWindow(target)\n ? target.innerHeight\n : scroller?.clientHeight || 0;\n return {\n scrollTop: scroller?.scrollTop || 0,\n scrollHeight: scroller?.scrollHeight || 0,\n clientHeight: viewportHeight,\n };\n }\n return {\n scrollTop: target.scrollTop,\n scrollHeight: target.scrollHeight,\n clientHeight: target.clientHeight,\n };\n};\n\nconst scrollTargetValue = (\n target: ScrollTarget | ScrollTargetRef | null | undefined\n): ScrollTarget | null => {\n if (!target) return null;\n return \"current\" in target ? target.current : target;\n};\n\nconst isScrollable = (element: HTMLElement) => {\n const style =\n typeof window !== \"undefined\" ? window.getComputedStyle(element) : null;\n const overflow = style?.overflowY || style?.overflow;\n return element.scrollHeight > element.clientHeight && overflow !== \"visible\";\n};\n\nexport const resolveScrollTarget = (\n contentRef: RefObject<HTMLElement | null> | undefined,\n explicitTarget: ScrollTarget | ScrollTargetRef | null | undefined\n): ScrollTarget | null => {\n const explicit = scrollTargetValue(explicitTarget);\n if (explicit) return explicit;\n const content = contentRef?.current;\n if (!content) return null;\n if (isScrollable(content)) return content;\n let parent = content.parentElement;\n while (parent) {\n if (isScrollable(parent)) return parent;\n parent = parent.parentElement;\n }\n return typeof window !== \"undefined\" ? window : null;\n};\n\nexport const useScrollToBottom = (\n containerRef: RefObject<HTMLElement | null>,\n options: UseScrollToBottomOptions = {}\n): UseScrollToBottomReturn => {\n const {\n contentRef = containerRef,\n scrollTarget,\n scrollThreshold = 150,\n contentVersion,\n followNewContent: followNewContentOption = true,\n autoScrollOnInit = false,\n behavior = \"smooth\",\n } = options;\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n const [isAtBottom, setIsAtBottom] = useState(true);\n const followingRef = useRef(followNewContentOption);\n const mountedRef = useRef(false);\n const frameRef = useRef<number | null>(null);\n\n const refresh = useCallback(() => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const { scrollTop, scrollHeight, clientHeight } = getScrollMetrics(target);\n const atBottom = scrollTop + clientHeight >= scrollHeight - scrollThreshold;\n setIsAtBottom(atBottom);\n setShowScrollToBottom(!atBottom && scrollHeight > clientHeight);\n if (atBottom) followingRef.current = true;\n }, [contentRef, scrollTarget, scrollThreshold]);\n\n const scrollToBottom = useCallback(\n (requestedBehavior: ScrollBehavior = behavior) => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const reducedMotion =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n const actualBehavior =\n requestedBehavior === \"smooth\" && reducedMotion\n ? \"auto\"\n : requestedBehavior;\n const top = getScrollMetrics(target).scrollHeight;\n if (isWindow(target)) {\n target.scrollTo({ top, behavior: actualBehavior });\n } else if (isDocument(target)) {\n getDocumentScroller(target)?.scrollTo({\n top,\n behavior: actualBehavior,\n });\n } else {\n target.scrollTo({ top, behavior: actualBehavior });\n }\n followingRef.current = true;\n setIsAtBottom(true);\n setShowScrollToBottom(false);\n },\n [behavior, contentRef, scrollTarget]\n );\n\n useEffect(() => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const handleScroll = () => {\n if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n frameRef.current = requestAnimationFrame(() => {\n frameRef.current = null;\n const metrics = getScrollMetrics(target);\n if (\n metrics.scrollTop + metrics.clientHeight <\n metrics.scrollHeight - scrollThreshold\n ) {\n followingRef.current = false;\n }\n refresh();\n });\n };\n const handleResize = () => handleScroll();\n target.addEventListener(\"scroll\", handleScroll, { passive: true });\n window.addEventListener(\"resize\", handleResize);\n const observer =\n typeof ResizeObserver !== \"undefined\"\n ? new ResizeObserver(handleResize)\n : null;\n if (contentRef.current) observer?.observe(contentRef.current);\n if (\n typeof Element !== \"undefined\" &&\n target instanceof Element &&\n target !== contentRef.current\n ) {\n observer?.observe(target);\n }\n refresh();\n return () => {\n target.removeEventListener(\"scroll\", handleScroll);\n window.removeEventListener(\"resize\", handleResize);\n observer?.disconnect();\n if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n };\n }, [contentRef, refresh, scrollTarget, scrollThreshold]);\n\n useEffect(() => {\n if (!mountedRef.current) {\n mountedRef.current = true;\n if (autoScrollOnInit) scrollToBottom(\"auto\");\n return;\n }\n if (followingRef.current) {\n const frame = requestAnimationFrame(() => scrollToBottom(\"auto\"));\n return () => cancelAnimationFrame(frame);\n }\n refresh();\n }, [autoScrollOnInit, contentVersion, refresh, scrollToBottom]);\n\n useEffect(() => {\n followingRef.current = followNewContentOption;\n }, [followNewContentOption]);\n\n return {\n showScrollToBottom,\n isAtBottom,\n followNewContent: followingRef.current,\n scrollToBottom,\n refresh,\n };\n};\n\nexport default useScrollToBottom;\n"],"names":["isWindow","target","isDocument","getDocumentScroller","document","getScrollMetrics","scroller","viewportHeight","scrollTargetValue","isScrollable","element","style","overflow","resolveScrollTarget","contentRef","explicitTarget","explicit","content","parent","useScrollToBottom","containerRef","options","scrollTarget","scrollThreshold","contentVersion","followNewContentOption","autoScrollOnInit","behavior","showScrollToBottom","setShowScrollToBottom","useState","isAtBottom","setIsAtBottom","followingRef","useRef","mountedRef","frameRef","refresh","useCallback","scrollTop","scrollHeight","clientHeight","atBottom","scrollToBottom","requestedBehavior","reducedMotion","actualBehavior","top","useEffect","handleScroll","metrics","handleResize","observer","frame"],"mappings":"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"}
@@ -1,16 +1,28 @@
1
1
  import { RefObject } from 'react';
2
- interface UseScrollToBottomOptions {
3
- behavior?: "smooth" | "auto";
4
- autoScrollOnInit?: boolean;
5
- scrollDelay?: number;
2
+ export type ScrollBehavior = "smooth" | "auto";
3
+ export type ScrollTarget = HTMLElement | Document | Window;
4
+ export type ScrollTargetRef = RefObject<ScrollTarget | null>;
5
+ export interface UseScrollToBottomOptions {
6
+ contentRef?: RefObject<HTMLElement | null>;
7
+ scrollTarget?: ScrollTarget | ScrollTargetRef | null;
6
8
  scrollThreshold?: number;
9
+ contentVersion?: unknown;
10
+ followNewContent?: boolean;
11
+ autoScrollOnInit?: boolean;
12
+ behavior?: ScrollBehavior;
7
13
  }
8
- interface UseScrollToBottomReturn {
14
+ export interface UseScrollToBottomReturn {
9
15
  showScrollToBottom: boolean;
10
- scrollToBottom: () => void;
11
- handleUserScrollToBottom: () => void;
12
16
  isAtBottom: boolean;
13
17
  followNewContent: boolean;
18
+ scrollToBottom: (behavior?: ScrollBehavior) => void;
19
+ refresh: () => void;
14
20
  }
15
- declare const useScrollToBottom: (containerRef: RefObject<HTMLDivElement | null>, dependencies?: any[], options?: UseScrollToBottomOptions) => UseScrollToBottomReturn;
21
+ export declare const getScrollMetrics: (target: ScrollTarget) => {
22
+ scrollTop: number;
23
+ scrollHeight: number;
24
+ clientHeight: number;
25
+ };
26
+ export declare const resolveScrollTarget: (contentRef: RefObject<HTMLElement | null> | undefined, explicitTarget: ScrollTarget | ScrollTargetRef | null | undefined) => ScrollTarget | null;
27
+ export declare const useScrollToBottom: (containerRef: RefObject<HTMLElement | null>, options?: UseScrollToBottomOptions) => UseScrollToBottomReturn;
16
28
  export default useScrollToBottom;
@@ -0,0 +1,101 @@
1
+ import { useState as R, useRef as p, useCallback as A, useEffect as v } from "react";
2
+ const w = (e) => typeof Window < "u" && e instanceof Window, z = (e) => typeof Document < "u" && e instanceof Document, C = (e) => {
3
+ const o = w(e) ? e.document : e;
4
+ return o.scrollingElement || o.documentElement;
5
+ }, H = (e) => {
6
+ if (w(e) || z(e)) {
7
+ const o = C(e), t = w(e) ? e.innerHeight : o?.clientHeight || 0;
8
+ return {
9
+ scrollTop: o?.scrollTop || 0,
10
+ scrollHeight: o?.scrollHeight || 0,
11
+ clientHeight: t
12
+ };
13
+ }
14
+ return {
15
+ scrollTop: e.scrollTop,
16
+ scrollHeight: e.scrollHeight,
17
+ clientHeight: e.clientHeight
18
+ };
19
+ }, O = (e) => e ? "current" in e ? e.current : e : null, B = (e) => {
20
+ const o = typeof window < "u" ? window.getComputedStyle(e) : null, t = o?.overflowY || o?.overflow;
21
+ return e.scrollHeight > e.clientHeight && t !== "visible";
22
+ }, T = (e, o) => {
23
+ const t = O(o);
24
+ if (t) return t;
25
+ const l = e?.current;
26
+ if (!l) return null;
27
+ if (B(l)) return l;
28
+ let s = l.parentElement;
29
+ for (; s; ) {
30
+ if (B(s)) return s;
31
+ s = s.parentElement;
32
+ }
33
+ return typeof window < "u" ? window : null;
34
+ }, N = (e, o = {}) => {
35
+ const {
36
+ contentRef: t = e,
37
+ scrollTarget: l,
38
+ scrollThreshold: s = 150,
39
+ contentVersion: F,
40
+ followNewContent: h = !0,
41
+ autoScrollOnInit: g = !1,
42
+ behavior: b = "smooth"
43
+ } = o, [D, S] = R(!1), [L, E] = R(!0), f = p(h), y = p(!1), a = p(null), d = A(() => {
44
+ const n = T(t, l);
45
+ if (!n) return;
46
+ const { scrollTop: r, scrollHeight: u, clientHeight: i } = H(n), c = r + i >= u - s;
47
+ E(c), S(!c && u > i), c && (f.current = !0);
48
+ }, [t, l, s]), m = A(
49
+ (n = b) => {
50
+ const r = T(t, l);
51
+ if (!r) return;
52
+ const u = typeof window < "u" && window.matchMedia?.("(prefers-reduced-motion: reduce)").matches, i = n === "smooth" && u ? "auto" : n, c = H(r).scrollHeight;
53
+ w(r) ? r.scrollTo({ top: c, behavior: i }) : z(r) ? C(r)?.scrollTo({
54
+ top: c,
55
+ behavior: i
56
+ }) : r.scrollTo({ top: c, behavior: i }), f.current = !0, E(!0), S(!1);
57
+ },
58
+ [b, t, l]
59
+ );
60
+ return v(() => {
61
+ const n = T(t, l);
62
+ if (!n) return;
63
+ const r = () => {
64
+ a.current !== null && cancelAnimationFrame(a.current), a.current = requestAnimationFrame(() => {
65
+ a.current = null;
66
+ const c = H(n);
67
+ c.scrollTop + c.clientHeight < c.scrollHeight - s && (f.current = !1), d();
68
+ });
69
+ }, u = () => r();
70
+ n.addEventListener("scroll", r, { passive: !0 }), window.addEventListener("resize", u);
71
+ const i = typeof ResizeObserver < "u" ? new ResizeObserver(u) : null;
72
+ return t.current && i?.observe(t.current), typeof Element < "u" && n instanceof Element && n !== t.current && i?.observe(n), d(), () => {
73
+ n.removeEventListener("scroll", r), window.removeEventListener("resize", u), i?.disconnect(), a.current !== null && cancelAnimationFrame(a.current);
74
+ };
75
+ }, [t, d, l, s]), v(() => {
76
+ if (!y.current) {
77
+ y.current = !0, g && m("auto");
78
+ return;
79
+ }
80
+ if (f.current) {
81
+ const n = requestAnimationFrame(() => m("auto"));
82
+ return () => cancelAnimationFrame(n);
83
+ }
84
+ d();
85
+ }, [g, F, d, m]), v(() => {
86
+ f.current = h;
87
+ }, [h]), {
88
+ showScrollToBottom: D,
89
+ isAtBottom: L,
90
+ followNewContent: f.current,
91
+ scrollToBottom: m,
92
+ refresh: d
93
+ };
94
+ };
95
+ export {
96
+ N as default,
97
+ H as getScrollMetrics,
98
+ T as resolveScrollTarget,
99
+ N as useScrollToBottom
100
+ };
101
+ //# sourceMappingURL=useScrollToBottom.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useScrollToBottom.es.js","sources":["../../../src/components/MarkdownFlow/useScrollToBottom.ts"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useRef,\n useState,\n type RefObject,\n} from \"react\";\n\nexport type ScrollBehavior = \"smooth\" | \"auto\";\nexport type ScrollTarget = HTMLElement | Document | Window;\nexport type ScrollTargetRef = RefObject<ScrollTarget | null>;\n\nexport interface UseScrollToBottomOptions {\n contentRef?: RefObject<HTMLElement | null>;\n scrollTarget?: ScrollTarget | ScrollTargetRef | null;\n scrollThreshold?: number;\n contentVersion?: unknown;\n followNewContent?: boolean;\n autoScrollOnInit?: boolean;\n behavior?: ScrollBehavior;\n}\n\nexport interface UseScrollToBottomReturn {\n showScrollToBottom: boolean;\n isAtBottom: boolean;\n followNewContent: boolean;\n scrollToBottom: (behavior?: ScrollBehavior) => void;\n refresh: () => void;\n}\n\nconst isWindow = (target: ScrollTarget): target is Window =>\n typeof Window !== \"undefined\" && target instanceof Window;\n\nconst isDocument = (target: ScrollTarget): target is Document =>\n typeof Document !== \"undefined\" && target instanceof Document;\n\nconst getDocumentScroller = (target: Document | Window): HTMLElement | null => {\n const document = isWindow(target) ? target.document : target;\n return (document.scrollingElement || document.documentElement) as HTMLElement;\n};\n\nexport const getScrollMetrics = (target: ScrollTarget) => {\n if (isWindow(target) || isDocument(target)) {\n const scroller = getDocumentScroller(target);\n const viewportHeight = isWindow(target)\n ? target.innerHeight\n : scroller?.clientHeight || 0;\n return {\n scrollTop: scroller?.scrollTop || 0,\n scrollHeight: scroller?.scrollHeight || 0,\n clientHeight: viewportHeight,\n };\n }\n return {\n scrollTop: target.scrollTop,\n scrollHeight: target.scrollHeight,\n clientHeight: target.clientHeight,\n };\n};\n\nconst scrollTargetValue = (\n target: ScrollTarget | ScrollTargetRef | null | undefined\n): ScrollTarget | null => {\n if (!target) return null;\n return \"current\" in target ? target.current : target;\n};\n\nconst isScrollable = (element: HTMLElement) => {\n const style =\n typeof window !== \"undefined\" ? window.getComputedStyle(element) : null;\n const overflow = style?.overflowY || style?.overflow;\n return element.scrollHeight > element.clientHeight && overflow !== \"visible\";\n};\n\nexport const resolveScrollTarget = (\n contentRef: RefObject<HTMLElement | null> | undefined,\n explicitTarget: ScrollTarget | ScrollTargetRef | null | undefined\n): ScrollTarget | null => {\n const explicit = scrollTargetValue(explicitTarget);\n if (explicit) return explicit;\n const content = contentRef?.current;\n if (!content) return null;\n if (isScrollable(content)) return content;\n let parent = content.parentElement;\n while (parent) {\n if (isScrollable(parent)) return parent;\n parent = parent.parentElement;\n }\n return typeof window !== \"undefined\" ? window : null;\n};\n\nexport const useScrollToBottom = (\n containerRef: RefObject<HTMLElement | null>,\n options: UseScrollToBottomOptions = {}\n): UseScrollToBottomReturn => {\n const {\n contentRef = containerRef,\n scrollTarget,\n scrollThreshold = 150,\n contentVersion,\n followNewContent: followNewContentOption = true,\n autoScrollOnInit = false,\n behavior = \"smooth\",\n } = options;\n const [showScrollToBottom, setShowScrollToBottom] = useState(false);\n const [isAtBottom, setIsAtBottom] = useState(true);\n const followingRef = useRef(followNewContentOption);\n const mountedRef = useRef(false);\n const frameRef = useRef<number | null>(null);\n\n const refresh = useCallback(() => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const { scrollTop, scrollHeight, clientHeight } = getScrollMetrics(target);\n const atBottom = scrollTop + clientHeight >= scrollHeight - scrollThreshold;\n setIsAtBottom(atBottom);\n setShowScrollToBottom(!atBottom && scrollHeight > clientHeight);\n if (atBottom) followingRef.current = true;\n }, [contentRef, scrollTarget, scrollThreshold]);\n\n const scrollToBottom = useCallback(\n (requestedBehavior: ScrollBehavior = behavior) => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const reducedMotion =\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-reduced-motion: reduce)\").matches;\n const actualBehavior =\n requestedBehavior === \"smooth\" && reducedMotion\n ? \"auto\"\n : requestedBehavior;\n const top = getScrollMetrics(target).scrollHeight;\n if (isWindow(target)) {\n target.scrollTo({ top, behavior: actualBehavior });\n } else if (isDocument(target)) {\n getDocumentScroller(target)?.scrollTo({\n top,\n behavior: actualBehavior,\n });\n } else {\n target.scrollTo({ top, behavior: actualBehavior });\n }\n followingRef.current = true;\n setIsAtBottom(true);\n setShowScrollToBottom(false);\n },\n [behavior, contentRef, scrollTarget]\n );\n\n useEffect(() => {\n const target = resolveScrollTarget(contentRef, scrollTarget);\n if (!target) return;\n const handleScroll = () => {\n if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n frameRef.current = requestAnimationFrame(() => {\n frameRef.current = null;\n const metrics = getScrollMetrics(target);\n if (\n metrics.scrollTop + metrics.clientHeight <\n metrics.scrollHeight - scrollThreshold\n ) {\n followingRef.current = false;\n }\n refresh();\n });\n };\n const handleResize = () => handleScroll();\n target.addEventListener(\"scroll\", handleScroll, { passive: true });\n window.addEventListener(\"resize\", handleResize);\n const observer =\n typeof ResizeObserver !== \"undefined\"\n ? new ResizeObserver(handleResize)\n : null;\n if (contentRef.current) observer?.observe(contentRef.current);\n if (\n typeof Element !== \"undefined\" &&\n target instanceof Element &&\n target !== contentRef.current\n ) {\n observer?.observe(target);\n }\n refresh();\n return () => {\n target.removeEventListener(\"scroll\", handleScroll);\n window.removeEventListener(\"resize\", handleResize);\n observer?.disconnect();\n if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n };\n }, [contentRef, refresh, scrollTarget, scrollThreshold]);\n\n useEffect(() => {\n if (!mountedRef.current) {\n mountedRef.current = true;\n if (autoScrollOnInit) scrollToBottom(\"auto\");\n return;\n }\n if (followingRef.current) {\n const frame = requestAnimationFrame(() => scrollToBottom(\"auto\"));\n return () => cancelAnimationFrame(frame);\n }\n refresh();\n }, [autoScrollOnInit, contentVersion, refresh, scrollToBottom]);\n\n useEffect(() => {\n followingRef.current = followNewContentOption;\n }, [followNewContentOption]);\n\n return {\n showScrollToBottom,\n isAtBottom,\n followNewContent: followingRef.current,\n scrollToBottom,\n refresh,\n };\n};\n\nexport default useScrollToBottom;\n"],"names":["isWindow","target","isDocument","getDocumentScroller","document","getScrollMetrics","scroller","viewportHeight","scrollTargetValue","isScrollable","element","style","overflow","resolveScrollTarget","contentRef","explicitTarget","explicit","content","parent","useScrollToBottom","containerRef","options","scrollTarget","scrollThreshold","contentVersion","followNewContentOption","autoScrollOnInit","behavior","showScrollToBottom","setShowScrollToBottom","useState","isAtBottom","setIsAtBottom","followingRef","useRef","mountedRef","frameRef","refresh","useCallback","scrollTop","scrollHeight","clientHeight","atBottom","scrollToBottom","requestedBehavior","reducedMotion","actualBehavior","top","useEffect","handleScroll","metrics","handleResize","observer","frame"],"mappings":"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"}
@@ -1,6 +1,9 @@
1
1
  export { default as ContentRender } from './ContentRender';
2
2
  export { default as MarkdownFlow } from './MarkdownFlow';
3
- export { default as ScrollableMarkdown } from './MarkdownFlow/ScrollableMarkdownFlow';
3
+ export { default as ScrollableMarkdownFlow } from './MarkdownFlow/ScrollableMarkdownFlow';
4
+ export { default as ScrollToBottomButton } from './MarkdownFlow/ScrollToBottomButton';
5
+ export { default as useScrollToBottom } from './MarkdownFlow/useScrollToBottom';
6
+ export type { ScrollTarget, ScrollTargetRef, UseScrollToBottomOptions, UseScrollToBottomReturn, } from './MarkdownFlow/useScrollToBottom';
4
7
  export { default as MarkdownFlowEditor } from './MarkdownFlowEditor';
5
8
  export { default as Slide } from './Slide';
6
9
  export { Player, useSlide } from './Slide';
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.cjs3.js");require("../../../node_modules/rc-resize-observer/es/index.cjs.js");require("../../../node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js");require("../../../node_modules/rc-util/es/raf.cjs.js");const d=require("../../../lib/utils.cjs.js");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const l=c(s),i=l.forwardRef(({className:e,autoSize:t={minRows:1},style:r,...a},n)=>o.jsxRuntimeExports.jsx(u.default,{ref:n,autoSize:t,className:d.cn("border-input placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 w-full rounded-md border bg-transparent pl-3 py-1.5 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","resize-none",e),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...r},...a}));i.displayName="Textarea";exports.Textarea=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.cjs4.js");require("../../../node_modules/rc-resize-observer/es/index.cjs.js");require("../../../node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js");require("../../../node_modules/rc-util/es/raf.cjs.js");const d=require("../../../lib/utils.cjs.js");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const l=c(s),i=l.forwardRef(({className:e,autoSize:t={minRows:1},style:r,...a},n)=>o.jsxRuntimeExports.jsx(u.default,{ref:n,autoSize:t,className:d.cn("border-input placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 w-full rounded-md border bg-transparent pl-3 py-1.5 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","resize-none",e),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...r},...a}));i.displayName="Textarea";exports.Textarea=i;
2
2
  //# sourceMappingURL=textarea.cjs.js.map
@@ -1,7 +1,7 @@
1
1
  import { j as i } from "../../../_virtual/jsx-runtime.es.js";
2
2
  import * as d from "react";
3
3
  import n from "../../../node_modules/rc-textarea/es/TextArea.es.js";
4
- import "../../../_virtual/index.es3.js";
4
+ import "../../../_virtual/index.es4.js";
5
5
  import "../../../node_modules/rc-resize-observer/es/index.es.js";
6
6
  import "../../../node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
7
7
  import "../../../node_modules/rc-util/es/raf.es.js";
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.js"),n=require("./components/MarkdownFlow/MarkdownFlow.cjs.js");require("./_virtual/jsx-runtime.cjs.js");require("react");require("./components/ContentRender/contentRenderI18n.cjs.js");;/* empty css */const r=require("./components/ContentRender/ContentRender.cjs.js"),o=require("./components/ContentRender/IframeSandbox.cjs.js"),a=require("./components/ContentRender/utils/split-content.cjs.js"),u=require("./components/ContentRender/MarkdownFlowInput.cjs.js"),e=require("./lib/interaction-defaults.cjs.js");exports.MarkdownFlowEditor=t.default;exports.MarkdownFlow=n.default;exports.ContentRender=r.default;exports.IframeSandbox=o.default;exports.splitContentSegments=a.splitContentSegments;exports.MarkdownFlowInput=u.default;exports.getInteractionDefaultSelectedValues=e.getInteractionDefaultSelectedValues;exports.getInteractionDefaultValues=e.getInteractionDefaultValues;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./components/MarkdownFlowEditor/MarkdownFlowEditor.cjs.js"),o=require("./components/MarkdownFlow/MarkdownFlow.cjs.js"),n=require("./components/MarkdownFlow/ScrollableMarkdownFlow.cjs.js"),r=require("./components/MarkdownFlow/ScrollToBottomButton.cjs.js"),l=require("./components/MarkdownFlow/useScrollToBottom.cjs.js"),a=require("./components/ContentRender/ContentRender.cjs.js"),u=require("./components/ContentRender/IframeSandbox.cjs.js"),c=require("./components/ContentRender/utils/split-content.cjs.js"),s=require("./components/ContentRender/MarkdownFlowInput.cjs.js"),t=require("./lib/interaction-defaults.cjs.js");exports.MarkdownFlowEditor=e.default;exports.MarkdownFlow=o.default;exports.ScrollableMarkdownFlow=n.default;exports.ScrollToBottomButton=r.ScrollToBottomButton;exports.useScrollToBottom=l.useScrollToBottom;exports.ContentRender=a.default;exports.IframeSandbox=u.default;exports.splitContentSegments=c.splitContentSegments;exports.MarkdownFlowInput=s.default;exports.getInteractionDefaultSelectedValues=t.getInteractionDefaultSelectedValues;exports.getInteractionDefaultValues=t.getInteractionDefaultValues;
2
2
  //# sourceMappingURL=index.cjs.js.map
package/dist/index.es.js CHANGED
@@ -1,22 +1,24 @@
1
- import { default as n } from "./components/MarkdownFlowEditor/MarkdownFlowEditor.es.js";
2
- import { default as m } from "./components/MarkdownFlow/MarkdownFlow.es.js";
3
- import "./_virtual/jsx-runtime.es.js";
4
- import "react";
5
- import "./components/ContentRender/contentRenderI18n.es.js";
6
- /* empty css */
7
- import { default as d } from "./components/ContentRender/ContentRender.es.js";
8
- import { default as s } from "./components/ContentRender/IframeSandbox.es.js";
9
- import { splitContentSegments as x } from "./components/ContentRender/utils/split-content.es.js";
10
- import { default as I } from "./components/ContentRender/MarkdownFlowInput.es.js";
11
- import { getInteractionDefaultSelectedValues as g, getInteractionDefaultValues as k } from "./lib/interaction-defaults.es.js";
1
+ import { default as e } from "./components/MarkdownFlowEditor/MarkdownFlowEditor.es.js";
2
+ import { default as a } from "./components/MarkdownFlow/MarkdownFlow.es.js";
3
+ import { default as f } from "./components/MarkdownFlow/ScrollableMarkdownFlow.es.js";
4
+ import { ScrollToBottomButton as d } from "./components/MarkdownFlow/ScrollToBottomButton.es.js";
5
+ import { useScrollToBottom as u } from "./components/MarkdownFlow/useScrollToBottom.es.js";
6
+ import { default as s } from "./components/ContentRender/ContentRender.es.js";
7
+ import { default as w } from "./components/ContentRender/IframeSandbox.es.js";
8
+ import { splitContentSegments as S } from "./components/ContentRender/utils/split-content.es.js";
9
+ import { default as k } from "./components/ContentRender/MarkdownFlowInput.es.js";
10
+ import { getInteractionDefaultSelectedValues as I, getInteractionDefaultValues as M } from "./lib/interaction-defaults.es.js";
12
11
  export {
13
- d as ContentRender,
14
- s as IframeSandbox,
15
- m as MarkdownFlow,
16
- n as MarkdownFlowEditor,
17
- I as MarkdownFlowInput,
18
- g as getInteractionDefaultSelectedValues,
19
- k as getInteractionDefaultValues,
20
- x as splitContentSegments
12
+ s as ContentRender,
13
+ w as IframeSandbox,
14
+ a as MarkdownFlow,
15
+ e as MarkdownFlowEditor,
16
+ k as MarkdownFlowInput,
17
+ d as ScrollToBottomButton,
18
+ f as ScrollableMarkdownFlow,
19
+ I as getInteractionDefaultSelectedValues,
20
+ M as getInteractionDefaultValues,
21
+ S as splitContentSegments,
22
+ u as useScrollToBottom
21
23
  };
22
24
  //# sourceMappingURL=index.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../../_virtual/index.cjs8.js"),v=require("./constants.cjs.js");var d;function x(){if(d)return c.__exports;d=1,Object.defineProperty(c.__exports,"__esModule",{value:!0}),c.__exports.sanitizeUrl=void 0;var e=v.__require();function m(r){return e.relativeFirstCharacters.indexOf(r[0])>-1}function p(r){var i=r.replace(e.ctrlCharactersRegex,"");return i.replace(e.htmlEntitiesRegex,function(t,a){return String.fromCharCode(a)})}function R(r){return URL.canParse(r)}function l(r){try{return decodeURIComponent(r)}catch{return r}}function f(r){if(!r)return e.BLANK_URL;var i,t=l(r.trim());do t=p(t).replace(e.htmlCtrlEntityRegex,"").replace(e.ctrlCharactersRegex,"").replace(e.whitespaceEscapeCharsRegex,"").trim(),t=l(t),i=t.match(e.ctrlCharactersRegex)||t.match(e.htmlEntitiesRegex)||t.match(e.htmlCtrlEntityRegex)||t.match(e.whitespaceEscapeCharsRegex);while(i&&i.length>0);var a=t;if(!a)return e.BLANK_URL;if(m(a))return a;var u=a.trimStart(),h=u.match(e.urlSchemeRegex);if(!h)return a;var n=h[0].toLowerCase().trim();if(e.invalidProtocolRegex.test(n))return e.BLANK_URL;var s=u.replace(/\\/g,"/");if(n==="mailto:"||n.includes("://"))return s;if(n==="http:"||n==="https:"){if(!R(s))return e.BLANK_URL;var o=new URL(s);return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return s}return c.__exports.sanitizeUrl=f,c.__exports}exports.__require=x;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("../../../../_virtual/index.cjs9.js"),v=require("./constants.cjs.js");var d;function x(){if(d)return c.__exports;d=1,Object.defineProperty(c.__exports,"__esModule",{value:!0}),c.__exports.sanitizeUrl=void 0;var e=v.__require();function m(r){return e.relativeFirstCharacters.indexOf(r[0])>-1}function p(r){var i=r.replace(e.ctrlCharactersRegex,"");return i.replace(e.htmlEntitiesRegex,function(t,a){return String.fromCharCode(a)})}function R(r){return URL.canParse(r)}function l(r){try{return decodeURIComponent(r)}catch{return r}}function f(r){if(!r)return e.BLANK_URL;var i,t=l(r.trim());do t=p(t).replace(e.htmlCtrlEntityRegex,"").replace(e.ctrlCharactersRegex,"").replace(e.whitespaceEscapeCharsRegex,"").trim(),t=l(t),i=t.match(e.ctrlCharactersRegex)||t.match(e.htmlEntitiesRegex)||t.match(e.htmlCtrlEntityRegex)||t.match(e.whitespaceEscapeCharsRegex);while(i&&i.length>0);var a=t;if(!a)return e.BLANK_URL;if(m(a))return a;var u=a.trimStart(),h=u.match(e.urlSchemeRegex);if(!h)return a;var n=h[0].toLowerCase().trim();if(e.invalidProtocolRegex.test(n))return e.BLANK_URL;var s=u.replace(/\\/g,"/");if(n==="mailto:"||n.includes("://"))return s;if(n==="http:"||n==="https:"){if(!R(s))return e.BLANK_URL;var o=new URL(s);return o.protocol=o.protocol.toLowerCase(),o.hostname=o.hostname.toLowerCase(),o.toString()}return s}return c.__exports.sanitizeUrl=f,c.__exports}exports.__require=x;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,4 +1,4 @@
1
- import { __exports as c } from "../../../../_virtual/index.es8.js";
1
+ import { __exports as c } from "../../../../_virtual/index.es9.js";
2
2
  import { __require as v } from "./constants.es.js";
3
3
  var m;
4
4
  function g() {
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../_virtual/index.cjs9.js");/*!
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../../_virtual/index.cjs8.js");/*!
2
2
  Copyright (c) 2018 Jed Watson.
3
3
  Licensed under the MIT License (MIT), see
4
4
  http://jedwatson.github.io/classnames
@@ -1,4 +1,4 @@
1
- import { __module as s } from "../../_virtual/index.es9.js";
1
+ import { __module as s } from "../../_virtual/index.es8.js";
2
2
  /*!
3
3
  Copyright (c) 2018 Jed Watson.
4
4
  Licensed under the MIT License (MIT), see
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("../createLucideIcon.cjs.js");/**
2
+ * @license lucide-react v0.525.0 - ISC
3
+ *
4
+ * This source code is licensed under the ISC license.
5
+ * See the LICENSE file in the root directory of this source tree.
6
+ */const e=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],t=o.default("chevron-down",e);exports.__iconNode=e;exports.default=t;
7
+ //# sourceMappingURL=chevron-down.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-down.cjs.js","sources":["../../../../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js"],"sourcesContent":["/**\n * @license lucide-react v0.525.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n"],"names":["__iconNode","ChevronDown","createLucideIcon"],"mappings":"0JAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GASK,MAACA,EAAa,CAAC,CAAC,OAAQ,CAAE,EAAG,eAAgB,IAAK,SAAU,CAAC,EAC5DC,EAAcC,EAAAA,QAAiB,eAAgBF,CAAU","x_google_ignoreList":[0]}
@@ -0,0 +1,13 @@
1
+ import o from "../createLucideIcon.es.js";
2
+ /**
3
+ * @license lucide-react v0.525.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const e = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]], c = o("chevron-down", e);
9
+ export {
10
+ e as __iconNode,
11
+ c as default
12
+ };
13
+ //# sourceMappingURL=chevron-down.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chevron-down.es.js","sources":["../../../../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js"],"sourcesContent":["/**\n * @license lucide-react v0.525.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n"],"names":["__iconNode","ChevronDown","createLucideIcon"],"mappings":";AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASK,MAACA,IAAa,CAAC,CAAC,QAAQ,EAAE,GAAG,gBAAgB,KAAK,UAAU,CAAC,GAC5DC,IAAcC,EAAiB,gBAAgBF,CAAU;","x_google_ignoreList":[0]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../_virtual/index.cjs3.js"),n=require("react"),T=require("./utils/commonUtils.cjs.js");var de=n.forwardRef(function(e,U){var p,x,y,$=e.inputElement,N=e.children,r=e.prefixCls,k=e.prefix,f=e.suffix,C=e.addonBefore,W=e.addonAfter,z=e.className,J=e.style,m=e.disabled,I=e.readOnly,K=e.focused,E=e.triggerFocus,d=e.allowClear,b=e.value,h=e.handleReset,L=e.hidden,t=e.classes,a=e.classNames,g=e.dataAttrs,o=e.styles,l=e.components,w=e.onClear,M=N??$,Q=l?.affixWrapper||"span",V=l?.groupWrapper||"span",X=l?.wrapper||"span",S=l?.groupAddon||"span",A=n.useRef(null),Y=function(s){var q;(q=A.current)!==null&&q!==void 0&&q.contains(s.target)&&E?.()},j=T.hasPrefixSuffix(e),c=n.cloneElement(M,{value:b,className:u.default((p=M.props)===null||p===void 0?void 0:p.className,!j&&a?.variant)||null}),B=n.useRef(null);if(n.useImperativeHandle(U,function(){return{nativeElement:B.current||A.current}}),j){var D=null;if(d){var Z=!m&&!I&&b,R="".concat(r,"-clear-icon"),P=oe.default(d)==="object"&&d!==null&&d!==void 0&&d.clearIcon?d.clearIcon:"✖";D=n.createElement("button",{type:"button",tabIndex:-1,onClick:function(s){h?.(s),w?.()},onMouseDown:function(s){return s.preventDefault()},className:u.default(R,i.default(i.default({},"".concat(R,"-hidden"),!Z),"".concat(R,"-has-suffix"),!!f))},P)}var v="".concat(r,"-affix-wrapper"),ee=u.default(v,i.default(i.default(i.default(i.default(i.default({},"".concat(r,"-disabled"),m),"".concat(v,"-disabled"),m),"".concat(v,"-focused"),K),"".concat(v,"-readonly"),I),"".concat(v,"-input-with-clear-btn"),f&&d&&b),t?.affixWrapper,a?.affixWrapper,a?.variant),ae=(f||d)&&n.createElement("span",{className:u.default("".concat(r,"-suffix"),a?.suffix),style:o?.suffix},D,f);c=n.createElement(Q,te.default({className:ee,style:o?.affixWrapper,onClick:Y},g?.affixWrapper,{ref:A}),k&&n.createElement("span",{className:u.default("".concat(r,"-prefix"),a?.prefix),style:o?.prefix},k),c,ae)}if(T.hasAddon(e)){var _="".concat(r,"-group"),O="".concat(_,"-addon"),F="".concat(_,"-wrapper"),ne=u.default("".concat(r,"-wrapper"),_,t?.wrapper,a?.wrapper),le=u.default(F,i.default({},"".concat(F,"-disabled"),m),t?.group,a?.groupWrapper);c=n.createElement(V,{className:le,ref:B},n.createElement(X,{className:ne},C&&n.createElement(S,{className:O},C),c,W&&n.createElement(S,{className:O},W)))}return n.cloneElement(c,{className:u.default((x=c.props)===null||x===void 0?void 0:x.className,z)||null,style:H.default(H.default({},(y=c.props)===null||y===void 0?void 0:y.style),J),hidden:L})});exports.default=de;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../_virtual/index.cjs4.js"),n=require("react"),T=require("./utils/commonUtils.cjs.js");var de=n.forwardRef(function(e,U){var p,x,y,$=e.inputElement,N=e.children,r=e.prefixCls,k=e.prefix,f=e.suffix,C=e.addonBefore,W=e.addonAfter,z=e.className,J=e.style,m=e.disabled,I=e.readOnly,K=e.focused,E=e.triggerFocus,d=e.allowClear,b=e.value,h=e.handleReset,L=e.hidden,t=e.classes,a=e.classNames,g=e.dataAttrs,o=e.styles,l=e.components,w=e.onClear,M=N??$,Q=l?.affixWrapper||"span",V=l?.groupWrapper||"span",X=l?.wrapper||"span",S=l?.groupAddon||"span",A=n.useRef(null),Y=function(s){var q;(q=A.current)!==null&&q!==void 0&&q.contains(s.target)&&E?.()},j=T.hasPrefixSuffix(e),c=n.cloneElement(M,{value:b,className:u.default((p=M.props)===null||p===void 0?void 0:p.className,!j&&a?.variant)||null}),B=n.useRef(null);if(n.useImperativeHandle(U,function(){return{nativeElement:B.current||A.current}}),j){var D=null;if(d){var Z=!m&&!I&&b,R="".concat(r,"-clear-icon"),P=oe.default(d)==="object"&&d!==null&&d!==void 0&&d.clearIcon?d.clearIcon:"✖";D=n.createElement("button",{type:"button",tabIndex:-1,onClick:function(s){h?.(s),w?.()},onMouseDown:function(s){return s.preventDefault()},className:u.default(R,i.default(i.default({},"".concat(R,"-hidden"),!Z),"".concat(R,"-has-suffix"),!!f))},P)}var v="".concat(r,"-affix-wrapper"),ee=u.default(v,i.default(i.default(i.default(i.default(i.default({},"".concat(r,"-disabled"),m),"".concat(v,"-disabled"),m),"".concat(v,"-focused"),K),"".concat(v,"-readonly"),I),"".concat(v,"-input-with-clear-btn"),f&&d&&b),t?.affixWrapper,a?.affixWrapper,a?.variant),ae=(f||d)&&n.createElement("span",{className:u.default("".concat(r,"-suffix"),a?.suffix),style:o?.suffix},D,f);c=n.createElement(Q,te.default({className:ee,style:o?.affixWrapper,onClick:Y},g?.affixWrapper,{ref:A}),k&&n.createElement("span",{className:u.default("".concat(r,"-prefix"),a?.prefix),style:o?.prefix},k),c,ae)}if(T.hasAddon(e)){var _="".concat(r,"-group"),O="".concat(_,"-addon"),F="".concat(_,"-wrapper"),ne=u.default("".concat(r,"-wrapper"),_,t?.wrapper,a?.wrapper),le=u.default(F,i.default({},"".concat(F,"-disabled"),m),t?.group,a?.groupWrapper);c=n.createElement(V,{className:le,ref:B},n.createElement(X,{className:ne},C&&n.createElement(S,{className:O},C),c,W&&n.createElement(S,{className:O},W)))}return n.cloneElement(c,{className:u.default((x=c.props)===null||x===void 0?void 0:x.className,z)||null,style:H.default(H.default({},(y=c.props)===null||y===void 0?void 0:y.style),J),hidden:L})});exports.default=de;
2
2
  //# sourceMappingURL=BaseInput.cjs.js.map
@@ -2,7 +2,7 @@ import $ from "../../@babel/runtime/helpers/esm/objectSpread2.es.js";
2
2
  import oe from "../../@babel/runtime/helpers/esm/extends.es.js";
3
3
  import r from "../../@babel/runtime/helpers/esm/defineProperty.es.js";
4
4
  import te from "../../@babel/runtime/helpers/esm/typeof.es.js";
5
- import d from "../../../_virtual/index.es3.js";
5
+ import d from "../../../_virtual/index.es4.js";
6
6
  import l, { useRef as q, cloneElement as ie } from "react";
7
7
  import { hasPrefixSuffix as re, hasAddon as de } from "./utils/commonUtils.es.js";
8
8
  var xe = /* @__PURE__ */ l.forwardRef(function(e, z) {