tinacms 1.5.21 → 1.5.22
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/client.js +14 -4
- package/dist/client.mjs +14 -4
- package/dist/dev-tools.js +48 -0
- package/dist/dev-tools.mjs +48 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +106 -26
- package/dist/index.mjs +106 -25
- package/dist/rich-text/index.d.ts +12 -0
- package/dist/rich-text/index.js +48 -0
- package/dist/rich-text/index.mjs +48 -0
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-link-plugin/index.d.ts +1 -1
- package/dist/unifiedClient/index.d.ts +8 -5
- package/package.json +4 -3
package/dist/client.js
CHANGED
|
@@ -7,12 +7,22 @@
|
|
|
7
7
|
const HeadersDefined = typeof Headers === "undefined" ? HeadersPonyfill : Headers;
|
|
8
8
|
const TINA_HOST = "content.tinajs.io";
|
|
9
9
|
class TinaClient {
|
|
10
|
-
constructor({
|
|
10
|
+
constructor({
|
|
11
|
+
token,
|
|
12
|
+
url,
|
|
13
|
+
queries,
|
|
14
|
+
errorPolicy
|
|
15
|
+
}) {
|
|
11
16
|
this.apiUrl = url;
|
|
12
17
|
this.readonlyToken = token == null ? void 0 : token.trim();
|
|
13
18
|
this.queries = queries(this);
|
|
19
|
+
this.errorPolicy = errorPolicy || "throw";
|
|
14
20
|
}
|
|
15
|
-
async request(
|
|
21
|
+
async request({
|
|
22
|
+
errorPolicy,
|
|
23
|
+
...args
|
|
24
|
+
}) {
|
|
25
|
+
const errorPolicyDefined = errorPolicy || this.errorPolicy;
|
|
16
26
|
const headers = new HeadersDefined();
|
|
17
27
|
if (this.readonlyToken) {
|
|
18
28
|
headers.append("X-API-KEY", this.readonlyToken);
|
|
@@ -39,16 +49,16 @@
|
|
|
39
49
|
);
|
|
40
50
|
}
|
|
41
51
|
const json = await res.json();
|
|
42
|
-
if (json.errors) {
|
|
52
|
+
if (json.errors && errorPolicyDefined === "throw") {
|
|
43
53
|
throw new Error(
|
|
44
54
|
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
45
|
-
|
|
46
55
|
Errors:
|
|
47
56
|
${json.errors.map((error) => error.message).join("\n")}`
|
|
48
57
|
);
|
|
49
58
|
}
|
|
50
59
|
return {
|
|
51
60
|
data: json == null ? void 0 : json.data,
|
|
61
|
+
errors: (json == null ? void 0 : json.errors) || null,
|
|
52
62
|
query: args.query
|
|
53
63
|
};
|
|
54
64
|
}
|
package/dist/client.mjs
CHANGED
|
@@ -4,12 +4,22 @@ const fetchDefined = typeof fetch === "undefined" ? fetchPonyfillFN : fetch;
|
|
|
4
4
|
const HeadersDefined = typeof Headers === "undefined" ? HeadersPonyfill : Headers;
|
|
5
5
|
const TINA_HOST = "content.tinajs.io";
|
|
6
6
|
class TinaClient {
|
|
7
|
-
constructor({
|
|
7
|
+
constructor({
|
|
8
|
+
token,
|
|
9
|
+
url,
|
|
10
|
+
queries,
|
|
11
|
+
errorPolicy
|
|
12
|
+
}) {
|
|
8
13
|
this.apiUrl = url;
|
|
9
14
|
this.readonlyToken = token == null ? void 0 : token.trim();
|
|
10
15
|
this.queries = queries(this);
|
|
16
|
+
this.errorPolicy = errorPolicy || "throw";
|
|
11
17
|
}
|
|
12
|
-
async request(
|
|
18
|
+
async request({
|
|
19
|
+
errorPolicy,
|
|
20
|
+
...args
|
|
21
|
+
}) {
|
|
22
|
+
const errorPolicyDefined = errorPolicy || this.errorPolicy;
|
|
13
23
|
const headers = new HeadersDefined();
|
|
14
24
|
if (this.readonlyToken) {
|
|
15
25
|
headers.append("X-API-KEY", this.readonlyToken);
|
|
@@ -36,16 +46,16 @@ class TinaClient {
|
|
|
36
46
|
);
|
|
37
47
|
}
|
|
38
48
|
const json = await res.json();
|
|
39
|
-
if (json.errors) {
|
|
49
|
+
if (json.errors && errorPolicyDefined === "throw") {
|
|
40
50
|
throw new Error(
|
|
41
51
|
`Unable to fetch, please see our FAQ for more information: https://tina.io/docs/errors/faq/
|
|
42
|
-
|
|
43
52
|
Errors:
|
|
44
53
|
${json.errors.map((error) => error.message).join("\n")}`
|
|
45
54
|
);
|
|
46
55
|
}
|
|
47
56
|
return {
|
|
48
57
|
data: json == null ? void 0 : json.data,
|
|
58
|
+
errors: (json == null ? void 0 : json.errors) || null,
|
|
49
59
|
query: args.query
|
|
50
60
|
};
|
|
51
61
|
}
|
package/dist/dev-tools.js
CHANGED
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
return MNode;
|
|
73
73
|
};
|
|
74
74
|
const Node = ({ components, child }) => {
|
|
75
|
+
var _a, _b, _c, _d, _e;
|
|
75
76
|
const { children, ...props } = child;
|
|
76
77
|
switch (child.type) {
|
|
77
78
|
case "h1":
|
|
@@ -147,6 +148,53 @@
|
|
|
147
148
|
const props2 = child.props ? child.props : {};
|
|
148
149
|
return /* @__PURE__ */ React.createElement(Component, { ...props2 });
|
|
149
150
|
} else {
|
|
151
|
+
if (child.name === "table") {
|
|
152
|
+
const firstRowHeader = (_a = child.props) == null ? void 0 : _a.firstRowHeader;
|
|
153
|
+
const rows = (firstRowHeader ? (_b = child.props) == null ? void 0 : _b.tableRows.filter((_, i) => i !== 0) : (_c = child.props) == null ? void 0 : _c.tableRows) || [];
|
|
154
|
+
const header = (_e = (_d = child.props) == null ? void 0 : _d.tableRows) == null ? void 0 : _e.at(0);
|
|
155
|
+
const TableComponent = components["table"] || ((props2) => /* @__PURE__ */ React.createElement("table", { ...props2 }));
|
|
156
|
+
const TrComponent = components["tr"] || ((props2) => /* @__PURE__ */ React.createElement("tr", { ...props2 }));
|
|
157
|
+
const ThComponent = components["th"] || ((props2) => /* @__PURE__ */ React.createElement("th", { ...props2 }));
|
|
158
|
+
const TdComponent = components["td"] || ((props2) => /* @__PURE__ */ React.createElement("td", { ...props2 }));
|
|
159
|
+
return /* @__PURE__ */ React.createElement(TableComponent, null, firstRowHeader && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement(TrComponent, null, header.tableCells.map((c, i) => {
|
|
160
|
+
return /* @__PURE__ */ React.createElement(
|
|
161
|
+
TinaMarkdown,
|
|
162
|
+
{
|
|
163
|
+
key: i,
|
|
164
|
+
components: {
|
|
165
|
+
p: (props2) => {
|
|
166
|
+
if (ThComponent) {
|
|
167
|
+
return /* @__PURE__ */ React.createElement(ThComponent, { ...props2 });
|
|
168
|
+
} else {
|
|
169
|
+
return /* @__PURE__ */ React.createElement("th", { ...props2 });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
content: c.tableCell
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
}))), /* @__PURE__ */ React.createElement("tbody", null, rows.map((row, i) => {
|
|
177
|
+
var _a2;
|
|
178
|
+
return /* @__PURE__ */ React.createElement(TrComponent, { key: i }, (_a2 = row == null ? void 0 : row.tableCells) == null ? void 0 : _a2.map((c, i2) => {
|
|
179
|
+
return /* @__PURE__ */ React.createElement(
|
|
180
|
+
TinaMarkdown,
|
|
181
|
+
{
|
|
182
|
+
key: i2,
|
|
183
|
+
components: {
|
|
184
|
+
p: (props2) => {
|
|
185
|
+
if (TdComponent) {
|
|
186
|
+
return /* @__PURE__ */ React.createElement(TdComponent, { ...props2 });
|
|
187
|
+
} else {
|
|
188
|
+
return /* @__PURE__ */ React.createElement("td", { ...props2 });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
content: c.tableCell
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}));
|
|
196
|
+
})));
|
|
197
|
+
}
|
|
150
198
|
const ComponentMissing = components["component_missing"];
|
|
151
199
|
if (ComponentMissing) {
|
|
152
200
|
return /* @__PURE__ */ React.createElement(ComponentMissing, { name: child.name });
|
package/dist/dev-tools.mjs
CHANGED
|
@@ -69,6 +69,7 @@ const MemoNode = (props) => {
|
|
|
69
69
|
return MNode;
|
|
70
70
|
};
|
|
71
71
|
const Node = ({ components, child }) => {
|
|
72
|
+
var _a, _b, _c, _d, _e;
|
|
72
73
|
const { children, ...props } = child;
|
|
73
74
|
switch (child.type) {
|
|
74
75
|
case "h1":
|
|
@@ -144,6 +145,53 @@ const Node = ({ components, child }) => {
|
|
|
144
145
|
const props2 = child.props ? child.props : {};
|
|
145
146
|
return /* @__PURE__ */ React.createElement(Component, { ...props2 });
|
|
146
147
|
} else {
|
|
148
|
+
if (child.name === "table") {
|
|
149
|
+
const firstRowHeader = (_a = child.props) == null ? void 0 : _a.firstRowHeader;
|
|
150
|
+
const rows = (firstRowHeader ? (_b = child.props) == null ? void 0 : _b.tableRows.filter((_, i) => i !== 0) : (_c = child.props) == null ? void 0 : _c.tableRows) || [];
|
|
151
|
+
const header = (_e = (_d = child.props) == null ? void 0 : _d.tableRows) == null ? void 0 : _e.at(0);
|
|
152
|
+
const TableComponent = components["table"] || ((props2) => /* @__PURE__ */ React.createElement("table", { ...props2 }));
|
|
153
|
+
const TrComponent = components["tr"] || ((props2) => /* @__PURE__ */ React.createElement("tr", { ...props2 }));
|
|
154
|
+
const ThComponent = components["th"] || ((props2) => /* @__PURE__ */ React.createElement("th", { ...props2 }));
|
|
155
|
+
const TdComponent = components["td"] || ((props2) => /* @__PURE__ */ React.createElement("td", { ...props2 }));
|
|
156
|
+
return /* @__PURE__ */ React.createElement(TableComponent, null, firstRowHeader && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement(TrComponent, null, header.tableCells.map((c, i) => {
|
|
157
|
+
return /* @__PURE__ */ React.createElement(
|
|
158
|
+
TinaMarkdown,
|
|
159
|
+
{
|
|
160
|
+
key: i,
|
|
161
|
+
components: {
|
|
162
|
+
p: (props2) => {
|
|
163
|
+
if (ThComponent) {
|
|
164
|
+
return /* @__PURE__ */ React.createElement(ThComponent, { ...props2 });
|
|
165
|
+
} else {
|
|
166
|
+
return /* @__PURE__ */ React.createElement("th", { ...props2 });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
content: c.tableCell
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}))), /* @__PURE__ */ React.createElement("tbody", null, rows.map((row, i) => {
|
|
174
|
+
var _a2;
|
|
175
|
+
return /* @__PURE__ */ React.createElement(TrComponent, { key: i }, (_a2 = row == null ? void 0 : row.tableCells) == null ? void 0 : _a2.map((c, i2) => {
|
|
176
|
+
return /* @__PURE__ */ React.createElement(
|
|
177
|
+
TinaMarkdown,
|
|
178
|
+
{
|
|
179
|
+
key: i2,
|
|
180
|
+
components: {
|
|
181
|
+
p: (props2) => {
|
|
182
|
+
if (TdComponent) {
|
|
183
|
+
return /* @__PURE__ */ React.createElement(TdComponent, { ...props2 });
|
|
184
|
+
} else {
|
|
185
|
+
return /* @__PURE__ */ React.createElement("td", { ...props2 });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
content: c.tableCell
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
}));
|
|
193
|
+
})));
|
|
194
|
+
}
|
|
147
195
|
const ComponentMissing = components["component_missing"];
|
|
148
196
|
if (ComponentMissing) {
|
|
149
197
|
return /* @__PURE__ */ React.createElement(ComponentMissing, { name: child.name });
|
package/dist/index.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export type { TinaCMSProviderDefaultProps };
|
|
|
19
19
|
export default TinaCMSProvider2;
|
|
20
20
|
import { MediaStore, TinaCMS } from '@tinacms/toolkit';
|
|
21
21
|
import { formifyCallback } from './hooks/use-graphql-forms';
|
|
22
|
+
import { RichTextTemplate } from '@tinacms/schema-tools';
|
|
22
23
|
export { NAMER, resolveField } from '@tinacms/schema-tools';
|
|
23
24
|
import { TinaSchema, TinaField, Config, Schema, Collection, Template } from '@tinacms/schema-tools';
|
|
24
25
|
export type { Config, Schema, Collection, Template, TinaField, TinaSchema };
|
|
@@ -57,3 +58,7 @@ interface MediaStoreClass {
|
|
|
57
58
|
}
|
|
58
59
|
export declare const defineStaticConfig: (config: Config<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, MediaStoreClass, undefined>) => Config<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, MediaStoreClass, undefined>;
|
|
59
60
|
export declare const defineConfig: (config: Config<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, MediaStoreClass, undefined>) => Config<(cms: TinaCMS) => TinaCMS, formifyCallback, import("./hooks/use-content-creator").DocumentCreatorArgs, MediaStoreClass, undefined>;
|
|
61
|
+
/**
|
|
62
|
+
* Out-of-the-box template for rendering basic markdown tables
|
|
63
|
+
*/
|
|
64
|
+
export declare const tinaTableTemplate: RichTextTemplate;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(global, factory) {
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/plate-headless"), require("@monaco-editor/react"), require("slate-react"), require("@headlessui/react"), require("slate"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("@radix-ui/react-popover"), require("react-color"), require("color-string"), require("react-dropzone"), require("is-hotkey"), require("@floating-ui/dom"), require("moment"), require("date-fns"), require("@react-hook/window-size"), require("
|
|
3
|
-
})(this, function(exports2, zod, React, reactDom, plateHeadless, MonacoEditor, slateReact, react, slate, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, Popover$1, pkg$1, pkg, dropzone, isHotkey, dom, moment, dateFns, windowSize,
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/plate-headless"), require("@monaco-editor/react"), require("slate-react"), require("@headlessui/react"), require("slate"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("@radix-ui/react-popover"), require("react-color"), require("color-string"), require("react-dropzone"), require("@tinacms/sharedctx"), require("is-hotkey"), require("@floating-ui/dom"), require("moment"), require("date-fns"), require("@react-hook/window-size"), require("graphql"), require("graphql-tag"), require("@tinacms/schema-tools"), require("yup"), require("@graphql-inspector/core"), require("react-router-dom"), require("@tinacms/mdx")) : typeof define === "function" && define.amd ? define(["exports", "zod", "react", "react-dom", "@udecode/plate-headless", "@monaco-editor/react", "slate-react", "@headlessui/react", "slate", "final-form-arrays", "final-form-set-field-data", "final-form", "react-final-form", "prop-types", "react-beautiful-dnd", "@radix-ui/react-popover", "react-color", "color-string", "react-dropzone", "@tinacms/sharedctx", "is-hotkey", "@floating-ui/dom", "moment", "date-fns", "@react-hook/window-size", "graphql", "graphql-tag", "@tinacms/schema-tools", "yup", "@graphql-inspector/core", "react-router-dom", "@tinacms/mdx"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP));
|
|
3
|
+
})(this, function(exports2, zod, React, reactDom, plateHeadless, MonacoEditor, slateReact, react, slate, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, Popover$1, pkg$1, pkg, dropzone, sharedctx, isHotkey, dom, moment, dateFns, windowSize, graphql, gql$1, schemaTools, yup, core, reactRouterDom, mdx) {
|
|
4
4
|
"use strict";var __defProp = Object.defineProperty;
|
|
5
5
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
6
|
var __publicField = (obj, key, value) => {
|
|
@@ -11105,7 +11105,7 @@ var __publicField = (obj, key, value) => {
|
|
|
11105
11105
|
};
|
|
11106
11106
|
const NestedForm = (props) => {
|
|
11107
11107
|
const FormPortal = useFormPortal();
|
|
11108
|
-
const id = React.useMemo(() => uuid(), [props.id]);
|
|
11108
|
+
const id = React.useMemo(() => uuid(), [props.id, props.initialValues]);
|
|
11109
11109
|
const form = React.useMemo(() => {
|
|
11110
11110
|
return new Form({
|
|
11111
11111
|
...props,
|
|
@@ -11116,7 +11116,7 @@ var __publicField = (obj, key, value) => {
|
|
|
11116
11116
|
onSubmit: () => {
|
|
11117
11117
|
}
|
|
11118
11118
|
});
|
|
11119
|
-
}, [id]);
|
|
11119
|
+
}, [id, props.onChange]);
|
|
11120
11120
|
return /* @__PURE__ */ React.createElement(FormPortal, null, ({ zIndexShift }) => /* @__PURE__ */ React.createElement(GroupPanel, { isExpanded: true, style: { zIndex: zIndexShift + 1e3 } }, /* @__PURE__ */ React.createElement(PanelHeader$1, { onClick: props.onClose }, props.label), /* @__PURE__ */ React.createElement(FormBuilder, { form: { tinaForm: form }, hideFooter: true })));
|
|
11121
11121
|
};
|
|
11122
11122
|
const handleCloseBase = (editor, element) => {
|
|
@@ -11997,26 +11997,38 @@ var __publicField = (obj, key, value) => {
|
|
|
11997
11997
|
}
|
|
11998
11998
|
plateHeadless.wrapNodes(editor, baseLink, { split: true });
|
|
11999
11999
|
};
|
|
12000
|
+
const matchLink = (n) => !slate.Editor.isEditor(n) && slate.Element.isElement(n) && n.type === plateHeadless.ELEMENT_LINK;
|
|
12000
12001
|
const LinkForm = (props) => {
|
|
12002
|
+
const [initialValues, setInitialValues] = React.useState({ url: "", title: "" });
|
|
12003
|
+
const [formValues, setFormValues] = React.useState({});
|
|
12001
12004
|
const editor = plateHeadless.useEditorState();
|
|
12002
12005
|
const selection = React.useMemo(() => editor.selection, []);
|
|
12003
|
-
|
|
12006
|
+
React.useEffect(() => {
|
|
12007
|
+
const [link] = getLinks(editor);
|
|
12008
|
+
setInitialValues({
|
|
12009
|
+
url: link && link[0].url ? link[0].url : "",
|
|
12010
|
+
title: link && link[0].title ? link[0].title : ""
|
|
12011
|
+
});
|
|
12012
|
+
}, [editor, setInitialValues]);
|
|
12013
|
+
const handleUpdate = React.useCallback(() => {
|
|
12004
12014
|
const linksInSelection = plateHeadless.getNodeEntries(editor, {
|
|
12005
|
-
match:
|
|
12015
|
+
match: matchLink,
|
|
12006
12016
|
at: selection
|
|
12007
12017
|
});
|
|
12008
12018
|
if (linksInSelection) {
|
|
12009
12019
|
for (const [, location] of linksInSelection) {
|
|
12010
|
-
plateHeadless.setNodes(editor,
|
|
12011
|
-
match:
|
|
12012
|
-
return !slate.Editor.isEditor(n) && slate.Element.isElement(n) && n.type === plateHeadless.ELEMENT_LINK;
|
|
12013
|
-
},
|
|
12020
|
+
plateHeadless.setNodes(editor, formValues, {
|
|
12021
|
+
match: matchLink,
|
|
12014
12022
|
at: location
|
|
12015
12023
|
});
|
|
12016
12024
|
}
|
|
12017
12025
|
}
|
|
12018
|
-
|
|
12019
|
-
|
|
12026
|
+
props.onClose();
|
|
12027
|
+
}, [editor, formValues]);
|
|
12028
|
+
const UpdateLink = React.useCallback(
|
|
12029
|
+
() => /* @__PURE__ */ React.createElement(Button, { variant: "primary", onClick: handleUpdate }, "Update Link"),
|
|
12030
|
+
[handleUpdate]
|
|
12031
|
+
);
|
|
12020
12032
|
return /* @__PURE__ */ React.createElement(
|
|
12021
12033
|
NestedForm,
|
|
12022
12034
|
{
|
|
@@ -12024,32 +12036,35 @@ var __publicField = (obj, key, value) => {
|
|
|
12024
12036
|
label: "Link",
|
|
12025
12037
|
fields: [
|
|
12026
12038
|
{ label: "URL", name: "url", component: "text" },
|
|
12027
|
-
{ label: "Title", name: "title", component: "text" }
|
|
12039
|
+
{ label: "Title", name: "title", component: "text" },
|
|
12040
|
+
{ component: UpdateLink, name: "update" }
|
|
12028
12041
|
],
|
|
12029
|
-
initialValues
|
|
12030
|
-
|
|
12031
|
-
|
|
12032
|
-
|
|
12033
|
-
|
|
12034
|
-
|
|
12042
|
+
initialValues,
|
|
12043
|
+
onChange: (values) => setFormValues(values),
|
|
12044
|
+
onClose: () => {
|
|
12045
|
+
if (initialValues.title === "" && initialValues.url === "") {
|
|
12046
|
+
unwrapLink(editor, selection);
|
|
12047
|
+
}
|
|
12048
|
+
props.onClose();
|
|
12049
|
+
}
|
|
12035
12050
|
}
|
|
12036
12051
|
);
|
|
12037
12052
|
};
|
|
12038
|
-
const isLinkActive = (editor) => {
|
|
12039
|
-
const [link] = getLinks(editor);
|
|
12040
|
-
return !!link;
|
|
12041
|
-
};
|
|
12042
12053
|
const unwrapLink = (editor, selection) => {
|
|
12043
12054
|
plateHeadless.unwrapNodes(editor, {
|
|
12044
|
-
match:
|
|
12055
|
+
match: matchLink,
|
|
12045
12056
|
at: selection || void 0
|
|
12046
12057
|
});
|
|
12047
12058
|
};
|
|
12048
12059
|
const getLinks = (editor) => {
|
|
12049
12060
|
return plateHeadless.getNodeEntries(editor, {
|
|
12050
|
-
match:
|
|
12061
|
+
match: matchLink
|
|
12051
12062
|
});
|
|
12052
12063
|
};
|
|
12064
|
+
const isLinkActive = (editor) => {
|
|
12065
|
+
const [link] = getLinks(editor);
|
|
12066
|
+
return !!link;
|
|
12067
|
+
};
|
|
12053
12068
|
const ToolbarItem = ({
|
|
12054
12069
|
hidden,
|
|
12055
12070
|
label,
|
|
@@ -26220,7 +26235,7 @@ var __publicField = (obj, key, value) => {
|
|
|
26220
26235
|
data["_id"] = `${collection.name}:${relPath}`;
|
|
26221
26236
|
data["_relativePath"] = relPath;
|
|
26222
26237
|
}
|
|
26223
|
-
for (const f of
|
|
26238
|
+
for (const f of (field == null ? void 0 : field.fields) || collection.fields || []) {
|
|
26224
26239
|
if (!f.searchable) {
|
|
26225
26240
|
delete data[f.name];
|
|
26226
26241
|
continue;
|
|
@@ -30501,6 +30516,70 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
30501
30516
|
return config;
|
|
30502
30517
|
};
|
|
30503
30518
|
const defineConfig = defineStaticConfig;
|
|
30519
|
+
const tinaTableTemplate = {
|
|
30520
|
+
name: "table",
|
|
30521
|
+
label: "Table",
|
|
30522
|
+
fields: [
|
|
30523
|
+
{
|
|
30524
|
+
name: "firstRowHeader",
|
|
30525
|
+
label: "First row is a header",
|
|
30526
|
+
type: "boolean"
|
|
30527
|
+
},
|
|
30528
|
+
{
|
|
30529
|
+
name: "tableRows",
|
|
30530
|
+
label: "Rows",
|
|
30531
|
+
type: "object",
|
|
30532
|
+
list: true,
|
|
30533
|
+
ui: {
|
|
30534
|
+
itemProps: (value) => {
|
|
30535
|
+
if (value == null ? void 0 : value.tableCells) {
|
|
30536
|
+
if (Array.isArray(value.tableCells)) {
|
|
30537
|
+
return {
|
|
30538
|
+
label: value.tableCells.map((cellItem) => {
|
|
30539
|
+
var _a;
|
|
30540
|
+
return (_a = stringifyCell(cellItem.tableCell)) == null ? void 0 : _a.trim();
|
|
30541
|
+
}).join(" | ")
|
|
30542
|
+
};
|
|
30543
|
+
}
|
|
30544
|
+
}
|
|
30545
|
+
return { label: "Row" };
|
|
30546
|
+
}
|
|
30547
|
+
},
|
|
30548
|
+
fields: [
|
|
30549
|
+
{
|
|
30550
|
+
name: "tableCells",
|
|
30551
|
+
label: "Table Cells",
|
|
30552
|
+
list: true,
|
|
30553
|
+
type: "object",
|
|
30554
|
+
ui: {
|
|
30555
|
+
itemProps: (value) => {
|
|
30556
|
+
var _a;
|
|
30557
|
+
if (value) {
|
|
30558
|
+
if (value.tableCell) {
|
|
30559
|
+
return {
|
|
30560
|
+
label: (_a = stringifyCell(value.tableCell)) == null ? void 0 : _a.trim()
|
|
30561
|
+
};
|
|
30562
|
+
}
|
|
30563
|
+
}
|
|
30564
|
+
return { label: "Table Cell" };
|
|
30565
|
+
}
|
|
30566
|
+
},
|
|
30567
|
+
fields: [
|
|
30568
|
+
{
|
|
30569
|
+
label: "Table Cell",
|
|
30570
|
+
description: "Note: table cells do not support block-level elements like headers, code blocks, or lists. Any block-level items other than the first paragraph will be ignored.",
|
|
30571
|
+
name: "tableCell",
|
|
30572
|
+
type: "rich-text"
|
|
30573
|
+
}
|
|
30574
|
+
]
|
|
30575
|
+
}
|
|
30576
|
+
]
|
|
30577
|
+
}
|
|
30578
|
+
]
|
|
30579
|
+
};
|
|
30580
|
+
const stringifyCell = (cell) => {
|
|
30581
|
+
return mdx.stringifyMDX(cell, { name: "body", type: "rich-text" }, () => "");
|
|
30582
|
+
};
|
|
30504
30583
|
Object.defineProperty(exports2, "NAMER", {
|
|
30505
30584
|
enumerable: true,
|
|
30506
30585
|
get: () => schemaTools.NAMER
|
|
@@ -30713,6 +30792,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
30713
30792
|
exports2.selectFieldClasses = selectFieldClasses;
|
|
30714
30793
|
exports2.staticRequest = staticRequest;
|
|
30715
30794
|
exports2.textFieldClasses = textFieldClasses;
|
|
30795
|
+
exports2.tinaTableTemplate = tinaTableTemplate;
|
|
30716
30796
|
exports2.useBranchData = useBranchData;
|
|
30717
30797
|
exports2.useCMS = useCMS$1;
|
|
30718
30798
|
exports2.useDismissible = useDismissible;
|
package/dist/index.mjs
CHANGED
|
@@ -23,12 +23,12 @@ import * as Popover$1 from "@radix-ui/react-popover";
|
|
|
23
23
|
import * as pkg$1 from "react-color";
|
|
24
24
|
import * as pkg from "color-string";
|
|
25
25
|
import * as dropzone from "react-dropzone";
|
|
26
|
+
import { EditContext, useEditState, setEditing } from "@tinacms/sharedctx";
|
|
26
27
|
import { isHotkey } from "is-hotkey";
|
|
27
28
|
import { computePosition, flip, shift } from "@floating-ui/dom";
|
|
28
29
|
import moment from "moment";
|
|
29
30
|
import { formatDistanceToNow } from "date-fns";
|
|
30
31
|
import { useWindowWidth } from "@react-hook/window-size";
|
|
31
|
-
import { EditContext, useEditState, setEditing } from "@tinacms/sharedctx";
|
|
32
32
|
import { getIntrospectionQuery, buildClientSchema, print, parse as parse$3, buildSchema } from "graphql";
|
|
33
33
|
import gql$1 from "graphql-tag";
|
|
34
34
|
import { TinaSchema, addNamespaceToSchema, parseURL, resolveForm, normalizePath, validateSchema } from "@tinacms/schema-tools";
|
|
@@ -36,6 +36,7 @@ import { NAMER, resolveField } from "@tinacms/schema-tools";
|
|
|
36
36
|
import * as yup from "yup";
|
|
37
37
|
import { diff } from "@graphql-inspector/core";
|
|
38
38
|
import { NavLink, useSearchParams, useNavigate, useLocation, useParams, Link, HashRouter, Routes, Route } from "react-router-dom";
|
|
39
|
+
import { stringifyMDX } from "@tinacms/mdx";
|
|
39
40
|
function popupWindow(url, title, window2, w, h) {
|
|
40
41
|
const y = window2.top.outerHeight / 2 + window2.top.screenY - h / 2;
|
|
41
42
|
const x = window2.top.outerWidth / 2 + window2.top.screenX - w / 2;
|
|
@@ -11111,7 +11112,7 @@ const PrefixedTextField = ({ prefix = "tina/", ...props }) => {
|
|
|
11111
11112
|
};
|
|
11112
11113
|
const NestedForm = (props) => {
|
|
11113
11114
|
const FormPortal = useFormPortal();
|
|
11114
|
-
const id = React__default.useMemo(() => uuid(), [props.id]);
|
|
11115
|
+
const id = React__default.useMemo(() => uuid(), [props.id, props.initialValues]);
|
|
11115
11116
|
const form = React__default.useMemo(() => {
|
|
11116
11117
|
return new Form({
|
|
11117
11118
|
...props,
|
|
@@ -11122,7 +11123,7 @@ const NestedForm = (props) => {
|
|
|
11122
11123
|
onSubmit: () => {
|
|
11123
11124
|
}
|
|
11124
11125
|
});
|
|
11125
|
-
}, [id]);
|
|
11126
|
+
}, [id, props.onChange]);
|
|
11126
11127
|
return /* @__PURE__ */ React__default.createElement(FormPortal, null, ({ zIndexShift }) => /* @__PURE__ */ React__default.createElement(GroupPanel, { isExpanded: true, style: { zIndex: zIndexShift + 1e3 } }, /* @__PURE__ */ React__default.createElement(PanelHeader$1, { onClick: props.onClose }, props.label), /* @__PURE__ */ React__default.createElement(FormBuilder, { form: { tinaForm: form }, hideFooter: true })));
|
|
11127
11128
|
};
|
|
11128
11129
|
const handleCloseBase = (editor, element) => {
|
|
@@ -12003,26 +12004,38 @@ const wrapOrRewrapLink = (editor) => {
|
|
|
12003
12004
|
}
|
|
12004
12005
|
wrapNodes(editor, baseLink, { split: true });
|
|
12005
12006
|
};
|
|
12007
|
+
const matchLink = (n) => !Editor.isEditor(n) && Element.isElement(n) && n.type === ELEMENT_LINK;
|
|
12006
12008
|
const LinkForm = (props) => {
|
|
12009
|
+
const [initialValues, setInitialValues] = React__default.useState({ url: "", title: "" });
|
|
12010
|
+
const [formValues, setFormValues] = React__default.useState({});
|
|
12007
12011
|
const editor = useEditorState();
|
|
12008
12012
|
const selection = React__default.useMemo(() => editor.selection, []);
|
|
12009
|
-
|
|
12013
|
+
useEffect(() => {
|
|
12014
|
+
const [link] = getLinks(editor);
|
|
12015
|
+
setInitialValues({
|
|
12016
|
+
url: link && link[0].url ? link[0].url : "",
|
|
12017
|
+
title: link && link[0].title ? link[0].title : ""
|
|
12018
|
+
});
|
|
12019
|
+
}, [editor, setInitialValues]);
|
|
12020
|
+
const handleUpdate = React__default.useCallback(() => {
|
|
12010
12021
|
const linksInSelection = getNodeEntries(editor, {
|
|
12011
|
-
match:
|
|
12022
|
+
match: matchLink,
|
|
12012
12023
|
at: selection
|
|
12013
12024
|
});
|
|
12014
12025
|
if (linksInSelection) {
|
|
12015
12026
|
for (const [, location] of linksInSelection) {
|
|
12016
|
-
setNodes(editor,
|
|
12017
|
-
match:
|
|
12018
|
-
return !Editor.isEditor(n) && Element.isElement(n) && n.type === ELEMENT_LINK;
|
|
12019
|
-
},
|
|
12027
|
+
setNodes(editor, formValues, {
|
|
12028
|
+
match: matchLink,
|
|
12020
12029
|
at: location
|
|
12021
12030
|
});
|
|
12022
12031
|
}
|
|
12023
12032
|
}
|
|
12024
|
-
|
|
12025
|
-
|
|
12033
|
+
props.onClose();
|
|
12034
|
+
}, [editor, formValues]);
|
|
12035
|
+
const UpdateLink = React__default.useCallback(
|
|
12036
|
+
() => /* @__PURE__ */ React__default.createElement(Button, { variant: "primary", onClick: handleUpdate }, "Update Link"),
|
|
12037
|
+
[handleUpdate]
|
|
12038
|
+
);
|
|
12026
12039
|
return /* @__PURE__ */ React__default.createElement(
|
|
12027
12040
|
NestedForm,
|
|
12028
12041
|
{
|
|
@@ -12030,32 +12043,35 @@ const LinkForm = (props) => {
|
|
|
12030
12043
|
label: "Link",
|
|
12031
12044
|
fields: [
|
|
12032
12045
|
{ label: "URL", name: "url", component: "text" },
|
|
12033
|
-
{ label: "Title", name: "title", component: "text" }
|
|
12046
|
+
{ label: "Title", name: "title", component: "text" },
|
|
12047
|
+
{ component: UpdateLink, name: "update" }
|
|
12034
12048
|
],
|
|
12035
|
-
initialValues
|
|
12036
|
-
|
|
12037
|
-
|
|
12038
|
-
|
|
12039
|
-
|
|
12040
|
-
|
|
12049
|
+
initialValues,
|
|
12050
|
+
onChange: (values) => setFormValues(values),
|
|
12051
|
+
onClose: () => {
|
|
12052
|
+
if (initialValues.title === "" && initialValues.url === "") {
|
|
12053
|
+
unwrapLink(editor, selection);
|
|
12054
|
+
}
|
|
12055
|
+
props.onClose();
|
|
12056
|
+
}
|
|
12041
12057
|
}
|
|
12042
12058
|
);
|
|
12043
12059
|
};
|
|
12044
|
-
const isLinkActive = (editor) => {
|
|
12045
|
-
const [link] = getLinks(editor);
|
|
12046
|
-
return !!link;
|
|
12047
|
-
};
|
|
12048
12060
|
const unwrapLink = (editor, selection) => {
|
|
12049
12061
|
unwrapNodes(editor, {
|
|
12050
|
-
match:
|
|
12062
|
+
match: matchLink,
|
|
12051
12063
|
at: selection || void 0
|
|
12052
12064
|
});
|
|
12053
12065
|
};
|
|
12054
12066
|
const getLinks = (editor) => {
|
|
12055
12067
|
return getNodeEntries(editor, {
|
|
12056
|
-
match:
|
|
12068
|
+
match: matchLink
|
|
12057
12069
|
});
|
|
12058
12070
|
};
|
|
12071
|
+
const isLinkActive = (editor) => {
|
|
12072
|
+
const [link] = getLinks(editor);
|
|
12073
|
+
return !!link;
|
|
12074
|
+
};
|
|
12059
12075
|
const ToolbarItem = ({
|
|
12060
12076
|
hidden,
|
|
12061
12077
|
label,
|
|
@@ -26226,7 +26242,7 @@ const processDocumentForIndexing = (data, path, collection, textIndexLength, fie
|
|
|
26226
26242
|
data["_id"] = `${collection.name}:${relPath}`;
|
|
26227
26243
|
data["_relativePath"] = relPath;
|
|
26228
26244
|
}
|
|
26229
|
-
for (const f of
|
|
26245
|
+
for (const f of (field == null ? void 0 : field.fields) || collection.fields || []) {
|
|
26230
26246
|
if (!f.searchable) {
|
|
26231
26247
|
delete data[f.name];
|
|
26232
26248
|
continue;
|
|
@@ -30507,6 +30523,70 @@ const defineStaticConfig = (config) => {
|
|
|
30507
30523
|
return config;
|
|
30508
30524
|
};
|
|
30509
30525
|
const defineConfig = defineStaticConfig;
|
|
30526
|
+
const tinaTableTemplate = {
|
|
30527
|
+
name: "table",
|
|
30528
|
+
label: "Table",
|
|
30529
|
+
fields: [
|
|
30530
|
+
{
|
|
30531
|
+
name: "firstRowHeader",
|
|
30532
|
+
label: "First row is a header",
|
|
30533
|
+
type: "boolean"
|
|
30534
|
+
},
|
|
30535
|
+
{
|
|
30536
|
+
name: "tableRows",
|
|
30537
|
+
label: "Rows",
|
|
30538
|
+
type: "object",
|
|
30539
|
+
list: true,
|
|
30540
|
+
ui: {
|
|
30541
|
+
itemProps: (value) => {
|
|
30542
|
+
if (value == null ? void 0 : value.tableCells) {
|
|
30543
|
+
if (Array.isArray(value.tableCells)) {
|
|
30544
|
+
return {
|
|
30545
|
+
label: value.tableCells.map((cellItem) => {
|
|
30546
|
+
var _a;
|
|
30547
|
+
return (_a = stringifyCell(cellItem.tableCell)) == null ? void 0 : _a.trim();
|
|
30548
|
+
}).join(" | ")
|
|
30549
|
+
};
|
|
30550
|
+
}
|
|
30551
|
+
}
|
|
30552
|
+
return { label: "Row" };
|
|
30553
|
+
}
|
|
30554
|
+
},
|
|
30555
|
+
fields: [
|
|
30556
|
+
{
|
|
30557
|
+
name: "tableCells",
|
|
30558
|
+
label: "Table Cells",
|
|
30559
|
+
list: true,
|
|
30560
|
+
type: "object",
|
|
30561
|
+
ui: {
|
|
30562
|
+
itemProps: (value) => {
|
|
30563
|
+
var _a;
|
|
30564
|
+
if (value) {
|
|
30565
|
+
if (value.tableCell) {
|
|
30566
|
+
return {
|
|
30567
|
+
label: (_a = stringifyCell(value.tableCell)) == null ? void 0 : _a.trim()
|
|
30568
|
+
};
|
|
30569
|
+
}
|
|
30570
|
+
}
|
|
30571
|
+
return { label: "Table Cell" };
|
|
30572
|
+
}
|
|
30573
|
+
},
|
|
30574
|
+
fields: [
|
|
30575
|
+
{
|
|
30576
|
+
label: "Table Cell",
|
|
30577
|
+
description: "Note: table cells do not support block-level elements like headers, code blocks, or lists. Any block-level items other than the first paragraph will be ignored.",
|
|
30578
|
+
name: "tableCell",
|
|
30579
|
+
type: "rich-text"
|
|
30580
|
+
}
|
|
30581
|
+
]
|
|
30582
|
+
}
|
|
30583
|
+
]
|
|
30584
|
+
}
|
|
30585
|
+
]
|
|
30586
|
+
};
|
|
30587
|
+
const stringifyCell = (cell) => {
|
|
30588
|
+
return stringifyMDX(cell, { name: "body", type: "rich-text" }, () => "");
|
|
30589
|
+
};
|
|
30510
30590
|
export {
|
|
30511
30591
|
ActionButton,
|
|
30512
30592
|
AddIcon,
|
|
@@ -30714,6 +30794,7 @@ export {
|
|
|
30714
30794
|
selectFieldClasses,
|
|
30715
30795
|
staticRequest,
|
|
30716
30796
|
textFieldClasses,
|
|
30797
|
+
tinaTableTemplate,
|
|
30717
30798
|
useBranchData,
|
|
30718
30799
|
useCMS$1 as useCMS,
|
|
30719
30800
|
useDismissible,
|
|
@@ -81,6 +81,18 @@ declare type BaseComponents = {
|
|
|
81
81
|
html_inline?: {
|
|
82
82
|
value: string;
|
|
83
83
|
};
|
|
84
|
+
th?: {
|
|
85
|
+
children: JSX.Element;
|
|
86
|
+
};
|
|
87
|
+
td?: {
|
|
88
|
+
children: JSX.Element;
|
|
89
|
+
};
|
|
90
|
+
tr?: {
|
|
91
|
+
children: JSX.Element;
|
|
92
|
+
};
|
|
93
|
+
table?: {
|
|
94
|
+
children: JSX.Element;
|
|
95
|
+
};
|
|
84
96
|
component_missing?: {
|
|
85
97
|
name: string;
|
|
86
98
|
};
|
package/dist/rich-text/index.js
CHANGED
|
@@ -72,6 +72,7 @@
|
|
|
72
72
|
return MNode;
|
|
73
73
|
};
|
|
74
74
|
const Node = ({ components, child }) => {
|
|
75
|
+
var _a, _b, _c, _d, _e;
|
|
75
76
|
const { children, ...props } = child;
|
|
76
77
|
switch (child.type) {
|
|
77
78
|
case "h1":
|
|
@@ -147,6 +148,53 @@
|
|
|
147
148
|
const props2 = child.props ? child.props : {};
|
|
148
149
|
return /* @__PURE__ */ React.createElement(Component, { ...props2 });
|
|
149
150
|
} else {
|
|
151
|
+
if (child.name === "table") {
|
|
152
|
+
const firstRowHeader = (_a = child.props) == null ? void 0 : _a.firstRowHeader;
|
|
153
|
+
const rows = (firstRowHeader ? (_b = child.props) == null ? void 0 : _b.tableRows.filter((_, i) => i !== 0) : (_c = child.props) == null ? void 0 : _c.tableRows) || [];
|
|
154
|
+
const header = (_e = (_d = child.props) == null ? void 0 : _d.tableRows) == null ? void 0 : _e.at(0);
|
|
155
|
+
const TableComponent = components["table"] || ((props2) => /* @__PURE__ */ React.createElement("table", { ...props2 }));
|
|
156
|
+
const TrComponent = components["tr"] || ((props2) => /* @__PURE__ */ React.createElement("tr", { ...props2 }));
|
|
157
|
+
const ThComponent = components["th"] || ((props2) => /* @__PURE__ */ React.createElement("th", { ...props2 }));
|
|
158
|
+
const TdComponent = components["td"] || ((props2) => /* @__PURE__ */ React.createElement("td", { ...props2 }));
|
|
159
|
+
return /* @__PURE__ */ React.createElement(TableComponent, null, firstRowHeader && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement(TrComponent, null, header.tableCells.map((c, i) => {
|
|
160
|
+
return /* @__PURE__ */ React.createElement(
|
|
161
|
+
TinaMarkdown,
|
|
162
|
+
{
|
|
163
|
+
key: i,
|
|
164
|
+
components: {
|
|
165
|
+
p: (props2) => {
|
|
166
|
+
if (ThComponent) {
|
|
167
|
+
return /* @__PURE__ */ React.createElement(ThComponent, { ...props2 });
|
|
168
|
+
} else {
|
|
169
|
+
return /* @__PURE__ */ React.createElement("th", { ...props2 });
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
},
|
|
173
|
+
content: c.tableCell
|
|
174
|
+
}
|
|
175
|
+
);
|
|
176
|
+
}))), /* @__PURE__ */ React.createElement("tbody", null, rows.map((row, i) => {
|
|
177
|
+
var _a2;
|
|
178
|
+
return /* @__PURE__ */ React.createElement(TrComponent, { key: i }, (_a2 = row == null ? void 0 : row.tableCells) == null ? void 0 : _a2.map((c, i2) => {
|
|
179
|
+
return /* @__PURE__ */ React.createElement(
|
|
180
|
+
TinaMarkdown,
|
|
181
|
+
{
|
|
182
|
+
key: i2,
|
|
183
|
+
components: {
|
|
184
|
+
p: (props2) => {
|
|
185
|
+
if (TdComponent) {
|
|
186
|
+
return /* @__PURE__ */ React.createElement(TdComponent, { ...props2 });
|
|
187
|
+
} else {
|
|
188
|
+
return /* @__PURE__ */ React.createElement("td", { ...props2 });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
content: c.tableCell
|
|
193
|
+
}
|
|
194
|
+
);
|
|
195
|
+
}));
|
|
196
|
+
})));
|
|
197
|
+
}
|
|
150
198
|
const ComponentMissing = components["component_missing"];
|
|
151
199
|
if (ComponentMissing) {
|
|
152
200
|
return /* @__PURE__ */ React.createElement(ComponentMissing, { name: child.name });
|
package/dist/rich-text/index.mjs
CHANGED
|
@@ -69,6 +69,7 @@ const MemoNode = (props) => {
|
|
|
69
69
|
return MNode;
|
|
70
70
|
};
|
|
71
71
|
const Node = ({ components, child }) => {
|
|
72
|
+
var _a, _b, _c, _d, _e;
|
|
72
73
|
const { children, ...props } = child;
|
|
73
74
|
switch (child.type) {
|
|
74
75
|
case "h1":
|
|
@@ -144,6 +145,53 @@ const Node = ({ components, child }) => {
|
|
|
144
145
|
const props2 = child.props ? child.props : {};
|
|
145
146
|
return /* @__PURE__ */ React.createElement(Component, { ...props2 });
|
|
146
147
|
} else {
|
|
148
|
+
if (child.name === "table") {
|
|
149
|
+
const firstRowHeader = (_a = child.props) == null ? void 0 : _a.firstRowHeader;
|
|
150
|
+
const rows = (firstRowHeader ? (_b = child.props) == null ? void 0 : _b.tableRows.filter((_, i) => i !== 0) : (_c = child.props) == null ? void 0 : _c.tableRows) || [];
|
|
151
|
+
const header = (_e = (_d = child.props) == null ? void 0 : _d.tableRows) == null ? void 0 : _e.at(0);
|
|
152
|
+
const TableComponent = components["table"] || ((props2) => /* @__PURE__ */ React.createElement("table", { ...props2 }));
|
|
153
|
+
const TrComponent = components["tr"] || ((props2) => /* @__PURE__ */ React.createElement("tr", { ...props2 }));
|
|
154
|
+
const ThComponent = components["th"] || ((props2) => /* @__PURE__ */ React.createElement("th", { ...props2 }));
|
|
155
|
+
const TdComponent = components["td"] || ((props2) => /* @__PURE__ */ React.createElement("td", { ...props2 }));
|
|
156
|
+
return /* @__PURE__ */ React.createElement(TableComponent, null, firstRowHeader && /* @__PURE__ */ React.createElement("thead", null, /* @__PURE__ */ React.createElement(TrComponent, null, header.tableCells.map((c, i) => {
|
|
157
|
+
return /* @__PURE__ */ React.createElement(
|
|
158
|
+
TinaMarkdown,
|
|
159
|
+
{
|
|
160
|
+
key: i,
|
|
161
|
+
components: {
|
|
162
|
+
p: (props2) => {
|
|
163
|
+
if (ThComponent) {
|
|
164
|
+
return /* @__PURE__ */ React.createElement(ThComponent, { ...props2 });
|
|
165
|
+
} else {
|
|
166
|
+
return /* @__PURE__ */ React.createElement("th", { ...props2 });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
content: c.tableCell
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}))), /* @__PURE__ */ React.createElement("tbody", null, rows.map((row, i) => {
|
|
174
|
+
var _a2;
|
|
175
|
+
return /* @__PURE__ */ React.createElement(TrComponent, { key: i }, (_a2 = row == null ? void 0 : row.tableCells) == null ? void 0 : _a2.map((c, i2) => {
|
|
176
|
+
return /* @__PURE__ */ React.createElement(
|
|
177
|
+
TinaMarkdown,
|
|
178
|
+
{
|
|
179
|
+
key: i2,
|
|
180
|
+
components: {
|
|
181
|
+
p: (props2) => {
|
|
182
|
+
if (TdComponent) {
|
|
183
|
+
return /* @__PURE__ */ React.createElement(TdComponent, { ...props2 });
|
|
184
|
+
} else {
|
|
185
|
+
return /* @__PURE__ */ React.createElement("td", { ...props2 });
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
content: c.tableCell
|
|
190
|
+
}
|
|
191
|
+
);
|
|
192
|
+
}));
|
|
193
|
+
})));
|
|
194
|
+
}
|
|
147
195
|
const ComponentMissing = components["component_missing"];
|
|
148
196
|
if (ComponentMissing) {
|
|
149
197
|
return /* @__PURE__ */ React.createElement(ComponentMissing, { name: child.name });
|
package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-link-plugin/index.d.ts
CHANGED
|
@@ -9,6 +9,6 @@ declare type LinkElement = {
|
|
|
9
9
|
};
|
|
10
10
|
export declare const wrapOrRewrapLink: (editor: any) => void;
|
|
11
11
|
export declare const LinkForm: (props: any) => JSX.Element;
|
|
12
|
-
export declare const isLinkActive: (editor: any) => boolean;
|
|
13
12
|
export declare const unwrapLink: (editor: PlateEditor, selection?: BaseRange) => void;
|
|
14
13
|
export declare const getLinks: (editor: any) => Generator<import("@udecode/plate-headless").TNodeEntry<LinkElement>, void, undefined>;
|
|
14
|
+
export declare const isLinkActive: (editor: any) => boolean;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import type { GraphQLError } from 'graphql';
|
|
2
|
+
import type { Config } from '@tinacms/schema-tools';
|
|
1
3
|
export declare const TINA_HOST = "content.tinajs.io";
|
|
2
4
|
export interface TinaClientArgs<GenQueries = Record<string, unknown>> {
|
|
3
5
|
url: string;
|
|
4
6
|
token?: string;
|
|
5
7
|
queries: (client: TinaClient<GenQueries>) => GenQueries;
|
|
8
|
+
errorPolicy?: Config['client']['errorPolicy'];
|
|
6
9
|
}
|
|
7
10
|
export declare type TinaClientRequestArgs = {
|
|
8
11
|
variables?: Record<string, any>;
|
|
9
12
|
query: string;
|
|
13
|
+
errorPolicy?: 'throw' | 'include';
|
|
10
14
|
} & Partial<Omit<TinaClientArgs, 'queries'>>;
|
|
11
15
|
export declare type TinaClientURLParts = {
|
|
12
16
|
host: string;
|
|
@@ -17,13 +21,12 @@ export declare type TinaClientURLParts = {
|
|
|
17
21
|
export declare class TinaClient<GenQueries> {
|
|
18
22
|
apiUrl: string;
|
|
19
23
|
readonlyToken?: string;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
*/
|
|
23
24
|
queries: GenQueries;
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
errorPolicy: Config['client']['errorPolicy'];
|
|
26
|
+
constructor({ token, url, queries, errorPolicy, }: TinaClientArgs<GenQueries>);
|
|
27
|
+
request<DataType extends Record<string, any> = any>({ errorPolicy, ...args }: TinaClientRequestArgs): Promise<{
|
|
26
28
|
data: DataType;
|
|
29
|
+
errors: GraphQLError[];
|
|
27
30
|
query: string;
|
|
28
31
|
}>;
|
|
29
32
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinacms",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.22",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -69,8 +69,9 @@
|
|
|
69
69
|
"@react-types/combobox": "^3.2.0",
|
|
70
70
|
"@react-types/shared": "^3.10.0",
|
|
71
71
|
"@sambego/storybook-styles": "^1.0.0",
|
|
72
|
-
"@tinacms/schema-tools": "1.4.
|
|
73
|
-
"@tinacms/search": "1.0.
|
|
72
|
+
"@tinacms/schema-tools": "1.4.13",
|
|
73
|
+
"@tinacms/search": "1.0.12",
|
|
74
|
+
"@tinacms/mdx": "1.3.20",
|
|
74
75
|
"@tinacms/sharedctx": "1.0.2",
|
|
75
76
|
"@udecode/plate-headless": "^21.4.0",
|
|
76
77
|
"atob": "2.1.2",
|