tinacms 0.0.0-bbf2f81-20241024004604 → 0.0.0-bc59a81-20241030011355
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/cache/node-cache.d.ts +1 -0
- package/dist/client.js +18 -16
- package/dist/client.mjs +1 -1
- package/dist/index.js +60 -24
- package/dist/index.mjs +60 -24
- package/dist/{node-cache-7fa2452c.mjs → node-cache-4c336858.mjs} +18 -11
- package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
- package/package.json +4 -4
- package/dist/__vite-browser-external-d06ac358.mjs +0 -4
package/dist/client.js
CHANGED
|
@@ -105,21 +105,27 @@
|
|
|
105
105
|
const client = new TinaClient(args);
|
|
106
106
|
return client;
|
|
107
107
|
}
|
|
108
|
-
const makeCacheDir = async (dir, fs) => {
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
const
|
|
108
|
+
const makeCacheDir = async (dir, fs, path, os) => {
|
|
109
|
+
const pathParts = dir.split(path.sep).filter(Boolean);
|
|
110
|
+
const cacheHash = pathParts[pathParts.length - 1];
|
|
111
|
+
const rootUser = pathParts[0];
|
|
112
112
|
let cacheDir = dir;
|
|
113
|
-
if (!fs.existsSync(path.join(path.sep,
|
|
114
|
-
cacheDir = path.join(os.tmpdir(),
|
|
113
|
+
if (!fs.existsSync(path.join(path.sep, rootUser))) {
|
|
114
|
+
cacheDir = path.join(os.tmpdir(), cacheHash);
|
|
115
|
+
}
|
|
116
|
+
try {
|
|
117
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
118
|
+
} catch (error) {
|
|
119
|
+
throw new Error(`Failed to create cache directory: ${error.message}`);
|
|
115
120
|
}
|
|
116
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
117
121
|
return cacheDir;
|
|
118
122
|
};
|
|
119
123
|
const NodeCache = async (dir) => {
|
|
120
|
-
const fs =
|
|
121
|
-
const
|
|
122
|
-
const
|
|
124
|
+
const fs = require("node:fs");
|
|
125
|
+
const path = require("node:path");
|
|
126
|
+
const os = require("node:os");
|
|
127
|
+
const { createHash } = require("node:crypto");
|
|
128
|
+
const cacheDir = await makeCacheDir(dir, fs, path, os);
|
|
123
129
|
return {
|
|
124
130
|
makeKey: (key) => {
|
|
125
131
|
const input = key && key instanceof Object ? JSON.stringify(key) : key || "";
|
|
@@ -147,12 +153,8 @@
|
|
|
147
153
|
};
|
|
148
154
|
const nodeCache = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
149
155
|
__proto__: null,
|
|
150
|
-
NodeCache
|
|
151
|
-
|
|
152
|
-
const __viteBrowserExternal = {};
|
|
153
|
-
const __viteBrowserExternal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
154
|
-
__proto__: null,
|
|
155
|
-
default: __viteBrowserExternal
|
|
156
|
+
NodeCache,
|
|
157
|
+
makeCacheDir
|
|
156
158
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
157
159
|
exports2.TINA_HOST = TINA_HOST;
|
|
158
160
|
exports2.TinaClient = TinaClient;
|
package/dist/client.mjs
CHANGED
|
@@ -24,7 +24,7 @@ class TinaClient {
|
|
|
24
24
|
}
|
|
25
25
|
try {
|
|
26
26
|
if (this.cacheDir && typeof window === "undefined" && typeof require !== "undefined") {
|
|
27
|
-
const { NodeCache } = await import("./node-cache-
|
|
27
|
+
const { NodeCache } = await import("./node-cache-4c336858.mjs");
|
|
28
28
|
this.cache = await NodeCache(this.cacheDir);
|
|
29
29
|
}
|
|
30
30
|
} catch (e) {
|
package/dist/index.js
CHANGED
|
@@ -774,6 +774,22 @@ var __publicField = (obj, key, value) => {
|
|
|
774
774
|
);
|
|
775
775
|
};
|
|
776
776
|
}
|
|
777
|
+
function wrapFieldWithNoHeader(Field) {
|
|
778
|
+
return (props) => {
|
|
779
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
780
|
+
FieldMeta,
|
|
781
|
+
{
|
|
782
|
+
name: props.input.name,
|
|
783
|
+
label: false,
|
|
784
|
+
description: "",
|
|
785
|
+
error: props.meta.error,
|
|
786
|
+
index: props.index,
|
|
787
|
+
tinaForm: props.tinaForm
|
|
788
|
+
},
|
|
789
|
+
/* @__PURE__ */ React__namespace.createElement(Field, { ...props })
|
|
790
|
+
);
|
|
791
|
+
};
|
|
792
|
+
}
|
|
777
793
|
function wrapFieldWithError(Field) {
|
|
778
794
|
return (props) => {
|
|
779
795
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -850,9 +866,9 @@ var __publicField = (obj, key, value) => {
|
|
|
850
866
|
"span",
|
|
851
867
|
{
|
|
852
868
|
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
853
|
-
...props
|
|
854
|
-
|
|
855
|
-
|
|
869
|
+
...props,
|
|
870
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
871
|
+
}
|
|
856
872
|
);
|
|
857
873
|
};
|
|
858
874
|
const FieldError = ({
|
|
@@ -5791,27 +5807,35 @@ flowchart TD
|
|
|
5791
5807
|
))))
|
|
5792
5808
|
))));
|
|
5793
5809
|
};
|
|
5794
|
-
const Group =
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5810
|
+
const Group = wrapFieldWithNoHeader(
|
|
5811
|
+
({ tinaForm, field }) => {
|
|
5812
|
+
const cms = useCMS$1();
|
|
5813
|
+
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(
|
|
5814
|
+
Header,
|
|
5815
|
+
{
|
|
5816
|
+
onClick: () => {
|
|
5817
|
+
const state = tinaForm.finalForm.getState();
|
|
5818
|
+
if (state.invalid === true) {
|
|
5819
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5820
|
+
return;
|
|
5821
|
+
}
|
|
5822
|
+
cms.dispatch({
|
|
5823
|
+
type: "forms:set-active-field-name",
|
|
5824
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5825
|
+
});
|
|
5805
5826
|
}
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5827
|
+
},
|
|
5828
|
+
field.label || field.name,
|
|
5829
|
+
field.description && /* @__PURE__ */ React__namespace.createElement(
|
|
5830
|
+
"span",
|
|
5831
|
+
{
|
|
5832
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5833
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5834
|
+
}
|
|
5835
|
+
)
|
|
5836
|
+
));
|
|
5837
|
+
}
|
|
5838
|
+
);
|
|
5815
5839
|
const Header = ({ onClick, children }) => {
|
|
5816
5840
|
return /* @__PURE__ */ React__namespace.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React__namespace.createElement(
|
|
5817
5841
|
"button",
|
|
@@ -14425,6 +14449,7 @@ flowchart TD
|
|
|
14425
14449
|
ToolbarButton,
|
|
14426
14450
|
{
|
|
14427
14451
|
showArrow: false,
|
|
14452
|
+
"data-testid": "rich-text-editor-overflow-menu-button",
|
|
14428
14453
|
className: "lg:min-w-[130px]",
|
|
14429
14454
|
isDropdown: true,
|
|
14430
14455
|
pressed: openState.open,
|
|
@@ -14478,7 +14503,17 @@ flowchart TD
|
|
|
14478
14503
|
};
|
|
14479
14504
|
const RawMarkdownToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
|
|
14480
14505
|
const { props } = useRawMarkdownToolbarButton();
|
|
14481
|
-
return /* @__PURE__ */ React.createElement(
|
|
14506
|
+
return /* @__PURE__ */ React.createElement(
|
|
14507
|
+
ToolbarButton,
|
|
14508
|
+
{
|
|
14509
|
+
ref,
|
|
14510
|
+
tooltip: "Link",
|
|
14511
|
+
...rest,
|
|
14512
|
+
...props,
|
|
14513
|
+
"data-testid": "markdown-button"
|
|
14514
|
+
},
|
|
14515
|
+
/* @__PURE__ */ React.createElement(Icons.raw, null)
|
|
14516
|
+
);
|
|
14482
14517
|
});
|
|
14483
14518
|
function TableDropdownMenu(props) {
|
|
14484
14519
|
const tableSelected = plateCommon.useEditorSelector(
|
|
@@ -33794,6 +33829,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
33794
33829
|
exports2.useScreenPlugin = useScreenPlugin;
|
|
33795
33830
|
exports2.useTinaAuthRedirect = useTinaAuthRedirect;
|
|
33796
33831
|
exports2.wrapFieldWithError = wrapFieldWithError;
|
|
33832
|
+
exports2.wrapFieldWithNoHeader = wrapFieldWithNoHeader;
|
|
33797
33833
|
exports2.wrapFieldsWithMeta = wrapFieldsWithMeta;
|
|
33798
33834
|
Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
33799
33835
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -801,6 +801,22 @@ function wrapFieldsWithMeta(Field2) {
|
|
|
801
801
|
);
|
|
802
802
|
};
|
|
803
803
|
}
|
|
804
|
+
function wrapFieldWithNoHeader(Field2) {
|
|
805
|
+
return (props) => {
|
|
806
|
+
return /* @__PURE__ */ React.createElement(
|
|
807
|
+
FieldMeta,
|
|
808
|
+
{
|
|
809
|
+
name: props.input.name,
|
|
810
|
+
label: false,
|
|
811
|
+
description: "",
|
|
812
|
+
error: props.meta.error,
|
|
813
|
+
index: props.index,
|
|
814
|
+
tinaForm: props.tinaForm
|
|
815
|
+
},
|
|
816
|
+
/* @__PURE__ */ React.createElement(Field2, { ...props })
|
|
817
|
+
);
|
|
818
|
+
};
|
|
819
|
+
}
|
|
804
820
|
function wrapFieldWithError(Field2) {
|
|
805
821
|
return (props) => {
|
|
806
822
|
return /* @__PURE__ */ React.createElement(
|
|
@@ -877,9 +893,9 @@ const FieldDescription = ({
|
|
|
877
893
|
"span",
|
|
878
894
|
{
|
|
879
895
|
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
880
|
-
...props
|
|
881
|
-
|
|
882
|
-
|
|
896
|
+
...props,
|
|
897
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
898
|
+
}
|
|
883
899
|
);
|
|
884
900
|
};
|
|
885
901
|
const FieldError = ({
|
|
@@ -5818,27 +5834,35 @@ const BlockSelector = ({
|
|
|
5818
5834
|
))))
|
|
5819
5835
|
))));
|
|
5820
5836
|
};
|
|
5821
|
-
const Group =
|
|
5822
|
-
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5837
|
+
const Group = wrapFieldWithNoHeader(
|
|
5838
|
+
({ tinaForm, field }) => {
|
|
5839
|
+
const cms = useCMS$1();
|
|
5840
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
5841
|
+
Header,
|
|
5842
|
+
{
|
|
5843
|
+
onClick: () => {
|
|
5844
|
+
const state = tinaForm.finalForm.getState();
|
|
5845
|
+
if (state.invalid === true) {
|
|
5846
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5847
|
+
return;
|
|
5848
|
+
}
|
|
5849
|
+
cms.dispatch({
|
|
5850
|
+
type: "forms:set-active-field-name",
|
|
5851
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5852
|
+
});
|
|
5832
5853
|
}
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5854
|
+
},
|
|
5855
|
+
field.label || field.name,
|
|
5856
|
+
field.description && /* @__PURE__ */ React.createElement(
|
|
5857
|
+
"span",
|
|
5858
|
+
{
|
|
5859
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5860
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5861
|
+
}
|
|
5862
|
+
)
|
|
5863
|
+
));
|
|
5864
|
+
}
|
|
5865
|
+
);
|
|
5842
5866
|
const Header = ({ onClick, children }) => {
|
|
5843
5867
|
return /* @__PURE__ */ React.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React.createElement(
|
|
5844
5868
|
"button",
|
|
@@ -14452,6 +14476,7 @@ function OverflowMenu({
|
|
|
14452
14476
|
ToolbarButton,
|
|
14453
14477
|
{
|
|
14454
14478
|
showArrow: false,
|
|
14479
|
+
"data-testid": "rich-text-editor-overflow-menu-button",
|
|
14455
14480
|
className: "lg:min-w-[130px]",
|
|
14456
14481
|
isDropdown: true,
|
|
14457
14482
|
pressed: openState.open,
|
|
@@ -14505,7 +14530,17 @@ const useRawMarkdownToolbarButton = () => {
|
|
|
14505
14530
|
};
|
|
14506
14531
|
const RawMarkdownToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14507
14532
|
const { props } = useRawMarkdownToolbarButton();
|
|
14508
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
14533
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14534
|
+
ToolbarButton,
|
|
14535
|
+
{
|
|
14536
|
+
ref,
|
|
14537
|
+
tooltip: "Link",
|
|
14538
|
+
...rest,
|
|
14539
|
+
...props,
|
|
14540
|
+
"data-testid": "markdown-button"
|
|
14541
|
+
},
|
|
14542
|
+
/* @__PURE__ */ React__default.createElement(Icons.raw, null)
|
|
14543
|
+
);
|
|
14509
14544
|
});
|
|
14510
14545
|
function TableDropdownMenu(props) {
|
|
14511
14546
|
const tableSelected = useEditorSelector(
|
|
@@ -33816,5 +33851,6 @@ export {
|
|
|
33816
33851
|
useScreenPlugin,
|
|
33817
33852
|
useTinaAuthRedirect,
|
|
33818
33853
|
wrapFieldWithError,
|
|
33854
|
+
wrapFieldWithNoHeader,
|
|
33819
33855
|
wrapFieldsWithMeta
|
|
33820
33856
|
};
|
|
@@ -1,18 +1,24 @@
|
|
|
1
|
-
const makeCacheDir = async (dir, fs) => {
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
1
|
+
const makeCacheDir = async (dir, fs, path, os) => {
|
|
2
|
+
const pathParts = dir.split(path.sep).filter(Boolean);
|
|
3
|
+
const cacheHash = pathParts[pathParts.length - 1];
|
|
4
|
+
const rootUser = pathParts[0];
|
|
5
5
|
let cacheDir = dir;
|
|
6
|
-
if (!fs.existsSync(path.join(path.sep,
|
|
7
|
-
cacheDir = path.join(os.tmpdir(),
|
|
6
|
+
if (!fs.existsSync(path.join(path.sep, rootUser))) {
|
|
7
|
+
cacheDir = path.join(os.tmpdir(), cacheHash);
|
|
8
|
+
}
|
|
9
|
+
try {
|
|
10
|
+
fs.mkdirSync(cacheDir, { recursive: true });
|
|
11
|
+
} catch (error) {
|
|
12
|
+
throw new Error(`Failed to create cache directory: ${error.message}`);
|
|
8
13
|
}
|
|
9
|
-
fs.mkdirSync(cacheDir, { recursive: true });
|
|
10
14
|
return cacheDir;
|
|
11
15
|
};
|
|
12
16
|
const NodeCache = async (dir) => {
|
|
13
|
-
const fs =
|
|
14
|
-
const
|
|
15
|
-
const
|
|
17
|
+
const fs = require("node:fs");
|
|
18
|
+
const path = require("node:path");
|
|
19
|
+
const os = require("node:os");
|
|
20
|
+
const { createHash } = require("node:crypto");
|
|
21
|
+
const cacheDir = await makeCacheDir(dir, fs, path, os);
|
|
16
22
|
return {
|
|
17
23
|
makeKey: (key) => {
|
|
18
24
|
const input = key && key instanceof Object ? JSON.stringify(key) : key || "";
|
|
@@ -39,5 +45,6 @@ const NodeCache = async (dir) => {
|
|
|
39
45
|
};
|
|
40
46
|
};
|
|
41
47
|
export {
|
|
42
|
-
NodeCache
|
|
48
|
+
NodeCache,
|
|
49
|
+
makeCacheDir
|
|
43
50
|
};
|
|
@@ -3,6 +3,14 @@ import { FieldProps } from './field-props';
|
|
|
3
3
|
import { Form } from '../../forms';
|
|
4
4
|
export type InputFieldType<ExtraFieldProps, InputProps> = FieldProps<InputProps> & ExtraFieldProps;
|
|
5
5
|
export declare function wrapFieldsWithMeta<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
6
|
+
/**
|
|
7
|
+
* Same as wrapFieldsWithMeta but excludes the label, and description useful for fields that render their label and description
|
|
8
|
+
*/
|
|
9
|
+
export declare function wrapFieldWithNoHeader<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
10
|
+
/**
|
|
11
|
+
* Same as above but excludes the label, useful for fields that have their own label
|
|
12
|
+
* @deprecated This function is deprecated and will be removed in future versions.
|
|
13
|
+
*/
|
|
6
14
|
export declare function wrapFieldWithError<ExtraFieldProps = {}, InputProps = {}>(Field: React.FunctionComponent<InputFieldType<ExtraFieldProps, InputProps>> | React.ComponentClass<InputFieldType<ExtraFieldProps, InputProps>>): (props: InputFieldType<ExtraFieldProps, InputProps>) => React.JSX.Element;
|
|
7
15
|
interface FieldMetaProps extends React.HTMLAttributes<HTMLElement> {
|
|
8
16
|
name: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tinacms",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-bc59a81-20241030011355",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -129,9 +129,9 @@
|
|
|
129
129
|
"webfontloader": "1.6.28",
|
|
130
130
|
"yup": "^1.4.0",
|
|
131
131
|
"zod": "^3.23.8",
|
|
132
|
-
"@tinacms/mdx": "
|
|
133
|
-
"@tinacms/schema-tools": "
|
|
134
|
-
"@tinacms/search": "
|
|
132
|
+
"@tinacms/mdx": "0.0.0-bc59a81-20241030011355",
|
|
133
|
+
"@tinacms/schema-tools": "0.0.0-bc59a81-20241030011355",
|
|
134
|
+
"@tinacms/search": "0.0.0-bc59a81-20241030011355"
|
|
135
135
|
},
|
|
136
136
|
"devDependencies": {
|
|
137
137
|
"@graphql-tools/utils": "^10.5.4",
|