tinacms 0.0.0-d80714b-20241205222511 → 0.0.0-db8aa8e-20250228034006

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.
@@ -25,22 +25,35 @@ const NodeCache = async (dir) => {
25
25
  return createHash("sha256").update(input).digest("hex");
26
26
  },
27
27
  get: async (key) => {
28
+ let readValue;
29
+ const cacheFilename = `${cacheDir}/${key}`;
28
30
  try {
29
- const data = await fs.promises.readFile(`${cacheDir}/${key}`, "utf-8");
30
- return JSON.parse(data);
31
+ const data = await fs.promises.readFile(cacheFilename, "utf-8");
32
+ readValue = JSON.parse(data);
31
33
  } catch (e) {
32
- if (e.code === "ENOENT") {
33
- return void 0;
34
+ if (e.code !== "ENOENT") {
35
+ console.error(
36
+ `Failed to read cache file to ${cacheFilename}: ${e.message}`
37
+ );
34
38
  }
35
- throw e;
36
39
  }
40
+ return readValue;
37
41
  },
38
42
  set: async (key, value) => {
39
- await fs.promises.writeFile(
40
- `${cacheDir}/${key}`,
41
- JSON.stringify(value),
42
- "utf-8"
43
- );
43
+ const cacheFilename = `${cacheDir}/${key}`;
44
+ try {
45
+ await fs.promises.writeFile(cacheFilename, JSON.stringify(value), {
46
+ encoding: "utf-8",
47
+ flag: "wx"
48
+ // Don't overwrite existing caches
49
+ });
50
+ } catch (e) {
51
+ if (e.code !== "EEXIST") {
52
+ console.error(
53
+ `Failed to write cache file to ${cacheFilename}: ${e.message}`
54
+ );
55
+ }
56
+ }
44
57
  }
45
58
  };
46
59
  };
package/dist/react.d.ts CHANGED
@@ -2,6 +2,7 @@ export declare function useTina<T extends object>(props: {
2
2
  query: string;
3
3
  variables: object;
4
4
  data: T;
5
+ experimental___selectFormByFormId?: () => string | false | undefined;
5
6
  }): {
6
7
  data: T;
7
8
  isClient: boolean;
package/dist/react.js CHANGED
@@ -100,7 +100,16 @@
100
100
  }
101
101
  }, [quickEditEnabled, isInTinaIframe]);
102
102
  React.useEffect(() => {
103
- parent.postMessage({ type: "open", ...props, id }, window.location.origin);
103
+ if (props == null ? void 0 : props.experimental___selectFormByFormId) {
104
+ parent.postMessage({
105
+ type: "user-select-form",
106
+ formId: props.experimental___selectFormByFormId()
107
+ });
108
+ }
109
+ }, [id]);
110
+ React.useEffect(() => {
111
+ const { experimental___selectFormByFormId, ...rest } = props;
112
+ parent.postMessage({ type: "open", ...rest, id }, window.location.origin);
104
113
  window.addEventListener("message", (event) => {
105
114
  if (event.data.type === "quickEditEnabled") {
106
115
  setQuickEditEnabled(event.data.value);
package/dist/react.mjs CHANGED
@@ -97,7 +97,16 @@ function useTina(props) {
97
97
  }
98
98
  }, [quickEditEnabled, isInTinaIframe]);
99
99
  React.useEffect(() => {
100
- parent.postMessage({ type: "open", ...props, id }, window.location.origin);
100
+ if (props == null ? void 0 : props.experimental___selectFormByFormId) {
101
+ parent.postMessage({
102
+ type: "user-select-form",
103
+ formId: props.experimental___selectFormByFormId()
104
+ });
105
+ }
106
+ }, [id]);
107
+ React.useEffect(() => {
108
+ const { experimental___selectFormByFormId, ...rest } = props;
109
+ parent.postMessage({ type: "open", ...rest, id }, window.location.origin);
101
110
  window.addEventListener("message", (event) => {
102
111
  if (event.data.type === "quickEditEnabled") {
103
112
  setQuickEditEnabled(event.data.value);
@@ -7,5 +7,5 @@ interface ReferenceSelectProps {
7
7
  input: any;
8
8
  field: ReferenceFieldProps & Field;
9
9
  }
10
- declare const ComboboxDemo: React.FC<ReferenceSelectProps>;
11
- export default ComboboxDemo;
10
+ declare const Combobox: React.FC<ReferenceSelectProps>;
11
+ export default Combobox;
@@ -2,16 +2,18 @@ import React from 'react';
2
2
  import { type InputFieldType } from '../wrap-field-with-meta';
3
3
  import type { MdxTemplate } from './plate/types';
4
4
  import type { InputProps } from '../../../fields/components';
5
- import type { ToolbarOverrideType } from './plate/toolbar/toolbar-overrides';
5
+ import type { ToolbarOverrides, ToolbarOverrideType } from './plate/toolbar/toolbar-overrides';
6
6
  export type RichTextType = React.PropsWithChildren<InputFieldType<InputProps, {
7
7
  templates: MdxTemplate[];
8
8
  toolbarOverride?: ToolbarOverrideType[];
9
+ overrides?: ToolbarOverrides;
9
10
  }>>;
10
11
  export declare const MdxFieldPlugin: {
11
12
  name: string;
12
13
  Component: (props: InputFieldType<InputProps, {
13
14
  templates: MdxTemplate[];
14
15
  toolbarOverride?: ToolbarOverrideType[];
16
+ overrides?: ToolbarOverrides;
15
17
  }>) => React.JSX.Element;
16
18
  };
17
19
  export declare const MdxFieldPluginExtendible: {
@@ -20,5 +22,6 @@ export declare const MdxFieldPluginExtendible: {
20
22
  Component: (props: InputFieldType<InputProps, {
21
23
  templates: MdxTemplate[];
22
24
  toolbarOverride?: ToolbarOverrideType[];
25
+ overrides?: ToolbarOverrides;
23
26
  }>) => React.JSX.Element;
24
27
  };
@@ -1,8 +1,5 @@
1
1
  import React from 'react';
2
- import { type ELEMENT_OL, ELEMENT_UL } from '@udecode/plate';
3
- export declare const IndentListToolbarButton: React.ForwardRefExoticComponent<{
4
- nodeType?: typeof ELEMENT_UL | typeof ELEMENT_OL;
5
- } & Omit<Omit<{
2
+ export declare const UnorderedListToolbarButton: React.ForwardRefExoticComponent<Omit<Omit<{
6
3
  tooltip?: React.ReactNode;
7
4
  tooltipContentProps?: Omit<React.ComponentPropsWithoutRef<React.ForwardRefExoticComponent<import("@radix-ui/react-tooltip").TooltipContentProps & React.RefAttributes<HTMLDivElement>>>, "children">;
8
5
  tooltipProps?: Omit<React.ComponentPropsWithoutRef<React.FC<import("@radix-ui/react-tooltip").TooltipProps>>, "children">;
@@ -16,4 +13,19 @@ export declare const IndentListToolbarButton: React.ForwardRefExoticComponent<{
16
13
  } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref">, "value" | "asChild"> & import("class-variance-authority").VariantProps<(props?: {
17
14
  size?: "default" | "sm" | "lg";
18
15
  variant?: "default" | "outline";
19
- } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref">, "nodeType"> & React.RefAttributes<HTMLButtonElement>>;
16
+ } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref">, never> & React.RefAttributes<HTMLButtonElement>>;
17
+ export declare const OrderedListToolbarButton: React.ForwardRefExoticComponent<Omit<Omit<{
18
+ tooltip?: React.ReactNode;
19
+ tooltipContentProps?: Omit<React.ComponentPropsWithoutRef<React.ForwardRefExoticComponent<import("@radix-ui/react-tooltip").TooltipContentProps & React.RefAttributes<HTMLDivElement>>>, "children">;
20
+ tooltipProps?: Omit<React.ComponentPropsWithoutRef<React.FC<import("@radix-ui/react-tooltip").TooltipProps>>, "children">;
21
+ } & Omit<{
22
+ isDropdown?: boolean;
23
+ pressed?: boolean;
24
+ showArrow?: boolean;
25
+ } & Omit<Omit<Omit<import("@radix-ui/react-toolbar").ToolbarToggleItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & import("class-variance-authority").VariantProps<(props?: {
26
+ size?: "default" | "sm" | "lg";
27
+ variant?: "default" | "outline";
28
+ } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref">, "value" | "asChild"> & import("class-variance-authority").VariantProps<(props?: {
29
+ size?: "default" | "sm" | "lg";
30
+ variant?: "default" | "outline";
31
+ } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref">, never> & React.RefAttributes<HTMLButtonElement>>;
@@ -1,19 +1,5 @@
1
1
  import React from 'react';
2
- export declare const MarkToolbarButton: React.ForwardRefExoticComponent<{
3
- clear?: string | string[];
4
- nodeType: string;
5
- } & Omit<Omit<{
6
- tooltip?: React.ReactNode;
7
- tooltipContentProps?: Omit<React.ComponentPropsWithoutRef<React.ForwardRefExoticComponent<import("@radix-ui/react-tooltip").TooltipContentProps & React.RefAttributes<HTMLDivElement>>>, "children">;
8
- tooltipProps?: Omit<React.ComponentPropsWithoutRef<React.FC<import("@radix-ui/react-tooltip").TooltipProps>>, "children">;
9
- } & Omit<{
10
- isDropdown?: boolean;
11
- pressed?: boolean;
12
- showArrow?: boolean;
13
- } & Omit<Omit<Omit<import("@radix-ui/react-toolbar").ToolbarToggleItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & import("class-variance-authority").VariantProps<(props?: {
14
- size?: "default" | "sm" | "lg";
15
- variant?: "default" | "outline";
16
- } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref">, "value" | "asChild"> & import("class-variance-authority").VariantProps<(props?: {
17
- size?: "default" | "sm" | "lg";
18
- variant?: "default" | "outline";
19
- } & import("class-variance-authority/dist/types").ClassProp) => string> & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>, "ref">, "clear" | "nodeType"> & React.RefAttributes<HTMLButtonElement>>;
2
+ export declare const BoldToolbarButton: () => React.JSX.Element;
3
+ export declare const StrikethroughToolbarButton: () => React.JSX.Element;
4
+ export declare const ItalicToolbarButton: () => React.JSX.Element;
5
+ export declare const CodeToolbarButton: () => React.JSX.Element;
@@ -1,3 +1,3 @@
1
1
  import React from 'react';
2
2
  import type { RichTextType } from '..';
3
- export declare const RichEditor: (props: RichTextType) => React.JSX.Element;
3
+ export declare const RichEditor: ({ input, tinaForm, field }: RichTextType) => React.JSX.Element;
@@ -189,17 +189,12 @@ export declare const Components: () => {
189
189
  } & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<any>, "ref"> & {
190
190
  ref?: React.Ref<any>;
191
191
  } & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<any>>;
192
- strikethrough: React.ForwardRefExoticComponent<Omit<{
193
- leafToAttributes?: (leaf: import("@udecode/plate-common").TText) => any;
194
- } & import("@udecode/plate-common").PlateRenderNodeProps<import("@udecode/plate-common").Value, import("@udecode/plate-common").PlateEditor<import("@udecode/plate-common").Value>> & Omit<import("slate-react").RenderLeafProps, "text" | "leaf"> & {
195
- leaf: import("@udecode/plate-common").TText;
196
- text: import("@udecode/plate-common").TText;
197
- } & Omit<{
198
- as?: React.ElementType<any, keyof React.JSX.IntrinsicElements> | undefined;
199
- asChild?: boolean | undefined;
200
- } & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & React.RefAttributes<any>, "ref"> & {
201
- ref?: React.Ref<any>;
202
- } & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<any>>;
192
+ strikethrough: ({ editor, leaf, text, ...props }: {
193
+ [x: string]: any;
194
+ editor: any;
195
+ leaf: any;
196
+ text: any;
197
+ }) => React.JSX.Element;
203
198
  italic: React.ForwardRefExoticComponent<Omit<{
204
199
  leafToAttributes?: (leaf: import("@udecode/plate-common").TText) => any;
205
200
  } & import("@udecode/plate-common").PlateRenderNodeProps<import("@udecode/plate-common").Value, import("@udecode/plate-common").PlateEditor<import("@udecode/plate-common").Value>> & Omit<import("slate-react").RenderLeafProps, "text" | "leaf"> & {
@@ -1,4 +1,4 @@
1
- export type ToolbarOverrideType = 'heading' | 'link' | 'image' | 'quote' | 'ul' | 'ol' | 'code' | 'codeBlock' | 'bold' | 'italic' | 'mermaid' | 'raw' | 'embed' | 'table';
1
+ export type ToolbarOverrideType = 'heading' | 'link' | 'image' | 'quote' | 'ul' | 'ol' | 'code' | 'codeBlock' | 'bold' | 'strikethrough' | 'italic' | 'mermaid' | 'raw' | 'embed' | 'table';
2
2
  export declare const STANDARD_ICON_WIDTH = 32;
3
3
  export declare const HEADING_ICON_WITH_TEXT = 127;
4
4
  export declare const HEADING_ICON_ONLY = 58;
@@ -6,3 +6,7 @@ export declare const EMBED_ICON_WIDTH = 78;
6
6
  export declare const CONTAINER_MD_BREAKPOINT = 448;
7
7
  export declare const FLOAT_BUTTON_WIDTH = 25;
8
8
  export declare const HEADING_LABEL = "Headings";
9
+ export type ToolbarOverrides = {
10
+ toolbar?: ToolbarOverrideType[];
11
+ showFloatingToolbar?: boolean;
12
+ };
@@ -2,11 +2,11 @@ import React from 'react';
2
2
  import { type ReactNode } from 'react';
3
3
  import type { Form } from '../../../../../forms';
4
4
  import type { MdxTemplate } from '../types';
5
- import type { ToolbarOverrideType } from './toolbar-overrides';
5
+ import type { ToolbarOverrides, ToolbarOverrideType } from './toolbar-overrides';
6
6
  interface ToolbarContextProps {
7
7
  tinaForm: Form;
8
8
  templates: MdxTemplate[];
9
- overrides: ToolbarOverrideType[];
9
+ overrides: ToolbarOverrideType[] | ToolbarOverrides;
10
10
  }
11
11
  interface ToolbarProviderProps extends ToolbarContextProps {
12
12
  children: ReactNode;
@@ -1,3 +1,5 @@
1
+ import AsyncLock from 'async-lock';
2
+ import type { GraphQLError } from 'graphql';
1
3
  import type { Config } from '@tinacms/schema-tools';
2
4
  import type { Cache } from '../cache/index';
3
5
  export declare const TINA_HOST = "content.tinajs.io";
@@ -25,12 +27,17 @@ export declare class TinaClient<GenQueries> {
25
27
  queries: GenQueries;
26
28
  errorPolicy: Config['client']['errorPolicy'];
27
29
  initialized: boolean;
30
+ cacheLock: AsyncLock | undefined;
28
31
  cacheDir: string;
29
32
  cache: Cache;
30
33
  constructor({ token, url, queries, errorPolicy, cacheDir, }: TinaClientArgs<GenQueries>);
31
34
  init(): Promise<void>;
32
35
  request<DataType extends Record<string, any> = any>({ errorPolicy, ...args }: TinaClientRequestArgs, options: {
33
36
  fetchOptions?: Parameters<typeof fetch>[1];
34
- }): Promise<any>;
37
+ }): Promise<{
38
+ data: DataType;
39
+ errors: GraphQLError[] | null;
40
+ query: string;
41
+ }>;
35
42
  }
36
43
  export declare function createClient<GenQueries>(args: TinaClientArgs<GenQueries>): TinaClient<GenQueries>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tinacms",
3
- "version": "0.0.0-d80714b-20241205222511",
3
+ "version": "0.0.0-db8aa8e-20250228034006",
4
4
  "main": "dist/index.js",
5
5
  "module": "./dist/index.mjs",
6
6
  "exports": {
@@ -60,21 +60,21 @@
60
60
  "typings": "dist/index.d.ts",
61
61
  "license": "Apache-2.0",
62
62
  "dependencies": {
63
- "@ariakit/react": "^0.4.13",
64
- "@floating-ui/dom": "^1.6.12",
63
+ "@ariakit/react": "^0.4.15",
64
+ "@floating-ui/dom": "^1.6.13",
65
65
  "@floating-ui/react-dom": "^2.1.2",
66
- "@graphql-inspector/core": "^6.2.0",
66
+ "@graphql-inspector/core": "^6.2.1",
67
67
  "@headlessui/react": "2.1.8",
68
68
  "@heroicons/react": "^1.0.6",
69
69
  "@monaco-editor/react": "4.4.5",
70
- "@radix-ui/react-checkbox": "^1.1.2",
71
- "@radix-ui/react-dialog": "^1.1.2",
72
- "@radix-ui/react-dropdown-menu": "^2.1.2",
73
- "@radix-ui/react-popover": "^1.1.2",
74
- "@radix-ui/react-separator": "^1.1.0",
75
- "@radix-ui/react-slot": "^1.1.0",
76
- "@radix-ui/react-toolbar": "^1.1.0",
77
- "@radix-ui/react-tooltip": "^1.1.4",
70
+ "@radix-ui/react-checkbox": "^1.1.4",
71
+ "@radix-ui/react-dialog": "^1.1.6",
72
+ "@radix-ui/react-dropdown-menu": "^2.1.6",
73
+ "@radix-ui/react-popover": "^1.1.6",
74
+ "@radix-ui/react-separator": "^1.1.2",
75
+ "@radix-ui/react-slot": "^1.1.2",
76
+ "@radix-ui/react-toolbar": "^1.1.2",
77
+ "@radix-ui/react-tooltip": "^1.1.8",
78
78
  "@react-hook/window-size": "^3.1.1",
79
79
  "@udecode/cn": "^33.0.0",
80
80
  "@udecode/plate": "^36.5.9",
@@ -92,13 +92,13 @@
92
92
  "@udecode/plate-resizable": "36.0.0",
93
93
  "@udecode/plate-slash-command": "^36.0.0",
94
94
  "@udecode/plate-table": "36.5.8",
95
- "class-variance-authority": "^0.7.0",
95
+ "async-lock": "^1.4.1",
96
+ "class-variance-authority": "^0.7.1",
96
97
  "clsx": "^2.1.1",
97
98
  "cmdk": "^1.0.4",
98
99
  "color-string": "^1.9.1",
99
100
  "crypto-js": "^4.2.0",
100
101
  "date-fns": "2.30.0",
101
- "fetch-ponyfill": "^7.1.0",
102
102
  "final-form": "4.20.10",
103
103
  "final-form-arrays": "^3.1.0",
104
104
  "final-form-set-field-data": "^1.0.2",
@@ -111,45 +111,47 @@
111
111
  "mermaid": "9.3.0",
112
112
  "moment": "2.29.4",
113
113
  "monaco-editor": "0.31.0",
114
- "prism-react-renderer": "^2.4.0",
114
+ "prism-react-renderer": "^2.4.1",
115
115
  "prop-types": "15.7.2",
116
116
  "react-beautiful-dnd": "^13.1.1",
117
117
  "react-color": "^2.19.3",
118
- "react-datetime": "^3.2.0",
118
+ "react-datetime": "^3.3.1",
119
119
  "react-dropzone": "14.2.3",
120
120
  "react-final-form": "^6.5.9",
121
- "react-icons": "^5.3.0",
122
- "react-onclickoutside": "^6.13.1",
121
+ "react-icons": "^5.4.0",
123
122
  "react-router-dom": "6.3.0",
123
+ "react-use": "^17.6.0",
124
124
  "slate": "^0.103.0",
125
125
  "slate-history": "^0.100.0",
126
126
  "slate-hyperscript": "^0.100.0",
127
127
  "slate-react": "^0.107.1",
128
- "tailwind-merge": "^2.5.4",
128
+ "tailwind-merge": "^2.6.0",
129
129
  "webfontloader": "1.6.28",
130
- "yup": "^1.4.0",
131
- "zod": "^3.23.8",
132
- "@tinacms/mdx": "1.5.2",
133
- "@tinacms/search": "1.0.35",
134
- "@tinacms/schema-tools": "1.6.8"
130
+ "yup": "^1.6.1",
131
+ "zod": "^3.24.2",
132
+ "react": "^18.3.1",
133
+ "react-dom": "^18.3.1",
134
+ "@tinacms/mdx": "0.0.0-db8aa8e-20250228034006",
135
+ "@tinacms/schema-tools": "0.0.0-db8aa8e-20250228034006",
136
+ "@tinacms/search": "0.0.0-db8aa8e-20250228034006"
135
137
  },
136
138
  "devDependencies": {
137
- "@graphql-tools/utils": "^10.5.6",
139
+ "@graphql-tools/utils": "^10.8.1",
138
140
  "@testing-library/dom": "^10.4.0",
139
141
  "@testing-library/jest-dom": "^6.6.3",
140
- "@testing-library/react": "^16.0.1",
141
- "@testing-library/user-event": "^14.5.2",
142
+ "@testing-library/react": "^16.2.0",
143
+ "@testing-library/user-event": "^14.6.1",
142
144
  "@types/atob": "^2.1.4",
143
145
  "@types/codemirror": "^5.60.15",
144
146
  "@types/color-string": "^1.5.5",
145
147
  "@types/lodash.debounce": "^4.0.9",
146
148
  "@types/lodash.get": "^4.4.9",
147
- "@types/node": "^22.9.0",
148
- "@types/prop-types": "^15.7.13",
149
- "@types/react": "^18.3.12",
149
+ "@types/node": "^22.13.1",
150
+ "@types/prop-types": "^15.7.14",
151
+ "@types/react": "^18.3.18",
150
152
  "@types/react-beautiful-dnd": "^13.1.8",
151
- "@types/react-color": "^3.0.12",
152
- "@types/react-dom": "^18.3.1",
153
+ "@types/react-color": "^3.0.13",
154
+ "@types/react-dom": "^18.3.5",
153
155
  "@types/yup": "^0.32.0",
154
156
  "happy-dom": "15.10.2",
155
157
  "identity-obj-proxy": "^3.0.0",
@@ -161,10 +163,10 @@
161
163
  "react-is": "^18.3.1",
162
164
  "tsc-alias": "^1.8.10",
163
165
  "tslib": "^2.8.1",
164
- "typescript": "^5.6.3",
165
- "vite": "^5.4.11",
166
- "vitest": "^2.1.5",
167
- "@tinacms/scripts": "1.3.1"
166
+ "typescript": "^5.7.3",
167
+ "vite": "^5.4.14",
168
+ "vitest": "^2.1.9",
169
+ "@tinacms/scripts": "0.0.0-db8aa8e-20250228034006"
168
170
  },
169
171
  "peerDependencies": {
170
172
  "react": ">=16.14.0",