tinacms 0.0.0-a690e47-20241003005744 → 0.0.0-a6b1b39-20251217041730

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.
Files changed (199) hide show
  1. package/README.md +1 -1
  2. package/dist/admin/api.d.ts +5 -1
  3. package/dist/admin/components/{Sidebar.d.ts → AdminNav.d.ts} +0 -3
  4. package/dist/admin/components/GetCollection.d.ts +2 -2
  5. package/dist/admin/components/Page.d.ts +3 -9
  6. package/dist/admin/components/ui/tooltip.d.ts +7 -0
  7. package/dist/admin/pages/CollectionCreatePage.d.ts +1 -1
  8. package/dist/admin/pages/CollectionListPage.d.ts +2 -2
  9. package/dist/admin/pages/DashboardPage.d.ts +0 -3
  10. package/dist/admin/pages/ScreenPage.d.ts +0 -3
  11. package/dist/admin/types.d.ts +3 -0
  12. package/dist/auth/AuthModal.d.ts +1 -4
  13. package/dist/auth/TinaCloudProvider.d.ts +1 -2
  14. package/dist/cache/node-cache.d.ts +6 -1
  15. package/dist/client.js +244 -147
  16. package/dist/hooks/create-page-plugin.d.ts +1 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.js +122170 -31835
  19. package/dist/internalClient/index.d.ts +28 -3
  20. package/dist/react.d.ts +14 -6
  21. package/dist/react.js +209 -192
  22. package/dist/rich-text/index.d.ts +9 -0
  23. package/dist/rich-text/index.js +235 -192
  24. package/dist/rich-text/prism.js +16 -18
  25. package/dist/rich-text/static.d.ts +154 -0
  26. package/dist/rich-text/static.js +243 -0
  27. package/dist/tina-cms.d.ts +1 -1
  28. package/dist/toolkit/components/ProgressBar.d.ts +11 -0
  29. package/dist/toolkit/components/media/media-item.d.ts +11 -1
  30. package/dist/toolkit/components/media/media-manager.d.ts +1 -1
  31. package/dist/toolkit/components/ui/breadcrumb.d.ts +11 -0
  32. package/dist/toolkit/components/ui/button.d.ts +11 -0
  33. package/dist/toolkit/components/ui/calendar.d.ts +8 -0
  34. package/dist/toolkit/components/ui/date-time-picker.d.ts +111 -0
  35. package/dist/toolkit/components/ui/dropdown-menu.d.ts +25 -0
  36. package/dist/toolkit/components/ui/input.d.ts +3 -0
  37. package/dist/toolkit/components/ui/popover.d.ts +7 -0
  38. package/dist/toolkit/components/ui/select.d.ts +13 -0
  39. package/dist/toolkit/fields/components/color-picker/block-widget.d.ts +3 -0
  40. package/dist/toolkit/fields/components/color-picker/color-input.d.ts +35 -0
  41. package/dist/toolkit/fields/components/color-picker/color-picker.d.ts +6 -2
  42. package/dist/toolkit/fields/components/color-picker/color-utils.d.ts +37 -0
  43. package/dist/toolkit/fields/components/color-picker/sketch-widget.d.ts +3 -0
  44. package/dist/toolkit/fields/components/password-field.d.ts +1 -1
  45. package/dist/toolkit/fields/components/reference/components/button.d.ts +2 -2
  46. package/dist/toolkit/fields/components/reference/components/command.d.ts +21 -33
  47. package/dist/toolkit/fields/components/reference/components/popover.d.ts +1 -1
  48. package/dist/toolkit/fields/components/reference/model/reference-link-props.d.ts +2 -0
  49. package/dist/toolkit/fields/components/reference/reference-select.d.ts +2 -2
  50. package/dist/toolkit/fields/components/select.d.ts +2 -2
  51. package/dist/toolkit/fields/components/text-field.d.ts +1 -1
  52. package/dist/toolkit/fields/plugins/button-toggle-field-plugin.d.ts +2 -2
  53. package/dist/toolkit/fields/plugins/checkbox-group-field-plugin.d.ts +2 -2
  54. package/dist/toolkit/fields/plugins/color-field-plugin.d.ts +1 -0
  55. package/dist/toolkit/fields/plugins/date-field-plugin.d.ts +0 -2
  56. package/dist/toolkit/fields/plugins/dnd-kit-wrapper.d.ts +49 -0
  57. package/dist/toolkit/fields/plugins/group-field-plugin.d.ts +1 -1
  58. package/dist/toolkit/fields/plugins/group-list-field-plugin.d.ts +3 -1
  59. package/dist/toolkit/fields/plugins/list-field-meta.d.ts +1 -1
  60. package/dist/toolkit/fields/plugins/list-field-plugin.d.ts +3 -0
  61. package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +5 -2
  62. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/editor.d.ts +20 -18
  63. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/fixed-toolbar-buttons.d.ts +0 -4
  64. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/blockquote-element.d.ts +14 -10
  65. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/button.d.ts +5 -5
  66. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block/code-block-element.d.ts +17 -0
  67. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block/error-message.d.ts +6 -0
  68. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block-combobox.d.ts +6 -0
  69. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block-toolbar-button.d.ts +6 -6
  70. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-leaf.d.ts +2 -11
  71. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-line-element.d.ts +14 -10
  72. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-syntax-leaf.d.ts +2 -11
  73. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/command.d.ts +112 -0
  74. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/dialog.d.ts +12 -0
  75. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/dropdown-menu.d.ts +10 -10
  76. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/floating-toolbar.d.ts +2 -2
  77. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/hr-element.d.ts +3 -0
  78. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/hr-toolbar-button.d.ts +18 -0
  79. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/icons.d.ts +4 -1
  80. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/image-toolbar-button.d.ts +6 -6
  81. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/indent-list-toolbar-button.d.ts +6 -7
  82. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/inline-combobox.d.ts +1 -1
  83. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/input.d.ts +3 -3
  84. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/link-element.d.ts +4 -11
  85. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/link-floating-toolbar.d.ts +4 -5
  86. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/link-toolbar-button.d.ts +4 -4
  87. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/list-element.d.ts +28 -11
  88. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mark-toolbar-button.d.ts +4 -18
  89. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mermaid-element.d.ts +4 -0
  90. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mermaid-toolbar-button.d.ts +18 -0
  91. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/paragraph-element.d.ts +15 -0
  92. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/popover.d.ts +7 -2
  93. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/quote-toolbar-button.d.ts +6 -6
  94. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/raw-markdown-toolbar-button.d.ts +6 -6
  95. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/resizable.d.ts +42 -0
  96. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/separator.d.ts +2 -2
  97. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/slash-input-element.d.ts +15 -11
  98. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/block-selection.d.ts +6 -0
  99. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-cell-element.d.ts +33 -0
  100. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-dropdown-menu.d.ts +4 -0
  101. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-element.d.ts +20 -0
  102. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/table/table-row-element.d.ts +15 -0
  103. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/text-area.d.ts +5 -0
  104. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/toolbar.d.ts +7 -7
  105. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/use-floating-toolbar-hook.d.ts +10 -0
  106. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/use-floating-toolbar-state.d.ts +22 -0
  107. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/hooks/use-create-editor.d.ts +6 -0
  108. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/index.d.ts +1 -1
  109. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/autoformat/autoformat-block.d.ts +1 -1
  110. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/autoformat/autoformat-lists.d.ts +1 -1
  111. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/autoformat/autoformat-marks.d.ts +1 -1
  112. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/autoformat/autoformat-utils.d.ts +3 -5
  113. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/common.d.ts +12 -6
  114. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/formatting.d.ts +18 -2
  115. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/index.d.ts +0 -1
  116. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-html-block/index.d.ts +6 -0
  117. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-img-plugin/index.d.ts +2 -2
  118. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-invalid-markdown-plugin/index.d.ts +5 -5
  119. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-mdx-plugins/component.d.ts +7 -4
  120. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-mdx-plugins/index.d.ts +3 -5
  121. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/editor-plugins.d.ts +520 -0
  122. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +264 -156
  123. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/floating-toolbar-plugin.d.ts +1 -0
  124. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-overrides.d.ts +11 -3
  125. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-provider.d.ts +3 -3
  126. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/transforms/is-url.d.ts +1 -2
  127. package/dist/toolkit/fields/plugins/radio-group-field-plugin.d.ts +2 -2
  128. package/dist/toolkit/fields/plugins/select-field-plugin.d.ts +2 -2
  129. package/dist/toolkit/fields/plugins/toggle-field-plugin.d.ts +2 -2
  130. package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
  131. package/dist/toolkit/form-builder/create-branch-modal.d.ts +13 -0
  132. package/dist/toolkit/form-builder/editorial-workflow-constants.d.ts +17 -0
  133. package/dist/toolkit/form-builder/fields-builder.d.ts +1 -1
  134. package/dist/toolkit/form-builder/form-builder.d.ts +8 -9
  135. package/dist/toolkit/form-builder/index.d.ts +1 -0
  136. package/dist/toolkit/forms/field.d.ts +3 -0
  137. package/dist/toolkit/forms/form.d.ts +22 -3
  138. package/dist/toolkit/git-client/git-client.d.ts +25 -2
  139. package/dist/toolkit/git-client/git-file.d.ts +18 -0
  140. package/dist/toolkit/git-client/git-media-store.d.ts +13 -0
  141. package/dist/toolkit/git-client/use-git-file.d.ts +4 -0
  142. package/dist/toolkit/icons/Tina.d.ts +0 -5
  143. package/dist/toolkit/icons/TinaExtended.d.ts +4 -0
  144. package/dist/toolkit/icons/index.d.ts +1 -0
  145. package/dist/toolkit/index.d.ts +1 -1
  146. package/dist/toolkit/plugin-branch-switcher/branch-button.d.ts +4 -1
  147. package/dist/toolkit/plugin-branch-switcher/branch-switcher-legacy.d.ts +1 -1
  148. package/dist/toolkit/plugin-branch-switcher/branch-switcher.d.ts +1 -1
  149. package/dist/toolkit/plugin-branch-switcher/index.d.ts +0 -1
  150. package/dist/toolkit/react-cloud-config/cloud-config-plugin.d.ts +3 -3
  151. package/dist/toolkit/react-modals/modal/modal-actions.d.ts +2 -1
  152. package/dist/toolkit/react-modals/modal/modal-header.d.ts +1 -1
  153. package/dist/toolkit/react-sidebar/components/NavMenuTrigger.d.ts +11 -0
  154. package/dist/toolkit/react-sidebar/components/VersionInfo.d.ts +2 -0
  155. package/dist/toolkit/react-sidebar/components/badge.d.ts +6 -0
  156. package/dist/toolkit/react-sidebar/components/callout.d.ts +5 -0
  157. package/dist/toolkit/react-sidebar/components/form-list.d.ts +1 -1
  158. package/dist/toolkit/react-sidebar/components/local-warning.d.ts +3 -1
  159. package/dist/toolkit/react-sidebar/components/nav-components.d.ts +11 -0
  160. package/dist/toolkit/react-sidebar/components/nav-context.d.ts +15 -0
  161. package/dist/toolkit/react-sidebar/components/nav.d.ts +6 -3
  162. package/dist/toolkit/react-sidebar/components/resize-handle.d.ts +0 -5
  163. package/dist/toolkit/react-sidebar/components/sidebar-body.d.ts +33 -11
  164. package/dist/toolkit/react-sidebar/components/sidebar-loading-placeholder.d.ts +2 -0
  165. package/dist/toolkit/react-sidebar/components/sidebar-no-forms-placeholder.d.ts +2 -0
  166. package/dist/toolkit/react-sidebar/components/sidebar.d.ts +0 -7
  167. package/dist/toolkit/react-sidebar/components/sync-status.d.ts +5 -8
  168. package/dist/toolkit/react-sidebar/index.d.ts +4 -1
  169. package/dist/toolkit/react-sidebar/sidebar.d.ts +2 -2
  170. package/dist/toolkit/styles/button.d.ts +2 -2
  171. package/dist/toolkit/styles/dropdown-button.d.ts +75 -0
  172. package/dist/toolkit/styles/index.d.ts +1 -0
  173. package/dist/toolkit/tina-cms.d.ts +3 -3
  174. package/dist/toolkit/tina-state.d.ts +15 -0
  175. package/dist/unifiedClient/index.d.ts +9 -2
  176. package/dist/utils/cn.d.ts +2 -0
  177. package/dist/utils/index.d.ts +1 -0
  178. package/package.json +91 -113
  179. package/dist/__vite-browser-external-d06ac358.mjs +0 -4
  180. package/dist/admin/pages/IndexingPage.d.ts +0 -2
  181. package/dist/client.mjs +0 -109
  182. package/dist/index.mjs +0 -33189
  183. package/dist/node-cache-7fa2452c.mjs +0 -43
  184. package/dist/react.mjs +0 -234
  185. package/dist/rich-text/index.mjs +0 -210
  186. package/dist/rich-text/prism.mjs +0 -16
  187. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/code-block-element.d.ts +0 -11
  188. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/core/with-correct-void-behavior.d.ts +0 -8
  189. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-code-block/index.d.ts +0 -3
  190. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/create-link-plugin/index.d.ts +0 -15
  191. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/soft-break/create-soft-break-plugin.d.ts +0 -7
  192. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/soft-break/index.d.ts +0 -6
  193. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/soft-break/on-key-down-soft-break.d.ts +0 -5
  194. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/soft-break/types.d.ts +0 -11
  195. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/code-block/index.d.ts +0 -9
  196. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/transforms/insert-empty-block.d.ts +0 -2
  197. package/dist/toolkit/plugin-branch-switcher/branch-banner.d.ts +0 -2
  198. package/dist/toolkit/react-datetime/DateTime.d.ts +0 -135
  199. package/dist/toolkit/react-sidebar/components/no-forms-placeholder.d.ts +0 -8
@@ -1,10 +1,10 @@
1
- import { TokenObject } from '../auth/authenticate';
2
1
  import { BranchData, EventBus } from '@tinacms/toolkit';
3
2
  import { DocumentNode, GraphQLSchema } from 'graphql';
3
+ import { TokenObject } from '../auth/authenticate';
4
+ import { AuthProvider, Schema, TinaSchema } from '@tinacms/schema-tools';
5
+ import { SearchClient } from '@tinacms/search/index-client';
4
6
  import gql from 'graphql-tag';
5
- import { TinaSchema, Schema, AuthProvider } from '@tinacms/schema-tools';
6
7
  import { TinaCloudProject } from './types';
7
- import { SearchClient } from '@tinacms/search/dist/index-client';
8
8
  export * from './authProvider';
9
9
  export type OnLoginFunc = (args: {
10
10
  token?: TokenObject;
@@ -141,6 +141,26 @@ export declare class Client {
141
141
  }[]>;
142
142
  usingProtectedBranch(): boolean;
143
143
  createBranch({ baseBranch, branchName }: BranchData): Promise<string>;
144
+ getLatestVersion(): Promise<LatestVersionResponse>;
145
+ /**
146
+ * Initiate and poll for the results of an editorial workflow operation
147
+ *
148
+ * @param options Editorial workflow options
149
+ * @returns Object with branch and PR info when complete
150
+ */
151
+ executeEditorialWorkflow(options: {
152
+ branchName: string;
153
+ baseBranch: string;
154
+ prTitle?: string;
155
+ graphQLContentOp?: {
156
+ query: string;
157
+ variables: Record<string, unknown>;
158
+ };
159
+ onStatusUpdate?: (status: {
160
+ status: string;
161
+ message?: string;
162
+ }) => void;
163
+ }): Promise<any>;
144
164
  }
145
165
  export declare const DEFAULT_LOCAL_TINA_GQL_SERVER_URL = "http://localhost:4001/graphql";
146
166
  export declare class LocalClient extends Client {
@@ -185,3 +205,8 @@ export declare class LocalSearchClient implements SearchClient {
185
205
  put(docs: any[]): Promise<any>;
186
206
  supportsClientSideIndexing(): boolean;
187
207
  }
208
+ export type PackageVersionInfo = {
209
+ version: string;
210
+ publishedAt: string;
211
+ };
212
+ export type LatestVersionResponse = Record<string, PackageVersionInfo>;
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;
@@ -14,16 +15,23 @@ export declare function useEditState(): {
14
15
  * to signal to Tina which DOM element the field
15
16
  * is working with.
16
17
  */
17
- export declare const tinaField: <T extends (object & {
18
+ /**
19
+ * Generate a field identifier for Tina to associate DOM elements with form fields.
20
+ * Format: "queryId---path.to.field" or "queryId---path.to.array.index"
21
+ */
22
+ export declare const tinaField: <T extends {
18
23
  _content_source?: {
19
24
  queryId: string;
20
25
  path: (number | string)[];
21
26
  };
22
- }) | undefined | null>(object: T, property?: keyof Omit<NonNullable<T>, "__typename" | "_sys">, index?: number) => string;
23
- export declare const addMetadata: <T extends object>(id: string, object: T & {
24
- type?: string;
25
- _content_source?: unknown;
26
- }, path: (string | number)[]) => T;
27
+ } | Record<string, unknown> | null | undefined>(object: T, property?: keyof Omit<NonNullable<T>, "__typename" | "_sys">, index?: number) => string;
28
+ /**
29
+ * FIX: This function is updated to be more robust. It explicitly checks for
30
+ * `null` and `String` objects to prevent them from being processed as
31
+ * iterable objects, which is the root cause of the "Objects are not valid
32
+ * as a React child" error.
33
+ */
34
+ export declare const addMetadata: <T extends object>(id: string, obj: T, path?: (string | number)[]) => T;
27
35
  /**
28
36
  * This is a pretty rudimentary approach to hashing the query and variables to
29
37
  * ensure we treat multiple queries on the page uniquely. It's possible
package/dist/react.js CHANGED
@@ -1,64 +1,70 @@
1
- (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react")) : typeof define === "function" && define.amd ? define(["exports", "react"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP));
3
- })(this, function(exports2, React) {
4
- "use strict";
5
- function useTina(props) {
6
- const stringifiedQuery = JSON.stringify({
7
- query: props.query,
8
- variables: props.variables
1
+ import React from "react";
2
+ function useTina(props) {
3
+ const stringifiedQuery = JSON.stringify({
4
+ query: props.query,
5
+ variables: props.variables
6
+ });
7
+ const id = React.useMemo(
8
+ () => hashFromQuery(stringifiedQuery),
9
+ [stringifiedQuery]
10
+ );
11
+ const processedData = React.useMemo(() => {
12
+ if (props.data) {
13
+ const dataCopy = JSON.parse(JSON.stringify(props.data));
14
+ return addMetadata(id, dataCopy, []);
15
+ }
16
+ }, [props.data, id]);
17
+ const [data, setData] = React.useState(processedData);
18
+ const [isClient, setIsClient] = React.useState(false);
19
+ const [quickEditEnabled, setQuickEditEnabled] = React.useState(false);
20
+ const [isInTinaIframe, setIsInTinaIframe] = React.useState(false);
21
+ React.useEffect(() => {
22
+ setIsClient(true);
23
+ setData(processedData);
24
+ parent.postMessage({
25
+ type: "url-changed"
9
26
  });
10
- const id = React.useMemo(
11
- () => hashFromQuery(stringifiedQuery),
12
- [stringifiedQuery]
13
- );
14
- const [data, setData] = React.useState(props.data);
15
- const [isClient, setIsClient] = React.useState(false);
16
- const [quickEditEnabled, setQuickEditEnabled] = React.useState(false);
17
- const [isInTinaIframe, setIsInTinaIframe] = React.useState(false);
18
- React.useEffect(() => {
19
- setIsClient(true);
20
- setData(props.data);
21
- }, [id]);
22
- React.useEffect(() => {
23
- if (quickEditEnabled) {
24
- let mouseDownHandler = function(e) {
25
- const attributeNames = e.target.getAttributeNames();
26
- const tinaAttribute = attributeNames.find(
27
- (name) => name.startsWith("data-tina-field")
27
+ }, [id, processedData]);
28
+ React.useEffect(() => {
29
+ if (quickEditEnabled) {
30
+ let mouseDownHandler = function(e) {
31
+ const attributeNames = e.target.getAttributeNames();
32
+ const tinaAttribute = attributeNames.find(
33
+ (name) => name.startsWith("data-tina-field")
34
+ );
35
+ let fieldName;
36
+ if (tinaAttribute) {
37
+ e.preventDefault();
38
+ e.stopPropagation();
39
+ fieldName = e.target.getAttribute(tinaAttribute);
40
+ } else {
41
+ const ancestor = e.target.closest(
42
+ "[data-tina-field], [data-tina-field-overlay]"
28
43
  );
29
- let fieldName;
30
- if (tinaAttribute) {
31
- e.preventDefault();
32
- e.stopPropagation();
33
- fieldName = e.target.getAttribute(tinaAttribute);
34
- } else {
35
- const ancestor = e.target.closest(
36
- "[data-tina-field], [data-tina-field-overlay]"
44
+ if (ancestor) {
45
+ const attributeNames2 = ancestor.getAttributeNames();
46
+ const tinaAttribute2 = attributeNames2.find(
47
+ (name) => name.startsWith("data-tina-field")
37
48
  );
38
- if (ancestor) {
39
- const attributeNames2 = ancestor.getAttributeNames();
40
- const tinaAttribute2 = attributeNames2.find(
41
- (name) => name.startsWith("data-tina-field")
42
- );
43
- if (tinaAttribute2) {
44
- e.preventDefault();
45
- e.stopPropagation();
46
- fieldName = ancestor.getAttribute(tinaAttribute2);
47
- }
49
+ if (tinaAttribute2) {
50
+ e.preventDefault();
51
+ e.stopPropagation();
52
+ fieldName = ancestor.getAttribute(tinaAttribute2);
48
53
  }
49
54
  }
50
- if (fieldName) {
51
- if (isInTinaIframe) {
52
- parent.postMessage(
53
- { type: "field:selected", fieldName },
54
- window.location.origin
55
- );
56
- }
55
+ }
56
+ if (fieldName) {
57
+ if (isInTinaIframe) {
58
+ parent.postMessage(
59
+ { type: "field:selected", fieldName },
60
+ window.location.origin
61
+ );
57
62
  }
58
- };
59
- const style = document.createElement("style");
60
- style.type = "text/css";
61
- style.textContent = `
63
+ }
64
+ };
65
+ const style = document.createElement("style");
66
+ style.type = "text/css";
67
+ style.textContent = `
62
68
  [data-tina-field] {
63
69
  outline: 2px dashed rgba(34,150,254,0.5);
64
70
  transition: box-shadow ease-out 150ms;
@@ -89,149 +95,160 @@
89
95
  opacity: 1;
90
96
  }
91
97
  `;
92
- document.head.appendChild(style);
93
- document.body.classList.add("__tina-quick-editing-enabled");
94
- document.addEventListener("click", mouseDownHandler, true);
95
- return () => {
96
- document.removeEventListener("click", mouseDownHandler, true);
97
- document.body.classList.remove("__tina-quick-editing-enabled");
98
- style.remove();
99
- };
100
- }
101
- }, [quickEditEnabled, isInTinaIframe]);
102
- React.useEffect(() => {
103
- parent.postMessage({ type: "open", ...props, id }, window.location.origin);
104
- window.addEventListener("message", (event) => {
105
- if (event.data.type === "quickEditEnabled") {
106
- setQuickEditEnabled(event.data.value);
107
- }
108
- if (event.data.id === id && event.data.type === "updateData") {
109
- setData(event.data.data);
110
- setIsInTinaIframe(true);
111
- const anyTinaField = document.querySelector("[data-tina-field]");
112
- if (anyTinaField) {
113
- parent.postMessage(
114
- { type: "quick-edit", value: true },
115
- window.location.origin
116
- );
117
- } else {
118
- parent.postMessage(
119
- { type: "quick-edit", value: false },
120
- window.location.origin
121
- );
122
- }
123
- }
124
- });
98
+ document.head.appendChild(style);
99
+ document.body.classList.add("__tina-quick-editing-enabled");
100
+ document.addEventListener("click", mouseDownHandler, true);
125
101
  return () => {
126
- parent.postMessage({ type: "close", id }, window.location.origin);
102
+ document.removeEventListener("click", mouseDownHandler, true);
103
+ document.body.classList.remove("__tina-quick-editing-enabled");
104
+ style.remove();
127
105
  };
128
- }, [id, setQuickEditEnabled]);
129
- return { data, isClient };
130
- }
131
- function useEditState() {
132
- const [edit, setEdit] = React.useState(false);
133
- React.useEffect(() => {
134
- if (typeof window !== "undefined") {
135
- parent.postMessage({ type: "isEditMode" }, window.location.origin);
136
- window.addEventListener("message", (event) => {
137
- var _a;
138
- if (((_a = event.data) == null ? void 0 : _a.type) === "tina:editMode") {
139
- setEdit(true);
140
- }
141
- });
142
- }
143
- }, []);
144
- return { edit };
145
- }
146
- const tinaField = (object, property, index) => {
147
- var _a, _b, _c;
148
- if (!object) {
149
- return "";
150
106
  }
151
- if (object._content_source) {
152
- if (!property) {
153
- return [
154
- (_a = object._content_source) == null ? void 0 : _a.queryId,
155
- object._content_source.path.join(".")
156
- ].join("---");
157
- }
158
- if (typeof index === "number") {
159
- return [
160
- (_b = object._content_source) == null ? void 0 : _b.queryId,
161
- [...object._content_source.path, property, index].join(".")
162
- ].join("---");
163
- }
164
- return [
165
- (_c = object._content_source) == null ? void 0 : _c.queryId,
166
- [...object._content_source.path, property].join(".")
167
- ].join("---");
107
+ }, [quickEditEnabled, isInTinaIframe]);
108
+ React.useEffect(() => {
109
+ if (props == null ? void 0 : props.experimental___selectFormByFormId) {
110
+ parent.postMessage({
111
+ type: "user-select-form",
112
+ formId: props.experimental___selectFormByFormId()
113
+ });
168
114
  }
169
- return "";
170
- };
171
- const addMetadata = (id, object, path) => {
172
- Object.entries(object).forEach(([key, value]) => {
173
- if (Array.isArray(value)) {
174
- value.forEach((item, index) => {
175
- if (isScalarOrUndefined(item)) {
176
- return;
177
- }
178
- if (Array.isArray(item)) {
179
- return;
180
- }
181
- const itemObject = item;
182
- addMetadata(id, itemObject, [...path, key, index]);
183
- });
184
- } else {
185
- if (isScalarOrUndefined(value)) {
186
- return;
115
+ }, [id]);
116
+ React.useEffect(() => {
117
+ const { experimental___selectFormByFormId, ...rest } = props;
118
+ parent.postMessage({ type: "open", ...rest, id }, window.location.origin);
119
+ const handleMessage = (event) => {
120
+ if (event.data.type === "quickEditEnabled") {
121
+ setQuickEditEnabled(event.data.value);
122
+ }
123
+ if (event.data.id === id && event.data.type === "updateData") {
124
+ const rawData = event.data.data;
125
+ const newlyProcessedData = addMetadata(
126
+ id,
127
+ JSON.parse(JSON.stringify(rawData)),
128
+ []
129
+ );
130
+ setData(newlyProcessedData);
131
+ setIsInTinaIframe(true);
132
+ const anyTinaField = document.querySelector("[data-tina-field]");
133
+ if (anyTinaField) {
134
+ parent.postMessage(
135
+ { type: "quick-edit", value: true },
136
+ window.location.origin
137
+ );
138
+ } else {
139
+ parent.postMessage(
140
+ { type: "quick-edit", value: false },
141
+ window.location.origin
142
+ );
187
143
  }
188
- const itemObject = value;
189
- addMetadata(id, itemObject, [...path, key]);
190
144
  }
191
- });
192
- if ((object == null ? void 0 : object.type) === "root") {
193
- return;
194
- }
195
- object._content_source = {
196
- queryId: id,
197
- path
198
145
  };
199
- return object;
200
- };
201
- function isScalarOrUndefined(value) {
202
- const type = typeof value;
203
- if (type === "string")
204
- return true;
205
- if (type === "number")
206
- return true;
207
- if (type === "boolean")
208
- return true;
209
- if (type === "undefined")
210
- return true;
211
- if (value == null)
212
- return true;
213
- if (value instanceof String)
214
- return true;
215
- if (value instanceof Number)
216
- return true;
217
- if (value instanceof Boolean)
218
- return true;
219
- return false;
146
+ window.addEventListener("message", handleMessage);
147
+ return () => {
148
+ window.removeEventListener("message", handleMessage);
149
+ parent.postMessage({ type: "close", id }, window.location.origin);
150
+ };
151
+ }, [id, setQuickEditEnabled]);
152
+ return { data, isClient };
153
+ }
154
+ function useEditState() {
155
+ const [edit, setEdit] = React.useState(false);
156
+ React.useEffect(() => {
157
+ if (typeof window !== "undefined") {
158
+ parent.postMessage({ type: "isEditMode" }, window.location.origin);
159
+ window.addEventListener("message", (event) => {
160
+ var _a;
161
+ if (((_a = event.data) == null ? void 0 : _a.type) === "tina:editMode") {
162
+ setEdit(true);
163
+ }
164
+ });
165
+ }
166
+ }, []);
167
+ return { edit };
168
+ }
169
+ const tinaField = (object, property, index) => {
170
+ const contentSource = object == null ? void 0 : object._content_source;
171
+ if (!contentSource) {
172
+ return "";
173
+ }
174
+ const { queryId, path } = contentSource;
175
+ if (!property) {
176
+ return `${queryId}---${path.join(".")}`;
177
+ }
178
+ const fullPath = typeof index === "number" ? [...path, property, index] : [...path, property];
179
+ return `${queryId}---${fullPath.join(".")}`;
180
+ };
181
+ const addMetadata = (id, obj, path = []) => {
182
+ if (obj === null) {
183
+ return obj;
184
+ }
185
+ if (isScalarOrUndefined(obj)) {
186
+ return obj;
220
187
  }
221
- const hashFromQuery = (input) => {
222
- let hash = 0;
223
- for (let i = 0; i < input.length; i++) {
224
- const char = input.charCodeAt(i);
225
- hash = (hash << 5) - hash + char & 4294967295;
188
+ if (obj instanceof String) {
189
+ return obj.valueOf();
190
+ }
191
+ if (Array.isArray(obj)) {
192
+ return obj.map(
193
+ (item, index) => addMetadata(id, item, [...path, index])
194
+ );
195
+ }
196
+ const transformedObj = {};
197
+ for (const [key, value] of Object.entries(obj)) {
198
+ const currentPath = [...path, key];
199
+ if ([
200
+ "__typename",
201
+ "_sys",
202
+ "_internalSys",
203
+ "_values",
204
+ "_internalValues",
205
+ "_content_source",
206
+ "_tina_metadata"
207
+ ].includes(key)) {
208
+ transformedObj[key] = value;
209
+ } else {
210
+ transformedObj[key] = addMetadata(id, value, currentPath);
226
211
  }
227
- const nonNegativeHash = Math.abs(hash);
228
- const alphanumericHash = nonNegativeHash.toString(36);
229
- return alphanumericHash;
230
- };
231
- exports2.addMetadata = addMetadata;
232
- exports2.hashFromQuery = hashFromQuery;
233
- exports2.tinaField = tinaField;
234
- exports2.useEditState = useEditState;
235
- exports2.useTina = useTina;
236
- Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
237
- });
212
+ }
213
+ if (transformedObj && typeof transformedObj === "object" && "type" in transformedObj && transformedObj.type === "root") {
214
+ return transformedObj;
215
+ }
216
+ return { ...transformedObj, _content_source: { queryId: id, path } };
217
+ };
218
+ function isScalarOrUndefined(value) {
219
+ const type = typeof value;
220
+ if (type === "string")
221
+ return true;
222
+ if (type === "number")
223
+ return true;
224
+ if (type === "boolean")
225
+ return true;
226
+ if (type === "undefined")
227
+ return true;
228
+ if (value == null)
229
+ return true;
230
+ if (value instanceof String)
231
+ return true;
232
+ if (value instanceof Number)
233
+ return true;
234
+ if (value instanceof Boolean)
235
+ return true;
236
+ return false;
237
+ }
238
+ const hashFromQuery = (input) => {
239
+ let hash = 0;
240
+ for (let i = 0; i < input.length; i++) {
241
+ const char = input.charCodeAt(i);
242
+ hash = (hash << 5) - hash + char & 4294967295;
243
+ }
244
+ const nonNegativeHash = Math.abs(hash);
245
+ const alphanumericHash = nonNegativeHash.toString(36);
246
+ return alphanumericHash;
247
+ };
248
+ export {
249
+ addMetadata,
250
+ hashFromQuery,
251
+ tinaField,
252
+ useEditState,
253
+ useTina
254
+ };
@@ -58,13 +58,22 @@ type BaseComponents = {
58
58
  lic?: {
59
59
  children: JSX.Element;
60
60
  };
61
+ /**
62
+ * @deprecated Use `blockquote` instead. This was incorrectly named and will be removed in a future version.
63
+ */
61
64
  block_quote?: {
62
65
  children: JSX.Element;
63
66
  };
67
+ blockquote?: {
68
+ children: JSX.Element;
69
+ };
64
70
  code_block?: {
65
71
  lang?: string;
66
72
  value: string;
67
73
  };
74
+ mermaid?: {
75
+ value: string;
76
+ };
68
77
  img?: {
69
78
  url: string;
70
79
  caption?: string;