tinacms 3.2.0 → 3.3.1
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 +1659 -1651
- package/dist/internalClient/index.d.ts +27 -30
- package/dist/react.js +0 -94
- package/dist/toolkit/components/active-field-indicator.d.ts +0 -1
- package/dist/toolkit/components/ui/date-time-picker.d.ts +1 -1
- package/dist/toolkit/fields/components/password-field.d.ts +1 -1
- package/dist/toolkit/fields/components/select.d.ts +1 -1
- package/dist/toolkit/fields/components/text-field.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +2 -1
- package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +2 -6
- package/dist/toolkit/form-builder/fields-builder.d.ts +1 -2
- package/dist/toolkit/form-builder/form-builder.d.ts +0 -1
- package/dist/toolkit/forms/field.d.ts +2 -3
- package/dist/toolkit/tina-state.d.ts +16 -42
- package/package.json +4 -4
|
@@ -2,7 +2,12 @@ import { BranchData, EventBus } from '@tinacms/toolkit';
|
|
|
2
2
|
import { DocumentNode, GraphQLSchema } from 'graphql';
|
|
3
3
|
import { TokenObject } from '../auth/authenticate';
|
|
4
4
|
import { AuthProvider, Schema, TinaSchema } from '@tinacms/schema-tools';
|
|
5
|
-
import { SearchClient } from '@tinacms/search/index-client';
|
|
5
|
+
import { SearchClient, SearchOptions, SearchQueryResponse, IndexableDocument, FuzzySearchOptions } from '@tinacms/search/index-client';
|
|
6
|
+
interface TinaSearchConfig {
|
|
7
|
+
stopwordLanguages?: string[];
|
|
8
|
+
fuzzyEnabled?: boolean;
|
|
9
|
+
fuzzyOptions?: FuzzySearchOptions;
|
|
10
|
+
}
|
|
6
11
|
import gql from 'graphql-tag';
|
|
7
12
|
import { TinaCloudProject } from './types';
|
|
8
13
|
export * from './authProvider';
|
|
@@ -171,39 +176,31 @@ export declare class LocalClient extends Client {
|
|
|
171
176
|
get isLocalMode(): boolean;
|
|
172
177
|
}
|
|
173
178
|
export declare class TinaCMSSearchClient implements SearchClient {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
nextCursor: string | null;
|
|
185
|
-
total: number;
|
|
186
|
-
prevCursor: string | null;
|
|
187
|
-
}>;
|
|
188
|
-
del(ids: string[]): Promise<any>;
|
|
189
|
-
put(docs: any[]): Promise<any>;
|
|
179
|
+
protected readonly client: Client;
|
|
180
|
+
protected readonly fuzzyEnabled: boolean;
|
|
181
|
+
protected readonly stopwordLanguages?: string[];
|
|
182
|
+
protected readonly defaultFuzzyOptions?: FuzzySearchOptions;
|
|
183
|
+
constructor(client: Client, tinaSearchConfig?: TinaSearchConfig);
|
|
184
|
+
protected getSearchBaseUrl(useFuzzy: boolean): string;
|
|
185
|
+
protected buildSearchUrl(query: string, options?: SearchOptions, useFuzzy?: boolean): string;
|
|
186
|
+
query(query: string, options?: SearchOptions): Promise<SearchQueryResponse>;
|
|
187
|
+
del(ids: string[]): Promise<void>;
|
|
188
|
+
put(docs: IndexableDocument[]): Promise<void>;
|
|
190
189
|
supportsClientSideIndexing(): boolean;
|
|
190
|
+
getDefaultLimit(): number;
|
|
191
191
|
}
|
|
192
192
|
export declare class LocalSearchClient implements SearchClient {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
prevCursor: string | null;
|
|
203
|
-
}>;
|
|
204
|
-
del(ids: string[]): Promise<any>;
|
|
205
|
-
put(docs: any[]): Promise<any>;
|
|
193
|
+
protected readonly client: Client;
|
|
194
|
+
protected readonly fuzzyEnabled: boolean;
|
|
195
|
+
protected readonly defaultFuzzyOptions?: FuzzySearchOptions;
|
|
196
|
+
constructor(client: Client, tinaSearchConfig?: Omit<TinaSearchConfig, 'stopwordLanguages'>);
|
|
197
|
+
protected getSearchBaseUrl(useFuzzy: boolean): string;
|
|
198
|
+
protected buildSearchUrl(query: string, options?: SearchOptions, useFuzzy?: boolean): string;
|
|
199
|
+
query(query: string, options?: SearchOptions): Promise<SearchQueryResponse>;
|
|
200
|
+
del(_ids: string[]): Promise<void>;
|
|
201
|
+
put(_docs: IndexableDocument[]): Promise<void>;
|
|
206
202
|
supportsClientSideIndexing(): boolean;
|
|
203
|
+
getDefaultLimit(): number;
|
|
207
204
|
}
|
|
208
205
|
export type PackageVersionInfo = {
|
|
209
206
|
version: string;
|
package/dist/react.js
CHANGED
|
@@ -54,15 +54,6 @@ function useTina(props) {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
if (fieldName) {
|
|
57
|
-
if (lastHoveredField !== null) {
|
|
58
|
-
lastHoveredField = null;
|
|
59
|
-
if (isInTinaIframe) {
|
|
60
|
-
parent.postMessage(
|
|
61
|
-
{ type: "field:hovered", fieldName: null },
|
|
62
|
-
window.location.origin
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
57
|
if (isInTinaIframe) {
|
|
67
58
|
parent.postMessage(
|
|
68
59
|
{ type: "field:selected", fieldName },
|
|
@@ -70,40 +61,6 @@ function useTina(props) {
|
|
|
70
61
|
);
|
|
71
62
|
}
|
|
72
63
|
}
|
|
73
|
-
}, mouseEnterHandler = function(e) {
|
|
74
|
-
if (!(e.target instanceof Element)) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
const attributeNames = e.target.getAttributeNames();
|
|
78
|
-
const tinaAttribute = attributeNames.find(
|
|
79
|
-
(name) => name.startsWith("data-tina-field")
|
|
80
|
-
);
|
|
81
|
-
let fieldName;
|
|
82
|
-
if (tinaAttribute) {
|
|
83
|
-
fieldName = e.target.getAttribute(tinaAttribute);
|
|
84
|
-
} else {
|
|
85
|
-
const ancestor = e.target.closest(
|
|
86
|
-
"[data-tina-field], [data-tina-field-overlay]"
|
|
87
|
-
);
|
|
88
|
-
if (ancestor) {
|
|
89
|
-
const attributeNames2 = ancestor.getAttributeNames();
|
|
90
|
-
const tinaAttribute2 = attributeNames2.find(
|
|
91
|
-
(name) => name.startsWith("data-tina-field")
|
|
92
|
-
);
|
|
93
|
-
if (tinaAttribute2) {
|
|
94
|
-
fieldName = ancestor.getAttribute(tinaAttribute2);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
if (fieldName && fieldName !== lastHoveredField) {
|
|
99
|
-
lastHoveredField = fieldName;
|
|
100
|
-
if (isInTinaIframe) {
|
|
101
|
-
parent.postMessage(
|
|
102
|
-
{ type: "field:hovered", fieldName },
|
|
103
|
-
window.location.origin
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
64
|
};
|
|
108
65
|
const style = document.createElement("style");
|
|
109
66
|
style.type = "text/css";
|
|
@@ -117,15 +74,6 @@ function useTina(props) {
|
|
|
117
74
|
outline: 2px solid rgba(34,150,254,1);
|
|
118
75
|
cursor: pointer;
|
|
119
76
|
}
|
|
120
|
-
[data-tina-field-focused] {
|
|
121
|
-
outline: 2px dashed #C2410C !important;
|
|
122
|
-
box-shadow: none !important;
|
|
123
|
-
}
|
|
124
|
-
[data-tina-field-focused]:hover {
|
|
125
|
-
box-shadow: inset 100vi 100vh rgba(194, 65, 12, 0.3) !important;
|
|
126
|
-
outline: 2px solid #C2410C !important;
|
|
127
|
-
cursor: pointer;
|
|
128
|
-
}
|
|
129
77
|
[data-tina-field-overlay] {
|
|
130
78
|
outline: 2px dashed rgba(34,150,254,0.5);
|
|
131
79
|
position: relative;
|
|
@@ -146,19 +94,12 @@ function useTina(props) {
|
|
|
146
94
|
[data-tina-field-overlay]:hover::after {
|
|
147
95
|
opacity: 1;
|
|
148
96
|
}
|
|
149
|
-
[data-tina-field-overlay][data-tina-field-focused]::after {
|
|
150
|
-
background-color: rgba(194, 65, 12, 0.3);
|
|
151
|
-
opacity: 1;
|
|
152
|
-
}
|
|
153
97
|
`;
|
|
154
98
|
document.head.appendChild(style);
|
|
155
99
|
document.body.classList.add("__tina-quick-editing-enabled");
|
|
156
|
-
let lastHoveredField = null;
|
|
157
100
|
document.addEventListener("click", mouseDownHandler, true);
|
|
158
|
-
document.addEventListener("mouseenter", mouseEnterHandler, true);
|
|
159
101
|
return () => {
|
|
160
102
|
document.removeEventListener("click", mouseDownHandler, true);
|
|
161
|
-
document.removeEventListener("mouseenter", mouseEnterHandler, true);
|
|
162
103
|
document.body.classList.remove("__tina-quick-editing-enabled");
|
|
163
104
|
style.remove();
|
|
164
105
|
};
|
|
@@ -172,7 +113,6 @@ function useTina(props) {
|
|
|
172
113
|
});
|
|
173
114
|
}
|
|
174
115
|
}, [id]);
|
|
175
|
-
const lastFocusedFieldRef = React.useRef(null);
|
|
176
116
|
React.useEffect(() => {
|
|
177
117
|
const { experimental___selectFormByFormId, ...rest } = props;
|
|
178
118
|
parent.postMessage({ type: "open", ...rest, id }, window.location.origin);
|
|
@@ -202,40 +142,6 @@ function useTina(props) {
|
|
|
202
142
|
);
|
|
203
143
|
}
|
|
204
144
|
}
|
|
205
|
-
if (event.data.type === "field:set-focused") {
|
|
206
|
-
const newFieldName = event.data.fieldName;
|
|
207
|
-
if (newFieldName === lastFocusedFieldRef.current) {
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
lastFocusedFieldRef.current = newFieldName;
|
|
211
|
-
const allTinaFields = document.querySelectorAll("[data-tina-field]");
|
|
212
|
-
allTinaFields.forEach((el) => {
|
|
213
|
-
el.removeAttribute("data-tina-field-focused");
|
|
214
|
-
});
|
|
215
|
-
if (newFieldName) {
|
|
216
|
-
let targetElement = document.querySelector(
|
|
217
|
-
`[data-tina-field="${newFieldName}"]`
|
|
218
|
-
);
|
|
219
|
-
if (!targetElement) {
|
|
220
|
-
const allFields = Array.from(allTinaFields);
|
|
221
|
-
targetElement = allFields.find((el) => {
|
|
222
|
-
const fieldValue = el.getAttribute("data-tina-field");
|
|
223
|
-
return fieldValue && fieldValue.endsWith(newFieldName.split("---")[1]);
|
|
224
|
-
});
|
|
225
|
-
}
|
|
226
|
-
if (targetElement) {
|
|
227
|
-
targetElement.setAttribute("data-tina-field-focused", "true");
|
|
228
|
-
const rect = targetElement.getBoundingClientRect();
|
|
229
|
-
const isInViewport = rect.top >= 0 && rect.left >= 0 && rect.bottom <= window.innerHeight && rect.right <= window.innerWidth;
|
|
230
|
-
if (!isInViewport) {
|
|
231
|
-
targetElement.scrollIntoView({
|
|
232
|
-
behavior: "smooth",
|
|
233
|
-
block: "center"
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
145
|
};
|
|
240
146
|
window.addEventListener("message", handleMessage);
|
|
241
147
|
return () => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import 'moment-timezone';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { DayPickerProps } from 'react-day-picker';
|
|
3
|
+
import { type DayPickerProps } from 'react-day-picker';
|
|
4
4
|
type TimePickerType = 'minutes' | 'seconds' | 'hours' | '12hours';
|
|
5
5
|
type Period = 'AM' | 'PM';
|
|
6
6
|
declare const formatCurrentDate: ({ dateFormat, timeFormat, displayDate, }: {
|
|
@@ -4,6 +4,6 @@ export interface PasswordFieldProps extends a {
|
|
|
4
4
|
error?: boolean;
|
|
5
5
|
ref?: any;
|
|
6
6
|
}
|
|
7
|
-
export declare const passwordFieldClasses = "shadow-inner focus:shadow-outline focus:border-
|
|
7
|
+
export declare const passwordFieldClasses = "shadow-inner focus:shadow-outline focus:border-blue-500 focus:outline-none block text-base placeholder:text-gray-300 px-3 py-2 text-gray-600 w-full bg-white border border-gray-200 transition-all ease-out duration-150 focus:text-gray-900 rounded";
|
|
8
8
|
export declare const BasePasswordField: React.ForwardRefExoticComponent<Omit<PasswordFieldProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
9
9
|
export {};
|
|
@@ -18,6 +18,6 @@ export interface SelectProps {
|
|
|
18
18
|
options?: (Option | string)[];
|
|
19
19
|
className?: string;
|
|
20
20
|
}
|
|
21
|
-
export declare const selectFieldClasses = "shadow appearance-none h-full bg-white block pl-3 pr-8 py-2 truncate w-full text-base cursor-pointer border border-gray-200 focus:outline-none focus:shadow-outline focus:ring-
|
|
21
|
+
export declare const selectFieldClasses = "shadow appearance-none h-full bg-white block pl-3 pr-8 py-2 truncate w-full text-base cursor-pointer border border-gray-200 focus:outline-none focus:shadow-outline focus:ring-blue-500 focus:border-blue-500 sm:text-sm rounded";
|
|
22
22
|
export declare const Select: React.FC<SelectProps>;
|
|
23
23
|
export {};
|
|
@@ -4,6 +4,6 @@ export interface TextFieldProps extends a {
|
|
|
4
4
|
error?: boolean;
|
|
5
5
|
ref?: any;
|
|
6
6
|
}
|
|
7
|
-
export declare const textFieldClasses = "shadow-inner focus:shadow-outline focus:border-
|
|
7
|
+
export declare const textFieldClasses = "shadow-inner focus:shadow-outline focus:border-blue-500 focus:outline-none block text-base placeholder:text-gray-300 px-3 py-2 text-gray-600 w-full bg-white border border-gray-200 transition-all ease-out duration-150 focus:text-gray-900 rounded";
|
|
8
8
|
export declare const BaseTextField: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
9
9
|
export {};
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import { CodeLinePlugin } from '@udecode/plate-code-block/react';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { CodeLeaf } from '../../components/plate-ui/code-leaf';
|
|
3
4
|
import { CodeSyntaxLeaf } from '../../components/plate-ui/code-syntax-leaf';
|
|
4
5
|
import { HrElement } from '../../components/plate-ui/hr-element';
|
|
5
6
|
import { LinkElement } from '../../components/plate-ui/link-element';
|
|
6
7
|
export declare const Components: () => {
|
|
7
|
-
[
|
|
8
|
+
[CodeLinePlugin.key]: React.ForwardRefExoticComponent<Omit<Omit<import("@udecode/plate/react").PlateElementProps<import("@udecode/plate").TElement, import("@udecode/plate").AnyPluginConfig>, keyof {
|
|
8
9
|
className?: string;
|
|
9
10
|
style?: React.CSSProperties;
|
|
10
11
|
}> & import("@udecode/plate").BasePluginContext<import("@udecode/plate").AnyPluginConfig> & {
|
|
@@ -22,16 +22,12 @@ interface FieldMetaProps extends React.HTMLAttributes<HTMLElement> {
|
|
|
22
22
|
index?: number;
|
|
23
23
|
tinaForm: Form;
|
|
24
24
|
field?: Field;
|
|
25
|
-
focusIntent?: boolean;
|
|
26
|
-
hoverIntent?: boolean;
|
|
27
25
|
}
|
|
28
|
-
export declare const FieldMeta: ({ name, label, description, error, margin, children, index, tinaForm, field,
|
|
29
|
-
export declare const FieldWrapper: ({ margin, children, field,
|
|
26
|
+
export declare const FieldMeta: ({ name, label, description, error, margin, children, index, tinaForm, field, ...props }: FieldMetaProps) => React.JSX.Element;
|
|
27
|
+
export declare const FieldWrapper: ({ margin, children, field, ...props }: {
|
|
30
28
|
margin: boolean;
|
|
31
29
|
children: React.ReactNode;
|
|
32
30
|
field?: Field;
|
|
33
|
-
"data-tina-field-active"?: string;
|
|
34
|
-
"data-tina-field-hovering"?: string;
|
|
35
31
|
} & Partial<React.ComponentPropsWithoutRef<"div">>) => React.JSX.Element;
|
|
36
32
|
export interface FieldLabel extends React.HTMLAttributes<HTMLLabelElement> {
|
|
37
33
|
children?: any | any[];
|
|
@@ -3,11 +3,10 @@ import * as React from 'react';
|
|
|
3
3
|
export interface FieldsBuilderProps {
|
|
4
4
|
form: Form;
|
|
5
5
|
activeFieldName?: string;
|
|
6
|
-
hoveringFieldName?: string;
|
|
7
6
|
fields: Field[];
|
|
8
7
|
padding?: boolean;
|
|
9
8
|
}
|
|
10
|
-
export declare function FieldsBuilder({ form, fields, activeFieldName,
|
|
9
|
+
export declare function FieldsBuilder({ form, fields, activeFieldName, padding, }: FieldsBuilderProps): React.JSX.Element;
|
|
11
10
|
export declare const FieldsGroup: ({ children, }: {
|
|
12
11
|
children?: any | any[];
|
|
13
12
|
}) => React.JSX.Element;
|
|
@@ -21,10 +21,9 @@ export interface Field<F extends Field = AnyField> {
|
|
|
21
21
|
* a guarantee that the given field will receive focus since that functionality
|
|
22
22
|
* needs to be built on a per-component basis.
|
|
23
23
|
*
|
|
24
|
-
* This is also a one-way
|
|
24
|
+
* This is also a one-way stree. The "active field" for a given form isn't
|
|
25
25
|
* necessarily updated when a user clicks on a new field. So you can have a
|
|
26
26
|
* field which is marked as the active field, and have focus on another field
|
|
27
27
|
*/
|
|
28
|
-
|
|
29
|
-
hoverIntent?: boolean;
|
|
28
|
+
experimental_focusIntent?: boolean;
|
|
30
29
|
}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
import { Form } from './react-tinacms';
|
|
2
2
|
import { TinaCMS } from './tina-cms';
|
|
3
|
-
export declare const ACTION_TYPES: {
|
|
4
|
-
readonly FORMS_ADD: "forms:add";
|
|
5
|
-
readonly FORMS_REMOVE: "forms:remove";
|
|
6
|
-
readonly FORMS_CLEAR: "forms:clear";
|
|
7
|
-
readonly FORMS_SET_ACTIVE_FORM_ID: "forms:set-active-form-id";
|
|
8
|
-
readonly FORMS_SET_ACTIVE_FIELD_NAME: "forms:set-active-field-name";
|
|
9
|
-
readonly FORMS_SET_HOVERED_FIELD_NAME: "forms:set-hovered-field-name";
|
|
10
|
-
readonly FORM_LISTS_ADD: "form-lists:add";
|
|
11
|
-
readonly FORM_LISTS_REMOVE: "form-lists:remove";
|
|
12
|
-
readonly FORM_LISTS_CLEAR: "form-lists:clear";
|
|
13
|
-
readonly SET_EDIT_MODE: "set-edit-mode";
|
|
14
|
-
readonly INCREMENT_OPERATION_INDEX: "increment-operation-index";
|
|
15
|
-
readonly SET_QUICK_EDITING_SUPPORTED: "set-quick-editing-supported";
|
|
16
|
-
readonly SET_QUICK_EDITING_ENABLED: "set-quick-editing-enabled";
|
|
17
|
-
readonly TOGGLE_QUICK_EDITING_ENABLED: "toggle-quick-editing-enabled";
|
|
18
|
-
readonly TOGGLE_EDIT_STATE: "toggle-edit-state";
|
|
19
|
-
readonly SIDEBAR_SET_DISPLAY_STATE: "sidebar:set-display-state";
|
|
20
|
-
readonly SIDEBAR_SET_LOADING_STATE: "sidebar:set-loading-state";
|
|
21
|
-
};
|
|
22
3
|
type FormListItem = {
|
|
23
4
|
type: 'document';
|
|
24
5
|
path: string;
|
|
@@ -41,56 +22,50 @@ type Breadcrumb = {
|
|
|
41
22
|
namespace: string[];
|
|
42
23
|
};
|
|
43
24
|
export type TinaAction = {
|
|
44
|
-
type:
|
|
25
|
+
type: 'forms:add';
|
|
45
26
|
value: Form;
|
|
46
27
|
} | {
|
|
47
|
-
type:
|
|
28
|
+
type: 'forms:remove';
|
|
48
29
|
value: string;
|
|
49
30
|
} | {
|
|
50
|
-
type:
|
|
31
|
+
type: 'forms:clear';
|
|
51
32
|
} | {
|
|
52
|
-
type:
|
|
33
|
+
type: 'form-lists:add';
|
|
53
34
|
value: FormList;
|
|
54
35
|
} | {
|
|
55
|
-
type:
|
|
36
|
+
type: 'form-lists:remove';
|
|
56
37
|
value: string;
|
|
57
38
|
} | {
|
|
58
|
-
type:
|
|
39
|
+
type: 'forms:set-active-form-id';
|
|
59
40
|
value: string;
|
|
60
41
|
} | {
|
|
61
|
-
type:
|
|
42
|
+
type: 'forms:set-active-field-name';
|
|
62
43
|
value: {
|
|
63
44
|
formId: string;
|
|
64
45
|
fieldName: string;
|
|
65
46
|
};
|
|
66
47
|
} | {
|
|
67
|
-
type:
|
|
68
|
-
value: {
|
|
69
|
-
formId: string;
|
|
70
|
-
fieldName: string | null;
|
|
71
|
-
};
|
|
72
|
-
} | {
|
|
73
|
-
type: typeof ACTION_TYPES.FORM_LISTS_CLEAR;
|
|
48
|
+
type: 'form-lists:clear';
|
|
74
49
|
} | {
|
|
75
|
-
type:
|
|
50
|
+
type: 'set-edit-mode';
|
|
76
51
|
value: 'visual' | 'basic';
|
|
77
52
|
} | {
|
|
78
|
-
type:
|
|
53
|
+
type: 'increment-operation-index';
|
|
79
54
|
} | {
|
|
80
|
-
type:
|
|
55
|
+
type: 'set-quick-editing-supported';
|
|
81
56
|
value: boolean;
|
|
82
57
|
} | {
|
|
83
|
-
type:
|
|
58
|
+
type: 'set-quick-editing-enabled';
|
|
84
59
|
value?: boolean;
|
|
85
60
|
} | {
|
|
86
|
-
type:
|
|
61
|
+
type: 'toggle-quick-editing-enabled';
|
|
87
62
|
} | {
|
|
88
|
-
type:
|
|
63
|
+
type: 'toggle-edit-state';
|
|
89
64
|
} | {
|
|
90
|
-
type:
|
|
65
|
+
type: 'sidebar:set-display-state';
|
|
91
66
|
value: TinaState['sidebarDisplayState'] | 'openOrFull';
|
|
92
67
|
} | {
|
|
93
|
-
type:
|
|
68
|
+
type: 'sidebar:set-loading-state';
|
|
94
69
|
value: boolean;
|
|
95
70
|
};
|
|
96
71
|
export interface TinaState {
|
|
@@ -108,7 +83,6 @@ export interface TinaState {
|
|
|
108
83
|
forms: {
|
|
109
84
|
activeFieldName?: string | null;
|
|
110
85
|
tinaForm: Form;
|
|
111
|
-
hoveringFieldName?: string | null;
|
|
112
86
|
}[];
|
|
113
87
|
formLists: FormList[];
|
|
114
88
|
editingMode: 'visual' | 'basic';
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "tinacms",
|
|
3
3
|
"type": "module",
|
|
4
4
|
"typings": "dist/index.d.ts",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.3.1",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"module": "./dist/index.js",
|
|
8
8
|
"exports": {
|
|
@@ -110,9 +110,9 @@
|
|
|
110
110
|
"webfontloader": "1.6.28",
|
|
111
111
|
"yup": "^1.6.1",
|
|
112
112
|
"zod": "^3.24.2",
|
|
113
|
-
"@tinacms/mdx": "2.0.
|
|
114
|
-
"@tinacms/
|
|
115
|
-
"@tinacms/
|
|
113
|
+
"@tinacms/mdx": "2.0.3",
|
|
114
|
+
"@tinacms/schema-tools": "2.3.0",
|
|
115
|
+
"@tinacms/search": "1.2.0"
|
|
116
116
|
},
|
|
117
117
|
"devDependencies": {
|
|
118
118
|
"@graphql-tools/utils": "^10.8.1",
|