@meowdown/react 0.34.0 → 0.35.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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { clsx } from "clsx/lite";
2
2
  import { Fragment, createElement, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from "react";
3
- import { codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineMarkMode, defineMarkdownCopy, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSpellCheckPlugin, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getMarkBuilders, getPendingReplacement, getSelectedText, getVirtualElementFromRange, inlineTextToMarkChunks, isSelectionInTableCell, listenForTweetHeight, markdownToDoc, matchEmbed } from "@meowdown/core";
3
+ import { codeBlockLanguages, defaultResolveImageUrl, defineBulletAfterHeading, defineEditorExtension, defineEmbedPaste, defineExitBoundaryHandler, defineFileClickHandler, defineFilePaste, defineFileView, defineFollowLinkHandler, defineHTMLPaste, defineImage, defineImageClickHandler, defineLinkClickHandler, defineLinkEditKeymap, defineLinkHoverHandler, defineMarkdownCopy, definePendingReplacementHandler, definePlaceholder, defineReadonly, defineSpellCheckPlugin, defineTagClickHandler, defineWikilinkClickHandler, defineWikilinkTrigger, docToMarkdown, getCodeTokens, getMarkBuilders, getPendingReplacement, getSelectedText, getTableColumnAlign, getVirtualElementFromRange, inlineTextToMarkChunks, isSelectionInTableCell, listenForTweetHeight, markdownToDoc, matchEmbed } from "@meowdown/core";
4
4
  import { clamp } from "@ocavue/utils";
5
5
  import { canUseRegexLookbehind, createEditor, defineDocChangeHandler, defineUpdateHandler, isTextSelection, union } from "@prosekit/core";
6
6
  import { Selection, TextSelection } from "@prosekit/pm/state";
@@ -217,9 +217,10 @@ function DropIndicator$1() {
217
217
  //#endregion
218
218
  //#region src/components/editor-extensions.tsx
219
219
  function EditorExtensions({ markMode, onDocChange, onWikilinkClick, onLinkClick, onTagClick, onExitBoundary, resolveImageUrl, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, bulletAfterHeading, placeholder, readOnly, wikilinkEnabled, spellCheck }) {
220
- useExtension$1(useMemo(() => {
221
- return defineMarkMode(markMode);
222
- }, [markMode]));
220
+ const editor = useEditor$1();
221
+ useEffect(() => {
222
+ editor.commands.setMarkMode(markMode);
223
+ }, [editor, markMode]);
223
224
  useExtension$1(useMemo(() => {
224
225
  return readOnly ? defineReadonly() : null;
225
226
  }, [readOnly]));
@@ -1070,7 +1071,13 @@ var table_handle_module_default = {
1070
1071
  //#region src/components/table-handle.tsx
1071
1072
  function getTableHandleState(editor) {
1072
1073
  const commands = editor.commands;
1074
+ const columnAlign = getTableColumnAlign(editor.state);
1073
1075
  return {
1076
+ columnAlign,
1077
+ setTableColumnAlign: {
1078
+ canExec: commands.setTableColumnAlign.canExec("left"),
1079
+ command: (align) => commands.setTableColumnAlign(columnAlign === align ? null : align)
1080
+ },
1074
1081
  addTableColumnBefore: {
1075
1082
  canExec: commands.addTableColumnBefore.canExec(),
1076
1083
  command: () => commands.addTableColumnBefore()
@@ -1105,6 +1112,21 @@ function getTableHandleState(editor) {
1105
1112
  }
1106
1113
  };
1107
1114
  }
1115
+ const COLUMN_ALIGN_LABELS = {
1116
+ left: "Align Left",
1117
+ center: "Align Center",
1118
+ right: "Align Right"
1119
+ };
1120
+ function ColumnAlignMenuItem({ align, columnAlign, onSelect }) {
1121
+ const active = columnAlign === align;
1122
+ return /* @__PURE__ */ jsxs(MenuItem, {
1123
+ className: table_handle_module_default.MenuItem,
1124
+ "data-testid": `table-align-${align}`,
1125
+ "data-active": active ? "" : void 0,
1126
+ onSelect,
1127
+ children: [/* @__PURE__ */ jsx("span", { children: COLUMN_ALIGN_LABELS[align] }), active && /* @__PURE__ */ jsx(CheckIcon, {})]
1128
+ });
1129
+ }
1108
1130
  function TableHandle() {
1109
1131
  const state = useEditorDerivedValue(getTableHandleState);
1110
1132
  return /* @__PURE__ */ jsxs(TableHandleRoot, { children: [
@@ -1136,6 +1158,23 @@ function TableHandle() {
1136
1158
  onSelect: state.addTableColumnAfter.command,
1137
1159
  children: /* @__PURE__ */ jsx("span", { children: "Insert Right" })
1138
1160
  }),
1161
+ state.setTableColumnAlign.canExec && /* @__PURE__ */ jsxs(Fragment$1, { children: [
1162
+ /* @__PURE__ */ jsx(ColumnAlignMenuItem, {
1163
+ align: "left",
1164
+ columnAlign: state.columnAlign,
1165
+ onSelect: () => state.setTableColumnAlign.command("left")
1166
+ }),
1167
+ /* @__PURE__ */ jsx(ColumnAlignMenuItem, {
1168
+ align: "center",
1169
+ columnAlign: state.columnAlign,
1170
+ onSelect: () => state.setTableColumnAlign.command("center")
1171
+ }),
1172
+ /* @__PURE__ */ jsx(ColumnAlignMenuItem, {
1173
+ align: "right",
1174
+ columnAlign: state.columnAlign,
1175
+ onSelect: () => state.setTableColumnAlign.command("right")
1176
+ })
1177
+ ] }),
1139
1178
  state.deleteCellSelection.canExec && /* @__PURE__ */ jsxs(MenuItem, {
1140
1179
  className: table_handle_module_default.MenuItem,
1141
1180
  "data-testid": "table-clear-column",
@@ -1366,7 +1405,10 @@ function resolveSelection(doc, selection) {
1366
1405
  }
1367
1406
  function ProseKitEditor({ markMode = "focus", initialMarkdown, onDocChange, onSlashMenuSearch, onTagSearch, onWikilinkSearch, onSelectionMenuSearch, selectionMenuAffordance = true, pendingReplacementActions, onPendingReplacementResolve, onWikilinkClick, onLinkClick, onLinkCopy, onTagClick, onExitBoundary, resolveImageUrl, resolveFileLink, resolveFileInfo, onFileClick, onFilePaste, onFileSaveError, onImageClick, embedPaste, bulletAfterHeading, frontmatter = false, blockHandle = true, placeholder, readOnly, spellCheck, timeFormat, editorClassName, ref, children }) {
1368
1407
  const [editor] = useState(() => {
1369
- const editor = createEditor({ extension: union(defineEditorExtension({ resolveFileLink }), defineCodeBlockView()) });
1408
+ const editor = createEditor({ extension: union(defineEditorExtension({
1409
+ resolveFileLink,
1410
+ markMode
1411
+ }), defineCodeBlockView()) });
1370
1412
  if (initialMarkdown) editor.setContent(markdownToDoc(initialMarkdown, {
1371
1413
  nodes: editor.nodes,
1372
1414
  frontmatter
package/dist/style.css CHANGED
@@ -740,6 +740,13 @@
740
740
  opacity: .8;
741
741
  font-size: .75rem;
742
742
  }
743
+
744
+ & svg {
745
+ width: 1rem;
746
+ height: 1rem;
747
+ color: var(--meowdown-muted);
748
+ display: block;
749
+ }
743
750
  }
744
751
  .meowdown {
745
752
  flex-direction: column;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@meowdown/react",
3
3
  "type": "module",
4
- "version": "0.34.0",
4
+ "version": "0.35.0",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -22,10 +22,10 @@
22
22
  "@ocavue/utils": "^1.7.0",
23
23
  "@prosekit/core": "^0.13.0-beta.5",
24
24
  "@prosekit/pm": "^0.1.19-beta.2",
25
- "@prosekit/react": "^0.8.0-beta.16",
25
+ "@prosekit/react": "^0.8.0-beta.17",
26
26
  "clsx": "^2.1.1",
27
27
  "lucide-react": "^1.21.0",
28
- "@meowdown/core": "0.34.0"
28
+ "@meowdown/core": "0.35.0"
29
29
  },
30
30
  "peerDependencies": {
31
31
  "react": "^19.0.0",