rme 0.1.13 → 0.1.14

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.d.ts CHANGED
@@ -157,6 +157,7 @@ declare const createSourceCodeDelegate: (options?: CreateSourceCodeManagerOption
157
157
  declare const _default$1: react__default.NamedExoticComponent<EditorProps>;
158
158
 
159
159
  interface AIOptions {
160
+ defaultSelectProvider?: string;
160
161
  supportProviderInfosMap: Record<string, {
161
162
  models: string[];
162
163
  }>;
@@ -165,7 +166,7 @@ interface AIOptions {
165
166
  model: string;
166
167
  prompt: string;
167
168
  temperature?: number;
168
- }) => Promise<string> | null;
169
+ }) => Promise<string | null>;
169
170
  }
170
171
 
171
172
  type MarkdownItToken = string;
package/dist/index.mjs CHANGED
@@ -5395,16 +5395,17 @@ var getTransformerByView = (view) => {
5395
5395
  // src/editor/extensions/Ai/ai-nodeview.tsx
5396
5396
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
5397
5397
  function AINodeView(props) {
5398
- const { supportProviderInfosMap, generateText, getPosition } = props;
5398
+ const { supportProviderInfosMap, generateText, getPosition, defaultSelectProvider } = props;
5399
5399
  const pos = getPosition();
5400
5400
  const [status, setStatus] = useState(0 /* WAITASK */);
5401
5401
  const providers = Object.keys(supportProviderInfosMap);
5402
- const [selectedProvider, setSelectedProvider] = useState(providers[0]);
5402
+ const [selectedProvider, setSelectedProvider] = useState(defaultSelectProvider || providers[0]);
5403
5403
  const providerInfo = supportProviderInfosMap[selectedProvider];
5404
5404
  const [selectedModel, setSelectedModel] = useState(providerInfo.models[0]);
5405
5405
  const [generatedText, setGeneratedText] = useState("");
5406
5406
  const [prompt, setPrompt] = useState("");
5407
5407
  const inputRef = useRef(null);
5408
+ const controllerRef = useRef(null);
5408
5409
  useEffect(() => {
5409
5410
  inputRef.current?.focus();
5410
5411
  }, []);
@@ -5412,12 +5413,19 @@ function AINodeView(props) {
5412
5413
  const generateTextHandler = async () => {
5413
5414
  setStatus(1 /* LOADING */);
5414
5415
  try {
5416
+ if (controllerRef.current) {
5417
+ controllerRef.current.abort();
5418
+ }
5419
+ controllerRef.current = new AbortController();
5415
5420
  const text = await generateText({
5416
5421
  provider: selectedProvider,
5417
5422
  model: selectedModel,
5418
5423
  prompt,
5419
5424
  temperature: 0.7
5420
5425
  });
5426
+ if (controllerRef.current?.signal.aborted) {
5427
+ return;
5428
+ }
5421
5429
  if (text) {
5422
5430
  setGeneratedText(text);
5423
5431
  setStatus(2 /* SUCCESS */);
@@ -5431,14 +5439,31 @@ function AINodeView(props) {
5431
5439
  const renderActionButton = () => {
5432
5440
  switch (status) {
5433
5441
  case 0 /* WAITASK */:
5434
- return /* @__PURE__ */ jsx2(Button, { size: "small", btnType: "primary", onClick: generateTextHandler, children: t("ai.generate") });
5442
+ return /* @__PURE__ */ jsxs(Button, { size: "small", btnType: "primary", onClick: generateTextHandler, children: [
5443
+ /* @__PURE__ */ jsx2("i", { className: "ri-bard-line" }),
5444
+ t("ai.generate")
5445
+ ] });
5435
5446
  case 1 /* LOADING */:
5436
5447
  return [
5437
5448
  /* @__PURE__ */ jsxs(Button, { size: "small", disabled: true, children: [
5438
5449
  t("common.loading"),
5439
5450
  "..."
5440
- ] }, 1 /* LOADING */),
5441
- /* @__PURE__ */ jsx2(Button, { size: "small", children: t("ai.stop") })
5451
+ ] }, "loading"),
5452
+ /* @__PURE__ */ jsxs(
5453
+ Button,
5454
+ {
5455
+ size: "small",
5456
+ onClick: () => {
5457
+ controllerRef.current?.abort();
5458
+ setStatus(0 /* WAITASK */);
5459
+ },
5460
+ children: [
5461
+ /* @__PURE__ */ jsx2("i", { className: "ri-stop-line" }),
5462
+ t("ai.stop")
5463
+ ]
5464
+ },
5465
+ "stop"
5466
+ )
5442
5467
  ];
5443
5468
  case 2 /* SUCCESS */:
5444
5469
  return [
@@ -5457,12 +5482,13 @@ function AINodeView(props) {
5457
5482
  }
5458
5483
  },
5459
5484
  children: t("common.accept")
5460
- }
5485
+ },
5486
+ "accept"
5461
5487
  ),
5462
- /* @__PURE__ */ jsx2(Button, { size: "small", onClick: generateTextHandler, children: t("ai.regenerate") })
5488
+ /* @__PURE__ */ jsx2(Button, { size: "small", onClick: generateTextHandler, children: t("ai.regenerate") }, "regenerate")
5463
5489
  ];
5464
5490
  case 3 /* ERROR */:
5465
- return /* @__PURE__ */ jsx2(Button, { size: "small", btnType: "primary", children: t("ai.retry") });
5491
+ return /* @__PURE__ */ jsx2(Button, { size: "small", btnType: "primary", onClick: generateTextHandler, children: t("ai.retry") });
5466
5492
  }
5467
5493
  };
5468
5494
  const renderPreview = () => {
@@ -5486,7 +5512,14 @@ function AINodeView(props) {
5486
5512
  /* @__PURE__ */ jsxs("div", { children: [
5487
5513
  renderPreview(),
5488
5514
  /* @__PURE__ */ jsx2(StatusTitle, { children: t("ai.prompt") }),
5489
- /* @__PURE__ */ jsx2(InputAskTextarea, { ref: inputRef, value: prompt, onChange: (e) => setPrompt(e.target.value) })
5515
+ /* @__PURE__ */ jsx2(
5516
+ InputAskTextarea,
5517
+ {
5518
+ ref: inputRef,
5519
+ value: prompt,
5520
+ onChange: (e) => setPrompt(e.target.value)
5521
+ }
5522
+ )
5490
5523
  ] }),
5491
5524
  /* @__PURE__ */ jsx2("div", { className: "divider" }),
5492
5525
  /* @__PURE__ */ jsxs(BottomBar, { children: [
@@ -5505,6 +5538,7 @@ function AINodeView(props) {
5505
5538
  value: provider,
5506
5539
  handler: () => {
5507
5540
  setSelectedProvider(provider);
5541
+ setSelectedModel(supportProviderInfosMap[provider]?.models[0]);
5508
5542
  }
5509
5543
  })),
5510
5544
  children: selectedProvider || "Select Provider"
@@ -5600,13 +5634,11 @@ var AIExtension = class extends NodeExtension {
5600
5634
  constructor() {
5601
5635
  super(...arguments);
5602
5636
  this.ReactComponent = (props) => {
5603
- const { supportProviderInfosMap, generateText } = this.options;
5604
5637
  return /* @__PURE__ */ jsx3(
5605
5638
  AINodeView,
5606
5639
  {
5607
- supportProviderInfosMap,
5608
- generateText,
5609
- ...props
5640
+ ...props,
5641
+ ...this.options
5610
5642
  }
5611
5643
  );
5612
5644
  };
@@ -5651,8 +5683,7 @@ AIExtension = __decorateClass([
5651
5683
  openai: {
5652
5684
  models: ["gpt-3.5-turbo", "gpt-4"]
5653
5685
  }
5654
- },
5655
- generateText: async () => ""
5686
+ }
5656
5687
  },
5657
5688
  staticKeys: [],
5658
5689
  handlerKeys: [],
@@ -6375,7 +6406,7 @@ var styledDarkTheme = {
6375
6406
  preBgColor: "#252525",
6376
6407
  // components
6377
6408
  contextMenuBgColor: "#1E1F20",
6378
- contextMenuBgColorHover: "#1552B3",
6409
+ contextMenuBgColorHover: "#2D3134",
6379
6410
  slashMenuBorderColor: "rgb(38 38 38 / 1)"
6380
6411
  };
6381
6412
 
@@ -6420,7 +6451,7 @@ var styledLightTheme = {
6420
6451
  preBgColor: "#e7e7e7",
6421
6452
  // components
6422
6453
  contextMenuBgColor: "#f6f7f9",
6423
- contextMenuBgColorHover: "#1552B3",
6454
+ contextMenuBgColorHover: "#E8E8EC",
6424
6455
  slashMenuBorderColor: "rgb(229 229 229 / 1)"
6425
6456
  };
6426
6457
 
@@ -19714,20 +19745,14 @@ import { useExtension, useRemirrorContext as useRemirrorContext2 } from "@remirr
19714
19745
  import { useCallback as useCallback3, useEffect as useEffect6, useMemo as useMemo2, useRef as useRef7, useState as useState8 } from "react";
19715
19746
  import { usePopper } from "react-popper";
19716
19747
 
19717
- // src/editor/theme/darken-colors.ts
19718
- import Color from "color";
19719
- var opposite = (color, amount) => {
19720
- if (Color(color).isDark()) {
19721
- return Color(color).lighten(amount).string();
19722
- } else {
19723
- return Color(color).darken(amount).string();
19724
- }
19725
- };
19726
-
19727
19748
  // src/editor/toolbar/SlashMenu/SlashMenuRoot.tsx
19728
19749
  import { memo as memo4, useCallback as useCallback2, useEffect as useEffect5, useMemo, useRef as useRef6, useState as useState7 } from "react";
19729
19750
  import styled10, { css as css5 } from "styled-components";
19730
19751
 
19752
+ // src/editor/theme/darken-colors.ts
19753
+ import Color from "color";
19754
+ var darken = (color, amount) => Color(color).darken(amount).string();
19755
+
19731
19756
  // src/editor/toolbar/SlashMenu/TablePanel.tsx
19732
19757
  import { forwardRef, useState as useState6, useImperativeHandle, memo as memo3 } from "react";
19733
19758
  import styled9 from "styled-components";
@@ -19998,11 +20023,6 @@ var SlashMenuRoot = memo4(
19998
20023
  ] });
19999
20024
  }
20000
20025
  );
20001
- var DividingLine = styled10.div`
20002
- flex: 1;
20003
- width: 1px;
20004
- background-color: ${(props) => props.theme.primaryFontColor};
20005
- `;
20006
20026
  var MenuPanel = styled10.div.attrs((p) => p)`
20007
20027
  display: flex;
20008
20028
  min-width: 130px;
@@ -20010,7 +20030,7 @@ var MenuPanel = styled10.div.attrs((p) => p)`
20010
20030
  overscroll-behavior: contain;
20011
20031
  border-radius: ${(props) => props.location === "left" ? `${props.theme.smallBorderRadius} 0 0
20012
20032
  ${props.theme.smallBorderRadius}` : `0 ${props.theme.smallBorderRadius} ${props.theme.smallBorderRadius} 0`};
20013
- background-color: ${(props) => props.active ? opposite(props.theme.contextMenuBgColor, 0.4) : props.theme.contextMenuBgColor};
20033
+ background-color: ${(props) => props.active ? darken(props.theme.contextMenuBgColorHover, 0.2) : props.theme.contextMenuBgColorHover};
20014
20034
  padding: ${(props) => props.theme.spaceXs};
20015
20035
  color: ${(props) => props.theme.primaryFontColor};
20016
20036
  font-size: ${(props) => props.theme.fontXs};
@@ -20029,14 +20049,12 @@ var MenuItem2 = styled10.li.attrs((props) => ({
20029
20049
 
20030
20050
  &:hover {
20031
20051
  background-color: ${(props) => props.theme.contextMenuBgColorHover};
20032
- color: hsl(204 20% 100%);
20033
20052
  }
20034
20053
 
20035
20054
  ${(p) => {
20036
20055
  if (p.selected) {
20037
20056
  return css5`
20038
20057
  background-color: ${(props) => props.theme.contextMenuBgColorHover};
20039
- color: hsl(204 20% 100%);
20040
20058
  `;
20041
20059
  }
20042
20060
  }}