tinacms 0.0.0-fbcd928-20241024223724 → 0.0.0-fd664d8-20250407054012
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/README.md +1 -1
- package/dist/admin/api.d.ts +1 -0
- package/dist/admin/components/GetCollection.d.ts +2 -2
- package/dist/auth/TinaCloudProvider.d.ts +1 -1
- package/dist/cache/node-cache.d.ts +1 -0
- package/dist/client.js +100 -62
- package/dist/client.mjs +59 -36
- package/dist/hooks/create-page-plugin.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2794 -1557
- package/dist/index.mjs +2506 -1269
- package/dist/internalClient/index.d.ts +3 -3
- package/dist/node-cache-5e8db9f0.mjs +63 -0
- package/dist/react.d.ts +1 -0
- package/dist/react.js +13 -1
- package/dist/react.mjs +13 -1
- package/dist/toolkit/components/media/media-manager.d.ts +1 -1
- package/dist/toolkit/fields/components/reference/reference-select.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +4 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/indent-list-toolbar-button.d.ts +17 -5
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mark-toolbar-button.d.ts +4 -18
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/index.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +6 -11
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-overrides.d.ts +5 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-provider.d.ts +2 -2
- package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
- package/dist/toolkit/plugin-branch-switcher/branch-switcher-legacy.d.ts +1 -1
- package/dist/toolkit/plugin-branch-switcher/branch-switcher.d.ts +1 -1
- package/dist/toolkit/react-cloud-config/cloud-config-plugin.d.ts +3 -3
- package/dist/toolkit/react-sidebar/components/sidebar-body.d.ts +5 -4
- package/dist/toolkit/react-sidebar/components/sidebar-loading-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/components/sidebar-no-forms-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/sidebar.d.ts +2 -2
- package/dist/toolkit/tina-state.d.ts +4 -0
- package/dist/unifiedClient/index.d.ts +8 -1
- package/package.json +40 -40
- package/dist/__vite-browser-external-d06ac358.mjs +0 -4
- package/dist/node-cache-7fa2452c.mjs +0 -43
- package/dist/toolkit/react-sidebar/components/no-forms-placeholder.d.ts +0 -8
package/dist/index.mjs
CHANGED
|
@@ -6,21 +6,21 @@ var __publicField = (obj, key, value) => {
|
|
|
6
6
|
};
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import React__default, { useState, useCallback, useEffect, useRef, createContext, forwardRef, useContext, useMemo, startTransition
|
|
10
|
-
import { createPortal
|
|
9
|
+
import React__default, { useState, useCallback, useEffect, useRef, createContext, forwardRef, useContext, useMemo, startTransition } from "react";
|
|
10
|
+
import { createPortal } from "react-dom";
|
|
11
11
|
import { withRef, cn as cn$1, withVariants, withProps, withCn, createPrimitiveElement } from "@udecode/cn";
|
|
12
|
-
import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin,
|
|
13
|
-
import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, useMarkToolbarButtonState, useMarkToolbarButton,
|
|
12
|
+
import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createBasicMarksPlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin, createUnderlinePlugin, createListPlugin, createIndentListPlugin, createHorizontalRulePlugin, createNodeIdPlugin, createTablePlugin, getListItemEntry, useListToolbarButtonState, useListToolbarButton } from "@udecode/plate";
|
|
13
|
+
import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, insertEmptyElement, useMarkToolbarButtonState, useMarkToolbarButton, usePlateSelectors, useEventEditorSelectors, PortalBody, useFormInputProps, createPlugins, Plate } from "@udecode/plate-common";
|
|
14
14
|
import { ELEMENT_SLASH_INPUT, createSlashPlugin } from "@udecode/plate-slash-command";
|
|
15
15
|
import { useSelected, useReadOnly, ReactEditor } from "slate-react";
|
|
16
16
|
import { useCodeBlockElementState, useCodeSyntaxLeaf, ELEMENT_CODE_BLOCK as ELEMENT_CODE_BLOCK$1 } from "@udecode/plate-code-block";
|
|
17
17
|
import MonacoEditor, { loader, useMonaco } from "@monaco-editor/react";
|
|
18
|
-
import { Combobox, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
|
|
18
|
+
import { Combobox as Combobox$1, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
|
|
19
19
|
import { cva } from "class-variance-authority";
|
|
20
20
|
import { Eye, SquarePen, Plus, AlignCenter as AlignCenter$1, AlignJustify, AlignLeft as AlignLeft$1, AlignRight as AlignRight$1, ChevronDown, PaintBucket, Quote, Check, ChevronRight, ChevronsUpDown, X, FileCode, Baseline, RectangleVertical, Combine, Ungroup, MessageSquare, MessageSquarePlus, Trash, GripVertical, Edit2, Smile, ExternalLink, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Indent, Keyboard, WrapText, Minus, MoreHorizontal, Outdent, Pilcrow, RotateCcw, RectangleHorizontal, Search, Settings, Strikethrough, Subscript, Superscript, Table, Text, Underline, Link2Off, Moon, SunMedium, Twitter } from "lucide-react";
|
|
21
21
|
import mermaid from "mermaid";
|
|
22
22
|
import { ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4 as ELEMENT_H4$1, ELEMENT_H5 as ELEMENT_H5$1, ELEMENT_H6 as ELEMENT_H6$1 } from "@udecode/plate-heading";
|
|
23
|
-
import { useComboboxContext, Combobox as Combobox$
|
|
23
|
+
import { useComboboxContext, Combobox as Combobox$2, useComboboxStore, ComboboxProvider, Portal, ComboboxPopover, ComboboxItem } from "@ariakit/react";
|
|
24
24
|
import { useHTMLInputCursorState, useComboboxInput, filterWords } from "@udecode/plate-combobox";
|
|
25
25
|
import { useTableCellElementState, useTableCellElement, useTableCellElementResizableState, useTableCellElementResizable, useTableBordersDropdownMenuContentState, useTableMergeState, TableProvider, useTableElementState, useTableElement, mergeTableCells, unmergeTableCells, ELEMENT_TABLE as ELEMENT_TABLE$1, getTableColumnCount, insertTable, deleteTable, insertTableColumn, deleteColumn, insertTableRow, deleteRow } from "@udecode/plate-table";
|
|
26
26
|
import { ResizeHandle as ResizeHandle$1 } from "@udecode/plate-resizable";
|
|
@@ -43,6 +43,7 @@ import { twMerge } from "tailwind-merge";
|
|
|
43
43
|
import { Command as Command$1 } from "cmdk";
|
|
44
44
|
import { isHotkey } from "is-hotkey";
|
|
45
45
|
import { Transforms, Element, Range, Path, Node, Editor as Editor$1 } from "slate";
|
|
46
|
+
import { useWindowWidth } from "@react-hook/window-size";
|
|
46
47
|
import get from "lodash.get";
|
|
47
48
|
import moment from "moment";
|
|
48
49
|
import { formatDistanceToNow } from "date-fns";
|
|
@@ -52,14 +53,13 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
|
52
53
|
import { ELEMENT_PARAGRAPH as ELEMENT_PARAGRAPH$1 } from "@udecode/plate-paragraph";
|
|
53
54
|
import { ELEMENT_BLOCKQUOTE as ELEMENT_BLOCKQUOTE$1 } from "@udecode/plate-block-quote";
|
|
54
55
|
import { useFloatingToolbarState, offset, flip, useFloatingToolbar } from "@udecode/plate-floating";
|
|
55
|
-
import { useWindowWidth } from "@react-hook/window-size";
|
|
56
56
|
import { getIntrospectionQuery, buildClientSchema, print, parse as parse$3, buildSchema } from "graphql";
|
|
57
|
-
import gql from "graphql-tag";
|
|
58
57
|
import { TinaSchema, addNamespaceToSchema, parseURL, resolveForm, normalizePath, validateSchema } from "@tinacms/schema-tools";
|
|
59
58
|
import { NAMER, resolveField } from "@tinacms/schema-tools";
|
|
60
|
-
import
|
|
59
|
+
import gql from "graphql-tag";
|
|
61
60
|
import { diff } from "@graphql-inspector/core";
|
|
62
|
-
import
|
|
61
|
+
import * as yup from "yup";
|
|
62
|
+
import { NavLink, useLocation, useNavigate, useParams, Link, useSearchParams, HashRouter, Routes, Route } from "react-router-dom";
|
|
63
63
|
import { stringifyMDX } from "@tinacms/mdx";
|
|
64
64
|
const ModalProvider = ({ children }) => {
|
|
65
65
|
const [modalRootContainerRef, setModalRootContainerRef] = useState(
|
|
@@ -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(
|
|
@@ -873,6 +889,16 @@ const FieldDescription = ({
|
|
|
873
889
|
className,
|
|
874
890
|
...props
|
|
875
891
|
}) => {
|
|
892
|
+
if (typeof children === "string") {
|
|
893
|
+
return /* @__PURE__ */ React.createElement(
|
|
894
|
+
"span",
|
|
895
|
+
{
|
|
896
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
897
|
+
...props,
|
|
898
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
899
|
+
}
|
|
900
|
+
);
|
|
901
|
+
}
|
|
876
902
|
return /* @__PURE__ */ React.createElement(
|
|
877
903
|
"span",
|
|
878
904
|
{
|
|
@@ -966,7 +992,7 @@ const Autocomplete = ({
|
|
|
966
992
|
}
|
|
967
993
|
}, [items2, query]);
|
|
968
994
|
return /* @__PURE__ */ React__default.createElement(
|
|
969
|
-
Combobox,
|
|
995
|
+
Combobox$1,
|
|
970
996
|
{
|
|
971
997
|
value,
|
|
972
998
|
onChange,
|
|
@@ -1332,8 +1358,8 @@ const ListElementVariants = withVariants(PlateElement, listVariants, [
|
|
|
1332
1358
|
]);
|
|
1333
1359
|
const ListElement = withRef(
|
|
1334
1360
|
({ children, variant = "ul", ...props }, ref) => {
|
|
1335
|
-
const
|
|
1336
|
-
return /* @__PURE__ */ React__default.createElement(ListElementVariants, { asChild: true, ref, variant, ...props }, /* @__PURE__ */ React__default.createElement(
|
|
1361
|
+
const Component = variant;
|
|
1362
|
+
return /* @__PURE__ */ React__default.createElement(ListElementVariants, { asChild: true, ref, variant, ...props }, /* @__PURE__ */ React__default.createElement(Component, null, children));
|
|
1337
1363
|
}
|
|
1338
1364
|
);
|
|
1339
1365
|
const ELEMENT_MERMAID = "mermaid";
|
|
@@ -2147,7 +2173,7 @@ const InlineComboboxInput = forwardRef(({ className, ...props }, propRef) => {
|
|
|
2147
2173
|
},
|
|
2148
2174
|
value || ""
|
|
2149
2175
|
), /* @__PURE__ */ React__default.createElement(
|
|
2150
|
-
Combobox$
|
|
2176
|
+
Combobox$2,
|
|
2151
2177
|
{
|
|
2152
2178
|
autoSelect: true,
|
|
2153
2179
|
className: cn$1(
|
|
@@ -2944,7 +2970,7 @@ const Components = () => {
|
|
|
2944
2970
|
),
|
|
2945
2971
|
[MARK_CODE]: CodeLeaf,
|
|
2946
2972
|
[MARK_UNDERLINE]: withProps(PlateLeaf, { as: "u" }),
|
|
2947
|
-
[MARK_STRIKETHROUGH]:
|
|
2973
|
+
[MARK_STRIKETHROUGH]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("s", { ...props.attributes, ...props }),
|
|
2948
2974
|
[MARK_ITALIC]: withProps(PlateLeaf, { as: "em" }),
|
|
2949
2975
|
[MARK_BOLD]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("strong", { ...props.attributes, ...props }),
|
|
2950
2976
|
[ELEMENT_HR]: ({
|
|
@@ -3653,7 +3679,7 @@ function TinaForm({ form, children }) {
|
|
|
3653
3679
|
}));
|
|
3654
3680
|
}
|
|
3655
3681
|
function TinaField({
|
|
3656
|
-
Component
|
|
3682
|
+
Component,
|
|
3657
3683
|
children,
|
|
3658
3684
|
...fieldProps
|
|
3659
3685
|
}) {
|
|
@@ -3661,7 +3687,7 @@ function TinaField({
|
|
|
3661
3687
|
if (!isEditing)
|
|
3662
3688
|
return children || null;
|
|
3663
3689
|
return /* @__PURE__ */ React.createElement(Field, { ...fieldProps }, ({ input, meta }) => {
|
|
3664
|
-
return /* @__PURE__ */ React.createElement(
|
|
3690
|
+
return /* @__PURE__ */ React.createElement(Component, { input, meta, ...fieldProps });
|
|
3665
3691
|
});
|
|
3666
3692
|
}
|
|
3667
3693
|
TinaField.propTypes = {
|
|
@@ -3831,7 +3857,7 @@ var _excluded = ["attr", "size", "title"];
|
|
|
3831
3857
|
function _objectWithoutProperties(source, excluded) {
|
|
3832
3858
|
if (source == null)
|
|
3833
3859
|
return {};
|
|
3834
|
-
var target = _objectWithoutPropertiesLoose
|
|
3860
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
3835
3861
|
var key, i;
|
|
3836
3862
|
if (Object.getOwnPropertySymbols) {
|
|
3837
3863
|
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
@@ -3846,7 +3872,7 @@ function _objectWithoutProperties(source, excluded) {
|
|
|
3846
3872
|
}
|
|
3847
3873
|
return target;
|
|
3848
3874
|
}
|
|
3849
|
-
function _objectWithoutPropertiesLoose
|
|
3875
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
3850
3876
|
if (source == null)
|
|
3851
3877
|
return {};
|
|
3852
3878
|
var target = {};
|
|
@@ -4404,36 +4430,6 @@ function MdOutlineArrowBackIos(props) {
|
|
|
4404
4430
|
function MdOutlinePerson(props) {
|
|
4405
4431
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "d": "M0 0h24v24H0V0z" }, "child": [] }, { "tag": "path", "attr": { "d": "M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z" }, "child": [] }] })(props);
|
|
4406
4432
|
}
|
|
4407
|
-
const BranchContext = React.createContext({
|
|
4408
|
-
currentBranch: null,
|
|
4409
|
-
setCurrentBranch: (branch) => {
|
|
4410
|
-
console.warn("BranchContext not initialized");
|
|
4411
|
-
}
|
|
4412
|
-
});
|
|
4413
|
-
const BranchDataProvider = ({
|
|
4414
|
-
currentBranch,
|
|
4415
|
-
setCurrentBranch,
|
|
4416
|
-
children
|
|
4417
|
-
}) => {
|
|
4418
|
-
return /* @__PURE__ */ React.createElement(
|
|
4419
|
-
BranchContext.Provider,
|
|
4420
|
-
{
|
|
4421
|
-
value: {
|
|
4422
|
-
currentBranch,
|
|
4423
|
-
setCurrentBranch
|
|
4424
|
-
}
|
|
4425
|
-
},
|
|
4426
|
-
children
|
|
4427
|
-
);
|
|
4428
|
-
};
|
|
4429
|
-
const useBranchData = () => {
|
|
4430
|
-
const branchData = React.useContext(BranchContext);
|
|
4431
|
-
const { dispatch } = useEvent("branch:change");
|
|
4432
|
-
React.useEffect(() => {
|
|
4433
|
-
dispatch({ branchName: branchData.currentBranch });
|
|
4434
|
-
}, [branchData.currentBranch]);
|
|
4435
|
-
return branchData;
|
|
4436
|
-
};
|
|
4437
4433
|
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-md";
|
|
4438
4434
|
const disabledClasses$1 = "opacity-50 pointer-events-none cursor-not-allowed";
|
|
4439
4435
|
const BaseTextField = React.forwardRef(({ className, disabled, ...rest }, ref) => {
|
|
@@ -4936,7 +4932,28 @@ const NumberInput = ({
|
|
|
4936
4932
|
onChange,
|
|
4937
4933
|
value,
|
|
4938
4934
|
step
|
|
4939
|
-
}) => /* @__PURE__ */ React.createElement(
|
|
4935
|
+
}) => /* @__PURE__ */ React.createElement(
|
|
4936
|
+
Input,
|
|
4937
|
+
{
|
|
4938
|
+
type: "number",
|
|
4939
|
+
step,
|
|
4940
|
+
value,
|
|
4941
|
+
onChange: (event) => {
|
|
4942
|
+
const inputValue = event.target.value;
|
|
4943
|
+
const newValue = inputValue === "" ? void 0 : inputValue;
|
|
4944
|
+
if (onChange) {
|
|
4945
|
+
const syntheticEvent = {
|
|
4946
|
+
...event,
|
|
4947
|
+
target: {
|
|
4948
|
+
...event.target,
|
|
4949
|
+
value: newValue
|
|
4950
|
+
}
|
|
4951
|
+
};
|
|
4952
|
+
onChange(syntheticEvent);
|
|
4953
|
+
}
|
|
4954
|
+
}
|
|
4955
|
+
}
|
|
4956
|
+
);
|
|
4940
4957
|
function useCMS() {
|
|
4941
4958
|
return useCMS$1();
|
|
4942
4959
|
}
|
|
@@ -5177,7 +5194,7 @@ const PopoverContent = React.forwardRef(({ className, align = "center", sideOffs
|
|
|
5177
5194
|
side: "bottom",
|
|
5178
5195
|
className: cn(
|
|
5179
5196
|
"rounded-md border bg-white p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
5180
|
-
"max-h-[30vh] max-w-[
|
|
5197
|
+
"max-h-[30vh] max-w-[30vw] overflow-y-auto",
|
|
5181
5198
|
className
|
|
5182
5199
|
),
|
|
5183
5200
|
...props
|
|
@@ -5269,11 +5286,7 @@ const getFilename = (optionSets, value) => {
|
|
|
5269
5286
|
const node = nodes.find((node2) => node2.id === value);
|
|
5270
5287
|
return node ? node._internalSys.filename : null;
|
|
5271
5288
|
};
|
|
5272
|
-
const
|
|
5273
|
-
cms,
|
|
5274
|
-
input,
|
|
5275
|
-
field
|
|
5276
|
-
}) => {
|
|
5289
|
+
const Combobox = ({ cms, input, field }) => {
|
|
5277
5290
|
const [open2, setOpen] = React.useState(false);
|
|
5278
5291
|
const [value, setValue] = React.useState(input.value);
|
|
5279
5292
|
const [displayText, setDisplayText] = React.useState(null);
|
|
@@ -5289,7 +5302,9 @@ const ComboboxDemo = ({
|
|
|
5289
5302
|
}, [value, input, optionSets]);
|
|
5290
5303
|
React.useEffect(() => {
|
|
5291
5304
|
if (field.experimental___filter && optionSets.length > 0) {
|
|
5292
|
-
setFilteredOptionsList(
|
|
5305
|
+
setFilteredOptionsList(
|
|
5306
|
+
field.experimental___filter(optionSets, void 0)
|
|
5307
|
+
);
|
|
5293
5308
|
} else {
|
|
5294
5309
|
setFilteredOptionsList(optionSets);
|
|
5295
5310
|
}
|
|
@@ -5297,17 +5312,17 @@ const ComboboxDemo = ({
|
|
|
5297
5312
|
if (loading === true) {
|
|
5298
5313
|
return /* @__PURE__ */ React.createElement(LoadingDots, { color: "var(--tina-color-primary)" });
|
|
5299
5314
|
}
|
|
5300
|
-
return /* @__PURE__ */ React.createElement(
|
|
5315
|
+
return /* @__PURE__ */ React.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
|
|
5301
5316
|
Button,
|
|
5302
5317
|
{
|
|
5303
5318
|
variant: "outline",
|
|
5304
5319
|
role: "combobox",
|
|
5305
5320
|
"aria-expanded": open2,
|
|
5306
|
-
className: "w-
|
|
5321
|
+
className: "w-full justify-between"
|
|
5307
5322
|
},
|
|
5308
5323
|
/* @__PURE__ */ React.createElement("p", { className: "truncate" }, displayText ?? "Choose an option..."),
|
|
5309
5324
|
open2 ? /* @__PURE__ */ React.createElement(IoMdArrowDropup, { size: 20 }) : /* @__PURE__ */ React.createElement(IoMdArrowDropdown, { size: 20 })
|
|
5310
|
-
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative" }, /* @__PURE__ */ React.createElement(
|
|
5325
|
+
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative min-w-[var(--radix-popover-trigger-width)]" }, /* @__PURE__ */ React.createElement(
|
|
5311
5326
|
Command,
|
|
5312
5327
|
{
|
|
5313
5328
|
shouldFilter: !field.experimental___filter,
|
|
@@ -5331,32 +5346,25 @@ const ComboboxDemo = ({
|
|
|
5331
5346
|
}
|
|
5332
5347
|
),
|
|
5333
5348
|
/* @__PURE__ */ React.createElement(CommandEmpty, null, "No reference found"),
|
|
5334
|
-
/* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(
|
|
5335
|
-
|
|
5336
|
-
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5348
|
-
field,
|
|
5349
|
-
_values,
|
|
5350
|
-
node,
|
|
5351
|
-
onSelect: (currentValue) => {
|
|
5352
|
-
setValue(currentValue);
|
|
5353
|
-
setOpen(false);
|
|
5354
|
-
}
|
|
5349
|
+
/* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(CommandGroup, { key: `${collection}-group`, heading: collection }, /* @__PURE__ */ React.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
|
|
5350
|
+
const { id, _values } = node;
|
|
5351
|
+
return /* @__PURE__ */ React.createElement(
|
|
5352
|
+
OptionComponent,
|
|
5353
|
+
{
|
|
5354
|
+
id,
|
|
5355
|
+
key: id,
|
|
5356
|
+
value,
|
|
5357
|
+
field,
|
|
5358
|
+
_values,
|
|
5359
|
+
node,
|
|
5360
|
+
onSelect: (currentValue) => {
|
|
5361
|
+
setValue(currentValue);
|
|
5362
|
+
setOpen(false);
|
|
5355
5363
|
}
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
))))
|
|
5359
|
-
)))
|
|
5364
|
+
}
|
|
5365
|
+
);
|
|
5366
|
+
}))))))
|
|
5367
|
+
)));
|
|
5360
5368
|
};
|
|
5361
5369
|
const useGetNode = (cms, id) => {
|
|
5362
5370
|
const [document2, setDocument] = React.useState(
|
|
@@ -5429,7 +5437,7 @@ const ReferenceLink = ({ cms, input }) => {
|
|
|
5429
5437
|
};
|
|
5430
5438
|
const Reference = ({ input, field }) => {
|
|
5431
5439
|
const cms = useCMS();
|
|
5432
|
-
return /* @__PURE__ */ React.createElement(
|
|
5440
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "relative group" }, /* @__PURE__ */ React.createElement(Combobox, { cms, input, field })), /* @__PURE__ */ React.createElement(ReferenceLink, { cms, input }));
|
|
5433
5441
|
};
|
|
5434
5442
|
const ButtonToggle = ({
|
|
5435
5443
|
input,
|
|
@@ -5666,7 +5674,9 @@ const Item$2 = ({
|
|
|
5666
5674
|
onClick: () => {
|
|
5667
5675
|
const state = tinaForm.finalForm.getState();
|
|
5668
5676
|
if (state.invalid === true) {
|
|
5669
|
-
cms.alerts.error(
|
|
5677
|
+
cms.alerts.error(
|
|
5678
|
+
"Cannot navigate away from an invalid form."
|
|
5679
|
+
);
|
|
5670
5680
|
return;
|
|
5671
5681
|
}
|
|
5672
5682
|
cms.dispatch({
|
|
@@ -5737,10 +5747,11 @@ const ItemDeleteButton = ({ onClick, disabled = false }) => {
|
|
|
5737
5747
|
return /* @__PURE__ */ React__default.createElement(
|
|
5738
5748
|
"button",
|
|
5739
5749
|
{
|
|
5740
|
-
|
|
5750
|
+
type: "button",
|
|
5751
|
+
className: `w-8 px-1 py-2.5 flex items-center justify-center text-gray-200 hover:opacity-100 opacity-30 hover:bg-gray-50 ${disabled && "pointer-events-none opacity-30 cursor-not-allowed"}`,
|
|
5741
5752
|
onClick
|
|
5742
5753
|
},
|
|
5743
|
-
/* @__PURE__ */ React__default.createElement(TrashIcon, { className: "fill-current transition-colors ease-out
|
|
5754
|
+
/* @__PURE__ */ React__default.createElement(TrashIcon, { className: "h-5 w-auto fill-current text-red-500 transition-colors duration-150 ease-out" })
|
|
5744
5755
|
);
|
|
5745
5756
|
};
|
|
5746
5757
|
const DragHandle = ({ isDragging }) => {
|
|
@@ -5818,27 +5829,35 @@ const BlockSelector = ({
|
|
|
5818
5829
|
))))
|
|
5819
5830
|
))));
|
|
5820
5831
|
};
|
|
5821
|
-
const Group =
|
|
5822
|
-
|
|
5823
|
-
|
|
5824
|
-
|
|
5825
|
-
|
|
5826
|
-
|
|
5827
|
-
|
|
5828
|
-
|
|
5829
|
-
|
|
5830
|
-
|
|
5831
|
-
|
|
5832
|
+
const Group = wrapFieldWithNoHeader(
|
|
5833
|
+
({ tinaForm, field }) => {
|
|
5834
|
+
const cms = useCMS$1();
|
|
5835
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
5836
|
+
Header,
|
|
5837
|
+
{
|
|
5838
|
+
onClick: () => {
|
|
5839
|
+
const state = tinaForm.finalForm.getState();
|
|
5840
|
+
if (state.invalid === true) {
|
|
5841
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5842
|
+
return;
|
|
5843
|
+
}
|
|
5844
|
+
cms.dispatch({
|
|
5845
|
+
type: "forms:set-active-field-name",
|
|
5846
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5847
|
+
});
|
|
5832
5848
|
}
|
|
5833
|
-
|
|
5834
|
-
|
|
5835
|
-
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5849
|
+
},
|
|
5850
|
+
field.label || field.name,
|
|
5851
|
+
field.description && /* @__PURE__ */ React.createElement(
|
|
5852
|
+
"span",
|
|
5853
|
+
{
|
|
5854
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5855
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5856
|
+
}
|
|
5857
|
+
)
|
|
5858
|
+
));
|
|
5859
|
+
}
|
|
5860
|
+
);
|
|
5842
5861
|
const Header = ({ onClick, children }) => {
|
|
5843
5862
|
return /* @__PURE__ */ React.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React.createElement(
|
|
5844
5863
|
"button",
|
|
@@ -6241,7 +6260,9 @@ const BlockListItem = ({
|
|
|
6241
6260
|
onClick: () => {
|
|
6242
6261
|
const state = tinaForm.finalForm.getState();
|
|
6243
6262
|
if (state.invalid === true) {
|
|
6244
|
-
cms.alerts.error(
|
|
6263
|
+
cms.alerts.error(
|
|
6264
|
+
"Cannot navigate away from an invalid form."
|
|
6265
|
+
);
|
|
6245
6266
|
return;
|
|
6246
6267
|
}
|
|
6247
6268
|
cms.dispatch({
|
|
@@ -6723,28 +6744,28 @@ class DaysView extends React__default.Component {
|
|
|
6723
6744
|
}
|
|
6724
6745
|
renderDayHeaders() {
|
|
6725
6746
|
const locale = this.props.viewDate.localeData();
|
|
6726
|
-
|
|
6747
|
+
const dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React__default.createElement("th", { key: day + index, className: "dow" }, day));
|
|
6727
6748
|
return /* @__PURE__ */ React__default.createElement("tr", null, dayItems);
|
|
6728
6749
|
}
|
|
6729
6750
|
renderDays() {
|
|
6730
6751
|
const date = this.props.viewDate;
|
|
6731
6752
|
const startOfMonth = date.clone().startOf("month");
|
|
6732
6753
|
const endOfMonth = date.clone().endOf("month");
|
|
6733
|
-
|
|
6734
|
-
|
|
6754
|
+
const rows = [[], [], [], [], [], []];
|
|
6755
|
+
const startDate = date.clone().subtract(1, "months");
|
|
6735
6756
|
startDate.date(startDate.daysInMonth()).startOf("week");
|
|
6736
|
-
|
|
6757
|
+
const endDate = startDate.clone().add(42, "d");
|
|
6737
6758
|
let i = 0;
|
|
6738
6759
|
while (startDate.isBefore(endDate)) {
|
|
6739
|
-
|
|
6760
|
+
const row = getRow$2(rows, i++);
|
|
6740
6761
|
row.push(this.renderDay(startDate, startOfMonth, endOfMonth));
|
|
6741
6762
|
startDate.add(1, "d");
|
|
6742
6763
|
}
|
|
6743
6764
|
return rows.map((r, i2) => /* @__PURE__ */ React__default.createElement("tr", { key: `${endDate.month()}_${i2}` }, r));
|
|
6744
6765
|
}
|
|
6745
6766
|
renderDay(date, startOfMonth, endOfMonth) {
|
|
6746
|
-
|
|
6747
|
-
|
|
6767
|
+
const selectedDate = this.props.selectedDate;
|
|
6768
|
+
const dayProps = {
|
|
6748
6769
|
key: date.format("M_D"),
|
|
6749
6770
|
"data-value": date.date(),
|
|
6750
6771
|
"data-month": date.month(),
|
|
@@ -6798,7 +6819,7 @@ function getRow$2(rows, day) {
|
|
|
6798
6819
|
}
|
|
6799
6820
|
function getDaysOfWeek(locale) {
|
|
6800
6821
|
const first = locale.firstDayOfWeek();
|
|
6801
|
-
|
|
6822
|
+
const dow = [];
|
|
6802
6823
|
let i = 0;
|
|
6803
6824
|
locale._weekdaysMin.forEach(function(day) {
|
|
6804
6825
|
dow[(7 + i++ - first) % 7] = day;
|
|
@@ -6816,7 +6837,7 @@ class MonthsView extends React__default.Component {
|
|
|
6816
6837
|
return /* @__PURE__ */ React__default.createElement("div", { className: "rdtMonths" }, /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("thead", null, this.renderNavigation())), /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("tbody", null, this.renderMonths())));
|
|
6817
6838
|
}
|
|
6818
6839
|
renderNavigation() {
|
|
6819
|
-
|
|
6840
|
+
const year = this.props.viewDate.year();
|
|
6820
6841
|
return /* @__PURE__ */ React__default.createElement(
|
|
6821
6842
|
ViewNavigation,
|
|
6822
6843
|
{
|
|
@@ -6829,9 +6850,9 @@ class MonthsView extends React__default.Component {
|
|
|
6829
6850
|
);
|
|
6830
6851
|
}
|
|
6831
6852
|
renderMonths() {
|
|
6832
|
-
|
|
6853
|
+
const rows = [[], [], []];
|
|
6833
6854
|
for (let month = 0; month < 12; month++) {
|
|
6834
|
-
|
|
6855
|
+
const row = getRow$1(rows, month);
|
|
6835
6856
|
row.push(this.renderMonth(month));
|
|
6836
6857
|
}
|
|
6837
6858
|
return rows.map((months, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, months));
|
|
@@ -6848,7 +6869,7 @@ class MonthsView extends React__default.Component {
|
|
|
6848
6869
|
if (selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month) {
|
|
6849
6870
|
className += " rdtActive";
|
|
6850
6871
|
}
|
|
6851
|
-
|
|
6872
|
+
const props = { key: month, className, "data-value": month, onClick };
|
|
6852
6873
|
if (this.props.renderMonth) {
|
|
6853
6874
|
return this.props.renderMonth(
|
|
6854
6875
|
props,
|
|
@@ -6860,11 +6881,11 @@ class MonthsView extends React__default.Component {
|
|
|
6860
6881
|
return /* @__PURE__ */ React__default.createElement("td", { ...props }, this.getMonthText(month));
|
|
6861
6882
|
}
|
|
6862
6883
|
isDisabledMonth(month) {
|
|
6863
|
-
|
|
6884
|
+
const isValidDate = this.props.isValidDate;
|
|
6864
6885
|
if (!isValidDate) {
|
|
6865
6886
|
return false;
|
|
6866
6887
|
}
|
|
6867
|
-
|
|
6888
|
+
const date = this.props.viewDate.clone().set({ month });
|
|
6868
6889
|
let day = date.endOf("month").date() + 1;
|
|
6869
6890
|
while (day-- > 1) {
|
|
6870
6891
|
if (isValidDate(date.date(day))) {
|
|
@@ -6916,9 +6937,9 @@ class YearsView extends React__default.Component {
|
|
|
6916
6937
|
}
|
|
6917
6938
|
renderYears() {
|
|
6918
6939
|
const viewYear = this.getViewYear();
|
|
6919
|
-
|
|
6940
|
+
const rows = [[], [], []];
|
|
6920
6941
|
for (let year = viewYear - 1; year < viewYear + 11; year++) {
|
|
6921
|
-
|
|
6942
|
+
const row = getRow(rows, year - viewYear);
|
|
6922
6943
|
row.push(this.renderYear(year));
|
|
6923
6944
|
}
|
|
6924
6945
|
return rows.map((years, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, years));
|
|
@@ -6935,7 +6956,7 @@ class YearsView extends React__default.Component {
|
|
|
6935
6956
|
if (selectedYear === year) {
|
|
6936
6957
|
className += " rdtActive";
|
|
6937
6958
|
}
|
|
6938
|
-
|
|
6959
|
+
const props = { key: year, className, "data-value": year, onClick };
|
|
6939
6960
|
return this.props.renderYear(
|
|
6940
6961
|
props,
|
|
6941
6962
|
year,
|
|
@@ -6949,15 +6970,15 @@ class YearsView extends React__default.Component {
|
|
|
6949
6970
|
return this.props.selectedDate && this.props.selectedDate.year();
|
|
6950
6971
|
}
|
|
6951
6972
|
isDisabledYear(year) {
|
|
6952
|
-
|
|
6973
|
+
const cache = this.disabledYearsCache;
|
|
6953
6974
|
if (cache[year] !== void 0) {
|
|
6954
6975
|
return cache[year];
|
|
6955
6976
|
}
|
|
6956
|
-
|
|
6977
|
+
const isValidDate = this.props.isValidDate;
|
|
6957
6978
|
if (!isValidDate) {
|
|
6958
6979
|
return false;
|
|
6959
6980
|
}
|
|
6960
|
-
|
|
6981
|
+
const date = this.props.viewDate.clone().set({ year });
|
|
6961
6982
|
let day = date.endOf("year").dayOfYear() + 1;
|
|
6962
6983
|
while (day-- > 1) {
|
|
6963
6984
|
if (isValidDate(date.dayOfYear(day))) {
|
|
@@ -7004,7 +7025,7 @@ const timeConstraints = {
|
|
|
7004
7025
|
}
|
|
7005
7026
|
};
|
|
7006
7027
|
function createConstraints(overrideTimeConstraints) {
|
|
7007
|
-
|
|
7028
|
+
const constraints = {};
|
|
7008
7029
|
Object.keys(timeConstraints).forEach((type) => {
|
|
7009
7030
|
constraints[type] = {
|
|
7010
7031
|
...timeConstraints[type],
|
|
@@ -7020,7 +7041,7 @@ class TimeView extends React__default.Component {
|
|
|
7020
7041
|
this.state = this.getTimeParts(props.selectedDate || props.viewDate);
|
|
7021
7042
|
}
|
|
7022
7043
|
render() {
|
|
7023
|
-
|
|
7044
|
+
const items2 = [];
|
|
7024
7045
|
const timeParts = this.state;
|
|
7025
7046
|
this.getCounters().forEach((c, i) => {
|
|
7026
7047
|
if (i && c !== "ampm") {
|
|
@@ -7082,8 +7103,8 @@ class TimeView extends React__default.Component {
|
|
|
7082
7103
|
}
|
|
7083
7104
|
if (type === "ampm")
|
|
7084
7105
|
return this.toggleDayPart();
|
|
7085
|
-
|
|
7086
|
-
|
|
7106
|
+
const update = {};
|
|
7107
|
+
const body = document.body;
|
|
7087
7108
|
update[type] = this[action](type);
|
|
7088
7109
|
this.setState(update);
|
|
7089
7110
|
this.timer = setTimeout(() => {
|
|
@@ -7126,8 +7147,8 @@ class TimeView extends React__default.Component {
|
|
|
7126
7147
|
return pad(type, value);
|
|
7127
7148
|
}
|
|
7128
7149
|
getCounters() {
|
|
7129
|
-
|
|
7130
|
-
|
|
7150
|
+
const counters = [];
|
|
7151
|
+
const format2 = this.props.timeFormat;
|
|
7131
7152
|
if (format2.toLowerCase().indexOf("h") !== -1) {
|
|
7132
7153
|
counters.push("hours");
|
|
7133
7154
|
if (format2.indexOf("m") !== -1) {
|
|
@@ -7180,244 +7201,65 @@ function pad(type, value) {
|
|
|
7180
7201
|
str = "0" + str;
|
|
7181
7202
|
return str;
|
|
7182
7203
|
}
|
|
7183
|
-
|
|
7184
|
-
|
|
7185
|
-
|
|
7186
|
-
|
|
7187
|
-
|
|
7188
|
-
|
|
7189
|
-
|
|
7190
|
-
|
|
7191
|
-
|
|
7192
|
-
|
|
7193
|
-
|
|
7194
|
-
}
|
|
7195
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
7196
|
-
if (source == null)
|
|
7197
|
-
return {};
|
|
7198
|
-
var target = {};
|
|
7199
|
-
var sourceKeys = Object.keys(source);
|
|
7200
|
-
var key, i;
|
|
7201
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
|
7202
|
-
key = sourceKeys[i];
|
|
7203
|
-
if (excluded.indexOf(key) >= 0)
|
|
7204
|
-
continue;
|
|
7205
|
-
target[key] = source[key];
|
|
7206
|
-
}
|
|
7207
|
-
return target;
|
|
7208
|
-
}
|
|
7209
|
-
function _assertThisInitialized(self) {
|
|
7210
|
-
if (self === void 0) {
|
|
7211
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
7212
|
-
}
|
|
7213
|
-
return self;
|
|
7214
|
-
}
|
|
7215
|
-
function isNodeFound(current, componentNode, ignoreClass) {
|
|
7216
|
-
if (current === componentNode) {
|
|
7217
|
-
return true;
|
|
7218
|
-
}
|
|
7219
|
-
if (current.correspondingElement) {
|
|
7220
|
-
return current.correspondingElement.classList.contains(ignoreClass);
|
|
7221
|
-
}
|
|
7222
|
-
return current.classList.contains(ignoreClass);
|
|
7223
|
-
}
|
|
7224
|
-
function findHighest(current, componentNode, ignoreClass) {
|
|
7225
|
-
if (current === componentNode) {
|
|
7226
|
-
return true;
|
|
7204
|
+
var useClickAway$1 = {};
|
|
7205
|
+
var util = {};
|
|
7206
|
+
Object.defineProperty(util, "__esModule", { value: true });
|
|
7207
|
+
util.isNavigator = util.isBrowser = util.off = util.on = util.noop = void 0;
|
|
7208
|
+
var noop = function() {
|
|
7209
|
+
};
|
|
7210
|
+
util.noop = noop;
|
|
7211
|
+
function on(obj) {
|
|
7212
|
+
var args = [];
|
|
7213
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7214
|
+
args[_i - 1] = arguments[_i];
|
|
7227
7215
|
}
|
|
7228
|
-
|
|
7229
|
-
|
|
7230
|
-
return true;
|
|
7231
|
-
}
|
|
7232
|
-
current = current.parentNode || current.host;
|
|
7216
|
+
if (obj && obj.addEventListener) {
|
|
7217
|
+
obj.addEventListener.apply(obj, args);
|
|
7233
7218
|
}
|
|
7234
|
-
return current;
|
|
7235
|
-
}
|
|
7236
|
-
function clickedScrollbar(evt) {
|
|
7237
|
-
return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;
|
|
7238
7219
|
}
|
|
7239
|
-
|
|
7240
|
-
|
|
7241
|
-
|
|
7220
|
+
util.on = on;
|
|
7221
|
+
function off(obj) {
|
|
7222
|
+
var args = [];
|
|
7223
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7224
|
+
args[_i - 1] = arguments[_i];
|
|
7242
7225
|
}
|
|
7243
|
-
|
|
7244
|
-
|
|
7245
|
-
get: function get2() {
|
|
7246
|
-
passive = true;
|
|
7247
|
-
}
|
|
7248
|
-
});
|
|
7249
|
-
var noop = function noop2() {
|
|
7250
|
-
};
|
|
7251
|
-
window.addEventListener("testPassiveEventSupport", noop, options);
|
|
7252
|
-
window.removeEventListener("testPassiveEventSupport", noop, options);
|
|
7253
|
-
return passive;
|
|
7254
|
-
};
|
|
7255
|
-
function autoInc(seed) {
|
|
7256
|
-
if (seed === void 0) {
|
|
7257
|
-
seed = 0;
|
|
7226
|
+
if (obj && obj.removeEventListener) {
|
|
7227
|
+
obj.removeEventListener.apply(obj, args);
|
|
7258
7228
|
}
|
|
7259
|
-
return function() {
|
|
7260
|
-
return ++seed;
|
|
7261
|
-
};
|
|
7262
7229
|
}
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
var
|
|
7268
|
-
var
|
|
7269
|
-
|
|
7270
|
-
|
|
7271
|
-
|
|
7272
|
-
|
|
7273
|
-
|
|
7274
|
-
|
|
7275
|
-
|
|
7276
|
-
|
|
7277
|
-
|
|
7278
|
-
|
|
7279
|
-
|
|
7280
|
-
|
|
7281
|
-
|
|
7282
|
-
function onClickOutside(props) {
|
|
7283
|
-
var _this;
|
|
7284
|
-
_this = _Component.call(this, props) || this;
|
|
7285
|
-
_this.__outsideClickHandler = function(event) {
|
|
7286
|
-
if (typeof _this.__clickOutsideHandlerProp === "function") {
|
|
7287
|
-
_this.__clickOutsideHandlerProp(event);
|
|
7288
|
-
return;
|
|
7289
|
-
}
|
|
7290
|
-
var instance = _this.getInstance();
|
|
7291
|
-
if (typeof instance.props.handleClickOutside === "function") {
|
|
7292
|
-
instance.props.handleClickOutside(event);
|
|
7293
|
-
return;
|
|
7294
|
-
}
|
|
7295
|
-
if (typeof instance.handleClickOutside === "function") {
|
|
7296
|
-
instance.handleClickOutside(event);
|
|
7297
|
-
return;
|
|
7298
|
-
}
|
|
7299
|
-
throw new Error("WrappedComponent: " + componentName + " lacks a handleClickOutside(event) function for processing outside click events.");
|
|
7300
|
-
};
|
|
7301
|
-
_this.__getComponentNode = function() {
|
|
7302
|
-
var instance = _this.getInstance();
|
|
7303
|
-
if (config && typeof config.setClickOutsideRef === "function") {
|
|
7304
|
-
return config.setClickOutsideRef()(instance);
|
|
7305
|
-
}
|
|
7306
|
-
if (typeof instance.setClickOutsideRef === "function") {
|
|
7307
|
-
return instance.setClickOutsideRef();
|
|
7308
|
-
}
|
|
7309
|
-
return findDOMNode(instance);
|
|
7310
|
-
};
|
|
7311
|
-
_this.enableOnClickOutside = function() {
|
|
7312
|
-
if (typeof document === "undefined" || enabledInstances[_this._uid]) {
|
|
7313
|
-
return;
|
|
7314
|
-
}
|
|
7315
|
-
if (typeof passiveEventSupport === "undefined") {
|
|
7316
|
-
passiveEventSupport = testPassiveEventSupport();
|
|
7317
|
-
}
|
|
7318
|
-
enabledInstances[_this._uid] = true;
|
|
7319
|
-
var events = _this.props.eventTypes;
|
|
7320
|
-
if (!events.forEach) {
|
|
7321
|
-
events = [events];
|
|
7322
|
-
}
|
|
7323
|
-
handlersMap[_this._uid] = function(event) {
|
|
7324
|
-
if (_this.componentNode === null)
|
|
7325
|
-
return;
|
|
7326
|
-
if (_this.initTimeStamp > event.timeStamp)
|
|
7327
|
-
return;
|
|
7328
|
-
if (_this.props.preventDefault) {
|
|
7329
|
-
event.preventDefault();
|
|
7330
|
-
}
|
|
7331
|
-
if (_this.props.stopPropagation) {
|
|
7332
|
-
event.stopPropagation();
|
|
7333
|
-
}
|
|
7334
|
-
if (_this.props.excludeScrollbar && clickedScrollbar(event))
|
|
7335
|
-
return;
|
|
7336
|
-
var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;
|
|
7337
|
-
if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {
|
|
7338
|
-
return;
|
|
7339
|
-
}
|
|
7340
|
-
_this.__outsideClickHandler(event);
|
|
7341
|
-
};
|
|
7342
|
-
events.forEach(function(eventName) {
|
|
7343
|
-
document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));
|
|
7344
|
-
});
|
|
7345
|
-
};
|
|
7346
|
-
_this.disableOnClickOutside = function() {
|
|
7347
|
-
delete enabledInstances[_this._uid];
|
|
7348
|
-
var fn = handlersMap[_this._uid];
|
|
7349
|
-
if (fn && typeof document !== "undefined") {
|
|
7350
|
-
var events = _this.props.eventTypes;
|
|
7351
|
-
if (!events.forEach) {
|
|
7352
|
-
events = [events];
|
|
7353
|
-
}
|
|
7354
|
-
events.forEach(function(eventName) {
|
|
7355
|
-
return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));
|
|
7356
|
-
});
|
|
7357
|
-
delete handlersMap[_this._uid];
|
|
7358
|
-
}
|
|
7359
|
-
};
|
|
7360
|
-
_this.getRef = function(ref) {
|
|
7361
|
-
return _this.instanceRef = ref;
|
|
7362
|
-
};
|
|
7363
|
-
_this._uid = uid();
|
|
7364
|
-
_this.initTimeStamp = performance.now();
|
|
7365
|
-
return _this;
|
|
7366
|
-
}
|
|
7367
|
-
var _proto = onClickOutside.prototype;
|
|
7368
|
-
_proto.getInstance = function getInstance() {
|
|
7369
|
-
if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {
|
|
7370
|
-
return this;
|
|
7371
|
-
}
|
|
7372
|
-
var ref = this.instanceRef;
|
|
7373
|
-
return ref.getInstance ? ref.getInstance() : ref;
|
|
7230
|
+
util.off = off;
|
|
7231
|
+
util.isBrowser = typeof window !== "undefined";
|
|
7232
|
+
util.isNavigator = typeof navigator !== "undefined";
|
|
7233
|
+
Object.defineProperty(useClickAway$1, "__esModule", { value: true });
|
|
7234
|
+
var react_1 = React__default;
|
|
7235
|
+
var util_1 = util;
|
|
7236
|
+
var defaultEvents = ["mousedown", "touchstart"];
|
|
7237
|
+
var useClickAway = function(ref, onClickAway, events) {
|
|
7238
|
+
if (events === void 0) {
|
|
7239
|
+
events = defaultEvents;
|
|
7240
|
+
}
|
|
7241
|
+
var savedCallback = react_1.useRef(onClickAway);
|
|
7242
|
+
react_1.useEffect(function() {
|
|
7243
|
+
savedCallback.current = onClickAway;
|
|
7244
|
+
}, [onClickAway]);
|
|
7245
|
+
react_1.useEffect(function() {
|
|
7246
|
+
var handler = function(event) {
|
|
7247
|
+
var el = ref.current;
|
|
7248
|
+
el && !el.contains(event.target) && savedCallback.current(event);
|
|
7374
7249
|
};
|
|
7375
|
-
|
|
7376
|
-
|
|
7377
|
-
|
|
7378
|
-
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
throw new Error("WrappedComponent: " + componentName + " lacks a function for processing outside click events specified by the handleClickOutside config option.");
|
|
7384
|
-
}
|
|
7385
|
-
}
|
|
7386
|
-
this.componentNode = this.__getComponentNode();
|
|
7387
|
-
if (this.props.disableOnClickOutside)
|
|
7388
|
-
return;
|
|
7389
|
-
this.enableOnClickOutside();
|
|
7390
|
-
};
|
|
7391
|
-
_proto.componentDidUpdate = function componentDidUpdate() {
|
|
7392
|
-
this.componentNode = this.__getComponentNode();
|
|
7393
|
-
};
|
|
7394
|
-
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
7395
|
-
this.disableOnClickOutside();
|
|
7396
|
-
};
|
|
7397
|
-
_proto.render = function render() {
|
|
7398
|
-
var _this$props = this.props;
|
|
7399
|
-
_this$props.excludeScrollbar;
|
|
7400
|
-
var props = _objectWithoutPropertiesLoose(_this$props, ["excludeScrollbar"]);
|
|
7401
|
-
if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {
|
|
7402
|
-
props.ref = this.getRef;
|
|
7403
|
-
} else {
|
|
7404
|
-
props.wrappedRef = this.getRef;
|
|
7250
|
+
for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {
|
|
7251
|
+
var eventName = events_1[_i];
|
|
7252
|
+
util_1.on(document, eventName, handler);
|
|
7253
|
+
}
|
|
7254
|
+
return function() {
|
|
7255
|
+
for (var _i2 = 0, events_2 = events; _i2 < events_2.length; _i2++) {
|
|
7256
|
+
var eventName2 = events_2[_i2];
|
|
7257
|
+
util_1.off(document, eventName2, handler);
|
|
7405
7258
|
}
|
|
7406
|
-
props.disableOnClickOutside = this.disableOnClickOutside;
|
|
7407
|
-
props.enableOnClickOutside = this.enableOnClickOutside;
|
|
7408
|
-
return createElement(WrappedComponent, props);
|
|
7409
7259
|
};
|
|
7410
|
-
|
|
7411
|
-
|
|
7412
|
-
|
|
7413
|
-
excludeScrollbar: config && config.excludeScrollbar || false,
|
|
7414
|
-
outsideClickIgnoreClass: IGNORE_CLASS_NAME,
|
|
7415
|
-
preventDefault: false,
|
|
7416
|
-
stopPropagation: false
|
|
7417
|
-
}, _class.getClass = function() {
|
|
7418
|
-
return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;
|
|
7419
|
-
}, _temp;
|
|
7420
|
-
}
|
|
7260
|
+
}, [events, ref]);
|
|
7261
|
+
};
|
|
7262
|
+
var _default = useClickAway$1.default = useClickAway;
|
|
7421
7263
|
const viewModes = {
|
|
7422
7264
|
YEARS: "years",
|
|
7423
7265
|
MONTHS: "months",
|
|
@@ -7438,7 +7280,7 @@ class Datetime extends React__default.Component {
|
|
|
7438
7280
|
__publicField(this, "_renderCalendar", () => {
|
|
7439
7281
|
const props = this.props;
|
|
7440
7282
|
const state = this.state;
|
|
7441
|
-
|
|
7283
|
+
const viewProps = {
|
|
7442
7284
|
viewDate: state.viewDate.clone(),
|
|
7443
7285
|
selectedDate: this.getSelectedDate(),
|
|
7444
7286
|
isValidDate: props.isValidDate,
|
|
@@ -7481,10 +7323,10 @@ class Datetime extends React__default.Component {
|
|
|
7481
7323
|
__publicField(this, "viewToMethod", { days: "date", months: "month", years: "year" });
|
|
7482
7324
|
__publicField(this, "nextView", { days: "time", months: "days", years: "months" });
|
|
7483
7325
|
__publicField(this, "_updateDate", (e) => {
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7326
|
+
const state = this.state;
|
|
7327
|
+
const currentView = state.currentView;
|
|
7328
|
+
const updateOnView = this.getUpdateOn(this.getFormat("date"));
|
|
7329
|
+
const viewDate = this.state.viewDate.clone();
|
|
7488
7330
|
viewDate[this.viewToMethod[currentView]](
|
|
7489
7331
|
parseInt(e.target.getAttribute("data-value"), 10)
|
|
7490
7332
|
);
|
|
@@ -7492,7 +7334,7 @@ class Datetime extends React__default.Component {
|
|
|
7492
7334
|
viewDate.month(parseInt(e.target.getAttribute("data-month"), 10));
|
|
7493
7335
|
viewDate.year(parseInt(e.target.getAttribute("data-year"), 10));
|
|
7494
7336
|
}
|
|
7495
|
-
|
|
7337
|
+
const update = { viewDate };
|
|
7496
7338
|
if (currentView === updateOnView) {
|
|
7497
7339
|
update.selectedDate = viewDate.clone();
|
|
7498
7340
|
update.inputValue = viewDate.format(this.getFormat("datetime"));
|
|
@@ -7506,7 +7348,7 @@ class Datetime extends React__default.Component {
|
|
|
7506
7348
|
this.setState(update);
|
|
7507
7349
|
});
|
|
7508
7350
|
__publicField(this, "_viewNavigate", (modifier, unit) => {
|
|
7509
|
-
|
|
7351
|
+
const viewDate = this.state.viewDate.clone();
|
|
7510
7352
|
viewDate.add(modifier, unit);
|
|
7511
7353
|
if (modifier > 0) {
|
|
7512
7354
|
this.props.onNavigateForward(modifier, unit);
|
|
@@ -7516,7 +7358,7 @@ class Datetime extends React__default.Component {
|
|
|
7516
7358
|
this.setState({ viewDate });
|
|
7517
7359
|
});
|
|
7518
7360
|
__publicField(this, "_setTime", (type, value) => {
|
|
7519
|
-
|
|
7361
|
+
const date = (this.getSelectedDate() || this.state.viewDate).clone();
|
|
7520
7362
|
date[type](value);
|
|
7521
7363
|
if (!this.props.value) {
|
|
7522
7364
|
this.setState({
|
|
@@ -7540,7 +7382,7 @@ class Datetime extends React__default.Component {
|
|
|
7540
7382
|
});
|
|
7541
7383
|
});
|
|
7542
7384
|
__publicField(this, "_handleClickOutside", () => {
|
|
7543
|
-
|
|
7385
|
+
const props = this.props;
|
|
7544
7386
|
if (props.input && this.state.open && props.open === void 0 && props.closeOnClickOutside) {
|
|
7545
7387
|
this._closeCalendar();
|
|
7546
7388
|
}
|
|
@@ -7555,7 +7397,7 @@ class Datetime extends React__default.Component {
|
|
|
7555
7397
|
return;
|
|
7556
7398
|
const value = e.target ? e.target.value : e;
|
|
7557
7399
|
const localMoment = this.localMoment(value, this.getFormat("datetime"));
|
|
7558
|
-
|
|
7400
|
+
const update = { inputValue: value };
|
|
7559
7401
|
if (localMoment.isValid()) {
|
|
7560
7402
|
update.selectedDate = localMoment;
|
|
7561
7403
|
update.viewDate = localMoment.clone().startOf("month");
|
|
@@ -7619,9 +7461,9 @@ class Datetime extends React__default.Component {
|
|
|
7619
7461
|
return this.props.renderView(this.state.currentView, this._renderCalendar);
|
|
7620
7462
|
}
|
|
7621
7463
|
getInitialState() {
|
|
7622
|
-
|
|
7623
|
-
|
|
7624
|
-
|
|
7464
|
+
const props = this.props;
|
|
7465
|
+
const inputFormat = this.getFormat("datetime");
|
|
7466
|
+
const selectedDate = this.parseDate(
|
|
7625
7467
|
props.value || props.initialValue,
|
|
7626
7468
|
inputFormat
|
|
7627
7469
|
);
|
|
@@ -7652,7 +7494,7 @@ class Datetime extends React__default.Component {
|
|
|
7652
7494
|
return this.getInitialDate();
|
|
7653
7495
|
}
|
|
7654
7496
|
getInitialDate() {
|
|
7655
|
-
|
|
7497
|
+
const m = this.localMoment();
|
|
7656
7498
|
m.hour(0).minute(0).second(0).millisecond(0);
|
|
7657
7499
|
return m;
|
|
7658
7500
|
}
|
|
@@ -7672,8 +7514,8 @@ class Datetime extends React__default.Component {
|
|
|
7672
7514
|
}
|
|
7673
7515
|
getClassName() {
|
|
7674
7516
|
let cn2 = "rdt";
|
|
7675
|
-
|
|
7676
|
-
|
|
7517
|
+
const props = this.props;
|
|
7518
|
+
const propCn = props.className;
|
|
7677
7519
|
if (Array.isArray(propCn)) {
|
|
7678
7520
|
cn2 += " " + propCn.join(" ");
|
|
7679
7521
|
} else if (propCn) {
|
|
@@ -7706,14 +7548,14 @@ class Datetime extends React__default.Component {
|
|
|
7706
7548
|
return viewModes.DAYS;
|
|
7707
7549
|
}
|
|
7708
7550
|
getLocaleData() {
|
|
7709
|
-
|
|
7551
|
+
const p = this.props;
|
|
7710
7552
|
return this.localMoment(
|
|
7711
7553
|
p.value || p.defaultValue || /* @__PURE__ */ new Date()
|
|
7712
7554
|
).localeData();
|
|
7713
7555
|
}
|
|
7714
7556
|
getDateFormat() {
|
|
7715
7557
|
const locale = this.getLocaleData();
|
|
7716
|
-
|
|
7558
|
+
const format2 = this.props.dateFormat;
|
|
7717
7559
|
if (format2 === true)
|
|
7718
7560
|
return locale.longDateFormat("L");
|
|
7719
7561
|
if (format2)
|
|
@@ -7722,7 +7564,7 @@ class Datetime extends React__default.Component {
|
|
|
7722
7564
|
}
|
|
7723
7565
|
getTimeFormat() {
|
|
7724
7566
|
const locale = this.getLocaleData();
|
|
7725
|
-
|
|
7567
|
+
const format2 = this.props.timeFormat;
|
|
7726
7568
|
if (format2 === true) {
|
|
7727
7569
|
return locale.longDateFormat("LT");
|
|
7728
7570
|
}
|
|
@@ -7734,12 +7576,12 @@ class Datetime extends React__default.Component {
|
|
|
7734
7576
|
} else if (type === "time") {
|
|
7735
7577
|
return this.getTimeFormat();
|
|
7736
7578
|
}
|
|
7737
|
-
|
|
7738
|
-
|
|
7579
|
+
const dateFormat = this.getDateFormat();
|
|
7580
|
+
const timeFormat = this.getTimeFormat();
|
|
7739
7581
|
return dateFormat && timeFormat ? dateFormat + " " + timeFormat : dateFormat || timeFormat;
|
|
7740
7582
|
}
|
|
7741
7583
|
updateTime(op, amount, type, toSelected) {
|
|
7742
|
-
|
|
7584
|
+
const update = {};
|
|
7743
7585
|
const date = toSelected ? "selectedDate" : "viewDate";
|
|
7744
7586
|
update[date] = this.state[date].clone()[op](amount, type);
|
|
7745
7587
|
this.setState(update);
|
|
@@ -7772,7 +7614,7 @@ class Datetime extends React__default.Component {
|
|
|
7772
7614
|
if (prevProps === this.props)
|
|
7773
7615
|
return;
|
|
7774
7616
|
let needsUpdate = false;
|
|
7775
|
-
|
|
7617
|
+
const thisProps = this.props;
|
|
7776
7618
|
["locale", "utc", "displayZone", "dateFormat", "timeFormat"].forEach(
|
|
7777
7619
|
function(p) {
|
|
7778
7620
|
prevProps[p] !== thisProps[p] && (needsUpdate = true);
|
|
@@ -7788,8 +7630,8 @@ class Datetime extends React__default.Component {
|
|
|
7788
7630
|
}
|
|
7789
7631
|
regenerateDates() {
|
|
7790
7632
|
const props = this.props;
|
|
7791
|
-
|
|
7792
|
-
|
|
7633
|
+
const viewDate = this.state.viewDate.clone();
|
|
7634
|
+
const selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
|
|
7793
7635
|
if (props.locale) {
|
|
7794
7636
|
viewDate.locale(props.locale);
|
|
7795
7637
|
selectedDate && selectedDate.locale(props.locale);
|
|
@@ -7804,7 +7646,7 @@ class Datetime extends React__default.Component {
|
|
|
7804
7646
|
viewDate.locale();
|
|
7805
7647
|
selectedDate && selectedDate.locale();
|
|
7806
7648
|
}
|
|
7807
|
-
|
|
7649
|
+
const update = { viewDate, selectedDate };
|
|
7808
7650
|
if (selectedDate && selectedDate.isValid()) {
|
|
7809
7651
|
update.inputValue = selectedDate.format(this.getFormat("datetime"));
|
|
7810
7652
|
}
|
|
@@ -7813,7 +7655,7 @@ class Datetime extends React__default.Component {
|
|
|
7813
7655
|
getSelectedDate() {
|
|
7814
7656
|
if (this.props.value === void 0)
|
|
7815
7657
|
return this.state.selectedDate;
|
|
7816
|
-
|
|
7658
|
+
const selectedDate = this.parseDate(
|
|
7817
7659
|
this.props.value,
|
|
7818
7660
|
this.getFormat("datetime")
|
|
7819
7661
|
);
|
|
@@ -7832,7 +7674,7 @@ class Datetime extends React__default.Component {
|
|
|
7832
7674
|
return "";
|
|
7833
7675
|
}
|
|
7834
7676
|
getInputValue() {
|
|
7835
|
-
|
|
7677
|
+
const selectedDate = this.getSelectedDate();
|
|
7836
7678
|
return selectedDate ? selectedDate.format(this.getFormat("datetime")) : this.state.inputValue;
|
|
7837
7679
|
}
|
|
7838
7680
|
/**
|
|
@@ -7842,7 +7684,7 @@ class Datetime extends React__default.Component {
|
|
|
7842
7684
|
* @public
|
|
7843
7685
|
*/
|
|
7844
7686
|
setViewDate(date) {
|
|
7845
|
-
|
|
7687
|
+
const logError = function() {
|
|
7846
7688
|
return log("Invalid date passed to the `setViewDate` method: " + date);
|
|
7847
7689
|
};
|
|
7848
7690
|
if (!date)
|
|
@@ -7938,7 +7780,7 @@ __publicField(Datetime, "defaultProps", {
|
|
|
7938
7780
|
// Make moment accessible through the Datetime class
|
|
7939
7781
|
__publicField(Datetime, "moment", moment);
|
|
7940
7782
|
function log(message, method) {
|
|
7941
|
-
|
|
7783
|
+
const con = typeof window !== "undefined" && window.console;
|
|
7942
7784
|
if (!con)
|
|
7943
7785
|
return;
|
|
7944
7786
|
if (!method) {
|
|
@@ -7946,22 +7788,13 @@ function log(message, method) {
|
|
|
7946
7788
|
}
|
|
7947
7789
|
con[method]("***react-datetime:" + message);
|
|
7948
7790
|
}
|
|
7949
|
-
|
|
7950
|
-
|
|
7951
|
-
|
|
7952
|
-
|
|
7953
|
-
}
|
|
7954
|
-
|
|
7955
|
-
return /* @__PURE__ */ React__default.createElement("div", { className: this.props.className, ref: this.container }, this.props.children);
|
|
7956
|
-
}
|
|
7957
|
-
handleClickOutside(e) {
|
|
7958
|
-
this.props.onClickOut(e);
|
|
7959
|
-
}
|
|
7960
|
-
setClickOutsideRef() {
|
|
7961
|
-
return this.container.current;
|
|
7962
|
-
}
|
|
7791
|
+
function ClickableWrapper({ className, onClickOut, children }) {
|
|
7792
|
+
const containerRef = useRef(null);
|
|
7793
|
+
_default(containerRef, (event) => {
|
|
7794
|
+
onClickOut(event);
|
|
7795
|
+
});
|
|
7796
|
+
return /* @__PURE__ */ React__default.createElement("div", { className, ref: containerRef }, children);
|
|
7963
7797
|
}
|
|
7964
|
-
const ClickableWrapper = onClickOutsideHOC(ClickOutBase);
|
|
7965
7798
|
const DEFAULT_DATE_DISPLAY_FORMAT = "MMM DD, YYYY";
|
|
7966
7799
|
const DEFAULT_TIME_DISPLAY_FORMAT = "h:mm A";
|
|
7967
7800
|
const format$1 = (val, _name, field) => {
|
|
@@ -8004,7 +7837,10 @@ const DateField = wrapFieldsWithMeta(
|
|
|
8004
7837
|
ReactDateTimeWithStyles,
|
|
8005
7838
|
{
|
|
8006
7839
|
value: input.value,
|
|
8007
|
-
onChange:
|
|
7840
|
+
onChange: (value) => {
|
|
7841
|
+
const newValue = value === "" ? void 0 : value;
|
|
7842
|
+
input.onChange(newValue);
|
|
7843
|
+
},
|
|
8008
7844
|
dateFormat: dateFormat || DEFAULT_DATE_DISPLAY_FORMAT,
|
|
8009
7845
|
timeFormat: timeFormat || false,
|
|
8010
7846
|
inputProps: { className: textFieldClasses },
|
|
@@ -8197,9 +8033,6 @@ const PasswordFieldPlugin = {
|
|
|
8197
8033
|
},
|
|
8198
8034
|
parse: parse$2
|
|
8199
8035
|
};
|
|
8200
|
-
function GrCircleQuestion(props) {
|
|
8201
|
-
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "strokeWidth": "2", "d": "M12,22 C17.5228475,22 22,17.5228475 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,17.5228475 6.4771525,22 12,22 Z M12,15 L12,14 C12,13 12,12.5 13,12 C14,11.5 15,11 15,9.5 C15,8.5 14,7 12,7 C10,7 9,8.26413718 9,10 M12,16 L12,18" }, "child": [] }] })(props);
|
|
8202
|
-
}
|
|
8203
8036
|
function AiFillWarning(props) {
|
|
8204
8037
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 1024 1024" }, "child": [{ "tag": "path", "attr": { "d": "M955.7 856l-416-720c-6.2-10.7-16.9-16-27.7-16s-21.6 5.3-27.7 16l-416 720C56 877.4 71.4 904 96 904h832c24.6 0 40-26.6 27.7-48zM480 416c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v184c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V416zm32 352a48.01 48.01 0 0 1 0-96 48.01 48.01 0 0 1 0 96z" }, "child": [] }] })(props);
|
|
8205
8038
|
}
|
|
@@ -8218,6 +8051,39 @@ function FaSpinner(props) {
|
|
|
8218
8051
|
function FaUnlock(props) {
|
|
8219
8052
|
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 448 512" }, "child": [{ "tag": "path", "attr": { "d": "M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z" }, "child": [] }] })(props);
|
|
8220
8053
|
}
|
|
8054
|
+
function GrCircleQuestion(props) {
|
|
8055
|
+
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24" }, "child": [{ "tag": "path", "attr": { "fill": "none", "strokeWidth": "2", "d": "M12,22 C17.5228475,22 22,17.5228475 22,12 C22,6.4771525 17.5228475,2 12,2 C6.4771525,2 2,6.4771525 2,12 C2,17.5228475 6.4771525,22 12,22 Z M12,15 L12,14 C12,13 12,12.5 13,12 C14,11.5 15,11 15,9.5 C15,8.5 14,7 12,7 C10,7 9,8.26413718 9,10 M12,16 L12,18" }, "child": [] }] })(props);
|
|
8056
|
+
}
|
|
8057
|
+
const BranchContext = React.createContext({
|
|
8058
|
+
currentBranch: null,
|
|
8059
|
+
setCurrentBranch: (branch) => {
|
|
8060
|
+
console.warn("BranchContext not initialized");
|
|
8061
|
+
}
|
|
8062
|
+
});
|
|
8063
|
+
const BranchDataProvider = ({
|
|
8064
|
+
currentBranch,
|
|
8065
|
+
setCurrentBranch,
|
|
8066
|
+
children
|
|
8067
|
+
}) => {
|
|
8068
|
+
return /* @__PURE__ */ React.createElement(
|
|
8069
|
+
BranchContext.Provider,
|
|
8070
|
+
{
|
|
8071
|
+
value: {
|
|
8072
|
+
currentBranch,
|
|
8073
|
+
setCurrentBranch
|
|
8074
|
+
}
|
|
8075
|
+
},
|
|
8076
|
+
children
|
|
8077
|
+
);
|
|
8078
|
+
};
|
|
8079
|
+
const useBranchData = () => {
|
|
8080
|
+
const branchData = React.useContext(BranchContext);
|
|
8081
|
+
const { dispatch } = useEvent("branch:change");
|
|
8082
|
+
React.useEffect(() => {
|
|
8083
|
+
dispatch({ branchName: branchData.currentBranch });
|
|
8084
|
+
}, [branchData.currentBranch]);
|
|
8085
|
+
return branchData;
|
|
8086
|
+
};
|
|
8221
8087
|
function formatBranchName$1(str) {
|
|
8222
8088
|
const pattern = /[^/\w-]+/g;
|
|
8223
8089
|
const formattedStr = str.replace(pattern, "");
|
|
@@ -8316,7 +8182,7 @@ const BranchSwitcherLegacy = ({
|
|
|
8316
8182
|
className: "transition-all duration-150 ease-out text-blue-600 hover:text-blue-400 hover:underline no-underline",
|
|
8317
8183
|
href: "https://tina.io/docs/tina-cloud/"
|
|
8318
8184
|
},
|
|
8319
|
-
"Learn more about moving to production with
|
|
8185
|
+
"Learn more about moving to production with TinaCloud."
|
|
8320
8186
|
)), /* @__PURE__ */ React.createElement("p", null, /* @__PURE__ */ React.createElement(
|
|
8321
8187
|
Button$1,
|
|
8322
8188
|
{
|
|
@@ -8552,7 +8418,7 @@ const EditoralBranchSwitcher = ({
|
|
|
8552
8418
|
className: "transition-all duration-150 ease-out text-blue-600 hover:text-blue-400 hover:underline no-underline",
|
|
8553
8419
|
href: "https://tina.io/docs/tina-cloud/"
|
|
8554
8420
|
},
|
|
8555
|
-
"Learn more about moving to production with
|
|
8421
|
+
"Learn more about moving to production with TinaCloud."
|
|
8556
8422
|
)), /* @__PURE__ */ React.createElement("p", null, /* @__PURE__ */ React.createElement(
|
|
8557
8423
|
Button$1,
|
|
8558
8424
|
{
|
|
@@ -8767,7 +8633,10 @@ const BranchSelector = ({
|
|
|
8767
8633
|
label: "View in GitHub",
|
|
8768
8634
|
Icon: /* @__PURE__ */ React.createElement(BiLinkExternal, { className: "w-5 h-auto text-blue-500 opacity-70" }),
|
|
8769
8635
|
onMouseDown: () => {
|
|
8770
|
-
window.open(
|
|
8636
|
+
window.open(
|
|
8637
|
+
branch.githubPullRequestUrl,
|
|
8638
|
+
"_blank"
|
|
8639
|
+
);
|
|
8771
8640
|
}
|
|
8772
8641
|
},
|
|
8773
8642
|
typeof previewFunction === "function" && ((_b2 = previewFunction({ branch: branch.name })) == null ? void 0 : _b2.url) && {
|
|
@@ -9073,7 +8942,9 @@ class EventBus {
|
|
|
9073
8942
|
} else {
|
|
9074
8943
|
events = event;
|
|
9075
8944
|
}
|
|
9076
|
-
const newListeners = events.map(
|
|
8945
|
+
const newListeners = events.map(
|
|
8946
|
+
(event2) => new Listener(event2, callback)
|
|
8947
|
+
);
|
|
9077
8948
|
newListeners.forEach((newListener) => this.listeners.add(newListener));
|
|
9078
8949
|
return () => {
|
|
9079
8950
|
newListeners.forEach((listener) => this.listeners.delete(listener));
|
|
@@ -9429,9 +9300,7 @@ class TinaMediaStore {
|
|
|
9429
9300
|
const deleteStartTime = Date.now();
|
|
9430
9301
|
while (true) {
|
|
9431
9302
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
9432
|
-
const { error, message } = await this.api.getRequestStatus(
|
|
9433
|
-
requestId
|
|
9434
|
-
);
|
|
9303
|
+
const { error, message } = await this.api.getRequestStatus(requestId);
|
|
9435
9304
|
if (error !== void 0) {
|
|
9436
9305
|
if (error) {
|
|
9437
9306
|
throw new Error(message);
|
|
@@ -9456,6 +9325,17 @@ class TinaMediaStore {
|
|
|
9456
9325
|
}
|
|
9457
9326
|
}
|
|
9458
9327
|
}
|
|
9328
|
+
const encodeUrlIfNeeded = (url) => {
|
|
9329
|
+
if (url) {
|
|
9330
|
+
try {
|
|
9331
|
+
return new URL(url).toString();
|
|
9332
|
+
} catch (e) {
|
|
9333
|
+
return url;
|
|
9334
|
+
}
|
|
9335
|
+
} else {
|
|
9336
|
+
return url;
|
|
9337
|
+
}
|
|
9338
|
+
};
|
|
9459
9339
|
let MediaManager$1 = class MediaManager {
|
|
9460
9340
|
constructor(store, events) {
|
|
9461
9341
|
this.store = store;
|
|
@@ -9528,6 +9408,20 @@ let MediaManager$1 = class MediaManager {
|
|
|
9528
9408
|
try {
|
|
9529
9409
|
this.events.dispatch({ type: "media:list:start", ...options });
|
|
9530
9410
|
const media = await this.store.list(options);
|
|
9411
|
+
media.items = media.items.map((item) => {
|
|
9412
|
+
if (item.type === "dir") {
|
|
9413
|
+
return item;
|
|
9414
|
+
}
|
|
9415
|
+
if (item.thumbnails) {
|
|
9416
|
+
for (const [size, src] of Object.entries(item.thumbnails)) {
|
|
9417
|
+
item.thumbnails[size] = encodeUrlIfNeeded(src);
|
|
9418
|
+
}
|
|
9419
|
+
}
|
|
9420
|
+
return {
|
|
9421
|
+
...item,
|
|
9422
|
+
src: encodeUrlIfNeeded(item.src)
|
|
9423
|
+
};
|
|
9424
|
+
});
|
|
9531
9425
|
this.events.dispatch({ type: "media:list:success", ...options, media });
|
|
9532
9426
|
return media;
|
|
9533
9427
|
} catch (error) {
|
|
@@ -9556,7 +9450,7 @@ const E_BAD_ROUTE = new MediaListError({
|
|
|
9556
9450
|
});
|
|
9557
9451
|
new MediaListError({
|
|
9558
9452
|
title: "An Error Occurred",
|
|
9559
|
-
message: "Something went wrong accessing your media from
|
|
9453
|
+
message: "Something went wrong accessing your media from TinaCloud.",
|
|
9560
9454
|
docsLink: ""
|
|
9561
9455
|
// TODO
|
|
9562
9456
|
});
|
|
@@ -9741,7 +9635,7 @@ let Alerts$1 = class Alerts {
|
|
|
9741
9635
|
return this.add("error", message, timeout);
|
|
9742
9636
|
}
|
|
9743
9637
|
};
|
|
9744
|
-
const
|
|
9638
|
+
const SidebarLoadingPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
9745
9639
|
"div",
|
|
9746
9640
|
{
|
|
9747
9641
|
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
@@ -9754,25 +9648,8 @@ const NoFormsPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
|
9754
9648
|
animationDuration: "150ms"
|
|
9755
9649
|
}
|
|
9756
9650
|
},
|
|
9757
|
-
/* @__PURE__ */ React.createElement(
|
|
9758
|
-
/* @__PURE__ */ React.createElement(
|
|
9759
|
-
/* @__PURE__ */ React.createElement("p", { className: "block" }, /* @__PURE__ */ React.createElement(
|
|
9760
|
-
Button$1,
|
|
9761
|
-
{
|
|
9762
|
-
href: "https://tina.io/docs/tinacms-context/",
|
|
9763
|
-
target: "_blank",
|
|
9764
|
-
as: "a"
|
|
9765
|
-
},
|
|
9766
|
-
/* @__PURE__ */ React.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
9767
|
-
" Contextual Editing"
|
|
9768
|
-
))
|
|
9769
|
-
);
|
|
9770
|
-
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React.createElement(
|
|
9771
|
-
"span",
|
|
9772
|
-
{
|
|
9773
|
-
className: `text-[24px] leading-none inline-block ${className}`,
|
|
9774
|
-
...props
|
|
9775
|
-
}
|
|
9651
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pb-5" }, "Please wait while TinaCMS", /* @__PURE__ */ React.createElement("br", null), "loads your content"),
|
|
9652
|
+
/* @__PURE__ */ React.createElement(LoadingDots, { color: "var(--tina-color-primary)" })
|
|
9776
9653
|
);
|
|
9777
9654
|
class SidebarState {
|
|
9778
9655
|
constructor(events, options = {}) {
|
|
@@ -9787,7 +9664,7 @@ class SidebarState {
|
|
|
9787
9664
|
};
|
|
9788
9665
|
this.position = options.position || "displace";
|
|
9789
9666
|
this.renderNav = options.renderNav || true;
|
|
9790
|
-
this.
|
|
9667
|
+
this.loadingPlaceholder = options.placeholder || SidebarLoadingPlaceholder;
|
|
9791
9668
|
if ((_a = options.buttons) == null ? void 0 : _a.save) {
|
|
9792
9669
|
this.buttons.save = options.buttons.save;
|
|
9793
9670
|
}
|
|
@@ -9815,7 +9692,7 @@ class SidebarState {
|
|
|
9815
9692
|
}
|
|
9816
9693
|
}
|
|
9817
9694
|
function createScreen({
|
|
9818
|
-
Component
|
|
9695
|
+
Component,
|
|
9819
9696
|
props,
|
|
9820
9697
|
...options
|
|
9821
9698
|
}) {
|
|
@@ -9824,7 +9701,7 @@ function createScreen({
|
|
|
9824
9701
|
layout: "popup",
|
|
9825
9702
|
...options,
|
|
9826
9703
|
Component(screenProps) {
|
|
9827
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
9704
|
+
return /* @__PURE__ */ React__default.createElement(Component, { ...screenProps, ...props });
|
|
9828
9705
|
}
|
|
9829
9706
|
};
|
|
9830
9707
|
}
|
|
@@ -9861,238 +9738,6 @@ const ModalLayout = ({ children, name, close: close2, layout }) => {
|
|
|
9861
9738
|
children
|
|
9862
9739
|
)));
|
|
9863
9740
|
};
|
|
9864
|
-
const Item = ({
|
|
9865
|
-
item,
|
|
9866
|
-
depth,
|
|
9867
|
-
setActiveFormId
|
|
9868
|
-
}) => {
|
|
9869
|
-
const cms = useCMS();
|
|
9870
|
-
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
9871
|
-
const form = React.useMemo(
|
|
9872
|
-
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
9873
|
-
[item.formId]
|
|
9874
|
-
);
|
|
9875
|
-
return /* @__PURE__ */ React.createElement(
|
|
9876
|
-
"button",
|
|
9877
|
-
{
|
|
9878
|
-
type: "button",
|
|
9879
|
-
key: item.path,
|
|
9880
|
-
onClick: () => setActiveFormId(item.formId),
|
|
9881
|
-
className: `${depths[depth] || "pl-12"} pr-6 py-3 w-full h-full bg-transparent border-none text-lg text-gray-700 group hover:bg-gray-50 transition-all ease-out duration-150 flex items-center justify-between gap-2`
|
|
9882
|
-
},
|
|
9883
|
-
/* @__PURE__ */ React.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
9884
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
9885
|
-
);
|
|
9886
|
-
};
|
|
9887
|
-
const FormListItem = ({
|
|
9888
|
-
item,
|
|
9889
|
-
depth,
|
|
9890
|
-
setActiveFormId
|
|
9891
|
-
}) => {
|
|
9892
|
-
var _a;
|
|
9893
|
-
return /* @__PURE__ */ React.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
9894
|
-
if (subItem.type === "document") {
|
|
9895
|
-
return /* @__PURE__ */ React.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React.createElement(
|
|
9896
|
-
Item,
|
|
9897
|
-
{
|
|
9898
|
-
setActiveFormId,
|
|
9899
|
-
depth: depth + 1,
|
|
9900
|
-
item: subItem
|
|
9901
|
-
}
|
|
9902
|
-
));
|
|
9903
|
-
}
|
|
9904
|
-
})));
|
|
9905
|
-
};
|
|
9906
|
-
const FormLists = (props) => {
|
|
9907
|
-
const cms = useCMS();
|
|
9908
|
-
return /* @__PURE__ */ React.createElement(
|
|
9909
|
-
Transition,
|
|
9910
|
-
{
|
|
9911
|
-
appear: true,
|
|
9912
|
-
show: true,
|
|
9913
|
-
as: "div",
|
|
9914
|
-
enter: "transition-all ease-out duration-150",
|
|
9915
|
-
enterFrom: "opacity-0 -translate-x-1/2",
|
|
9916
|
-
enterTo: "opacity-100",
|
|
9917
|
-
leave: "transition-all ease-out duration-150",
|
|
9918
|
-
leaveFrom: "opacity-100",
|
|
9919
|
-
leaveTo: "opacity-0 -translate-x-1/2"
|
|
9920
|
-
},
|
|
9921
|
-
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React.createElement(
|
|
9922
|
-
FormList,
|
|
9923
|
-
{
|
|
9924
|
-
isEditing: props.isEditing,
|
|
9925
|
-
setActiveFormId: (id) => {
|
|
9926
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
9927
|
-
},
|
|
9928
|
-
formList
|
|
9929
|
-
}
|
|
9930
|
-
)))
|
|
9931
|
-
);
|
|
9932
|
-
};
|
|
9933
|
-
const FormList = (props) => {
|
|
9934
|
-
const cms = useCMS();
|
|
9935
|
-
const listItems = React.useMemo(() => {
|
|
9936
|
-
var _a;
|
|
9937
|
-
const orderedListItems = [];
|
|
9938
|
-
const globalItems = [];
|
|
9939
|
-
const topItems = [];
|
|
9940
|
-
props.formList.items.forEach((item) => {
|
|
9941
|
-
if (item.type === "document") {
|
|
9942
|
-
const form = cms.state.forms.find(
|
|
9943
|
-
({ tinaForm }) => tinaForm.id === item.formId
|
|
9944
|
-
);
|
|
9945
|
-
if (form.tinaForm.global) {
|
|
9946
|
-
globalItems.push(item);
|
|
9947
|
-
} else {
|
|
9948
|
-
orderedListItems.push(item);
|
|
9949
|
-
}
|
|
9950
|
-
} else {
|
|
9951
|
-
orderedListItems.push(item);
|
|
9952
|
-
}
|
|
9953
|
-
});
|
|
9954
|
-
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
9955
|
-
topItems.push({ type: "list", label: "Documents" });
|
|
9956
|
-
}
|
|
9957
|
-
let extra = [];
|
|
9958
|
-
if (globalItems.length) {
|
|
9959
|
-
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
9960
|
-
}
|
|
9961
|
-
return [...topItems, ...orderedListItems, ...extra];
|
|
9962
|
-
}, [JSON.stringify(props.formList.items)]);
|
|
9963
|
-
return /* @__PURE__ */ React.createElement("ul", null, /* @__PURE__ */ React.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
9964
|
-
if (item.type === "list") {
|
|
9965
|
-
return /* @__PURE__ */ React.createElement(
|
|
9966
|
-
"div",
|
|
9967
|
-
{
|
|
9968
|
-
key: item.label,
|
|
9969
|
-
className: `relative group text-left w-full bg-white shadow-sm
|
|
9970
|
-
border-gray-100 px-6 -mt-px pb-3 ${index > 0 ? "pt-6 bg-gradient-to-b from-gray-50 via-white to-white" : "pt-3"}`
|
|
9971
|
-
},
|
|
9972
|
-
/* @__PURE__ */ React.createElement(
|
|
9973
|
-
"span",
|
|
9974
|
-
{
|
|
9975
|
-
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
9976
|
-
},
|
|
9977
|
-
item.label
|
|
9978
|
-
)
|
|
9979
|
-
);
|
|
9980
|
-
}
|
|
9981
|
-
return /* @__PURE__ */ React.createElement(
|
|
9982
|
-
FormListItem,
|
|
9983
|
-
{
|
|
9984
|
-
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
9985
|
-
key: item.formId,
|
|
9986
|
-
item,
|
|
9987
|
-
depth: 0
|
|
9988
|
-
}
|
|
9989
|
-
);
|
|
9990
|
-
})));
|
|
9991
|
-
};
|
|
9992
|
-
const FormsView = ({
|
|
9993
|
-
children
|
|
9994
|
-
}) => {
|
|
9995
|
-
const cms = useCMS$1();
|
|
9996
|
-
const { setFormIsPristine } = React.useContext(SidebarContext);
|
|
9997
|
-
const isMultiform = cms.state.forms.length > 1;
|
|
9998
|
-
const activeForm = cms.state.forms.find(
|
|
9999
|
-
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
10000
|
-
);
|
|
10001
|
-
const isEditing = !!activeForm;
|
|
10002
|
-
if (!cms.state.formLists.length) {
|
|
10003
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, " ", children, " ");
|
|
10004
|
-
}
|
|
10005
|
-
if (isMultiform && !activeForm) {
|
|
10006
|
-
return /* @__PURE__ */ React.createElement(FormLists, { isEditing });
|
|
10007
|
-
}
|
|
10008
|
-
const formMetas = cms.plugins.all("form:meta");
|
|
10009
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, activeForm && /* @__PURE__ */ React.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React.createElement(React.Fragment, { key: meta.name }, /* @__PURE__ */ React.createElement(meta.Component, null))), /* @__PURE__ */ React.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
10010
|
-
};
|
|
10011
|
-
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
10012
|
-
return /* @__PURE__ */ React.createElement(
|
|
10013
|
-
"div",
|
|
10014
|
-
{
|
|
10015
|
-
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
10016
|
-
style: isEditing ? {
|
|
10017
|
-
transform: "none",
|
|
10018
|
-
animationName: "fly-in-left",
|
|
10019
|
-
animationDuration: "150ms",
|
|
10020
|
-
animationDelay: "0",
|
|
10021
|
-
animationIterationCount: 1,
|
|
10022
|
-
animationTimingFunction: "ease-out"
|
|
10023
|
-
} : {
|
|
10024
|
-
transform: "translate3d(100%, 0, 0)"
|
|
10025
|
-
}
|
|
10026
|
-
},
|
|
10027
|
-
children
|
|
10028
|
-
);
|
|
10029
|
-
};
|
|
10030
|
-
const MultiformFormHeader = ({
|
|
10031
|
-
activeForm
|
|
10032
|
-
}) => {
|
|
10033
|
-
const cms = useCMS$1();
|
|
10034
|
-
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10035
|
-
return /* @__PURE__ */ React.createElement(
|
|
10036
|
-
"div",
|
|
10037
|
-
{
|
|
10038
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10039
|
-
},
|
|
10040
|
-
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10041
|
-
"button",
|
|
10042
|
-
{
|
|
10043
|
-
type: "button",
|
|
10044
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10045
|
-
onClick: () => {
|
|
10046
|
-
const state = activeForm.tinaForm.finalForm.getState();
|
|
10047
|
-
if (state.invalid === true) {
|
|
10048
|
-
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
10049
|
-
} else {
|
|
10050
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
10051
|
-
}
|
|
10052
|
-
}
|
|
10053
|
-
},
|
|
10054
|
-
/* @__PURE__ */ React.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10055
|
-
), /* @__PURE__ */ React.createElement(
|
|
10056
|
-
"button",
|
|
10057
|
-
{
|
|
10058
|
-
type: "button",
|
|
10059
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10060
|
-
onClick: () => {
|
|
10061
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10062
|
-
cms.state.activeFormId
|
|
10063
|
-
).name;
|
|
10064
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10065
|
-
}
|
|
10066
|
-
},
|
|
10067
|
-
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10068
|
-
), /* @__PURE__ */ React.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10069
|
-
);
|
|
10070
|
-
};
|
|
10071
|
-
const FormHeader = ({ activeForm }) => {
|
|
10072
|
-
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10073
|
-
const cms = useCMS$1();
|
|
10074
|
-
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
10075
|
-
return /* @__PURE__ */ React.createElement(
|
|
10076
|
-
"div",
|
|
10077
|
-
{
|
|
10078
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10079
|
-
},
|
|
10080
|
-
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10081
|
-
"button",
|
|
10082
|
-
{
|
|
10083
|
-
type: "button",
|
|
10084
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10085
|
-
onClick: () => {
|
|
10086
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10087
|
-
cms.state.activeFormId
|
|
10088
|
-
).name;
|
|
10089
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10090
|
-
}
|
|
10091
|
-
},
|
|
10092
|
-
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10093
|
-
), shortFormLabel && /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10094
|
-
);
|
|
10095
|
-
};
|
|
10096
9741
|
function ImFilesEmpty(props) {
|
|
10097
9742
|
return GenIcon({ "tag": "svg", "attr": { "version": "1.1", "viewBox": "0 0 16 16" }, "child": [{ "tag": "path", "attr": { "d": "M14.341 5.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.689 0.561 1.25 1.25 1.25h9.5c0.689 0 1.25-0.561 1.25-1.25v-7.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 4.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134v0zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-9.5c-0.136 0-0.25-0.114-0.25-0.25v-11.5c0-0.135 0.114-0.25 0.25-0.25 0 0 5.749-0 5.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v7.75z" }, "child": [] }, { "tag": "path", "attr": { "d": "M9.421 0.659c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.604 0.43 1.109 1 1.225v-12.725c0-0.135 0.115-0.25 0.25-0.25h7.607c-0.151-0.124-0.297-0.238-0.437-0.341z" }, "child": [] }] })(props);
|
|
10098
9743
|
}
|
|
@@ -10335,7 +9980,7 @@ const SyncStatus = ({ cms, setEventsOpen }) => {
|
|
|
10335
9980
|
"Event Log"
|
|
10336
9981
|
));
|
|
10337
9982
|
};
|
|
10338
|
-
const version = "2.
|
|
9983
|
+
const version = "2.7.4";
|
|
10339
9984
|
const Nav = ({
|
|
10340
9985
|
isLocalMode,
|
|
10341
9986
|
className = "",
|
|
@@ -10577,6 +10222,293 @@ const ResizeHandle = () => {
|
|
|
10577
10222
|
/* @__PURE__ */ React.createElement("span", { className: "absolute top-1/2 left-1/2 h-4/6 w-px bg-gray-200 transform -translate-y-1/2 -translate-x-1/2 opacity-30 transition-opacity duration-150 ease-out group-hover:opacity-100" })
|
|
10578
10223
|
);
|
|
10579
10224
|
};
|
|
10225
|
+
const Item = ({
|
|
10226
|
+
item,
|
|
10227
|
+
depth,
|
|
10228
|
+
setActiveFormId
|
|
10229
|
+
}) => {
|
|
10230
|
+
const cms = useCMS();
|
|
10231
|
+
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
10232
|
+
const form = React.useMemo(
|
|
10233
|
+
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
10234
|
+
[item.formId]
|
|
10235
|
+
);
|
|
10236
|
+
return /* @__PURE__ */ React.createElement(
|
|
10237
|
+
"button",
|
|
10238
|
+
{
|
|
10239
|
+
type: "button",
|
|
10240
|
+
key: item.path,
|
|
10241
|
+
onClick: () => setActiveFormId(item.formId),
|
|
10242
|
+
className: `${depths[depth] || "pl-12"} pr-6 py-3 w-full h-full bg-transparent border-none text-lg text-gray-700 group hover:bg-gray-50 transition-all ease-out duration-150 flex items-center justify-between gap-2`
|
|
10243
|
+
},
|
|
10244
|
+
/* @__PURE__ */ React.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
10245
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
10246
|
+
);
|
|
10247
|
+
};
|
|
10248
|
+
const FormListItem = ({
|
|
10249
|
+
item,
|
|
10250
|
+
depth,
|
|
10251
|
+
setActiveFormId
|
|
10252
|
+
}) => {
|
|
10253
|
+
var _a;
|
|
10254
|
+
return /* @__PURE__ */ React.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
10255
|
+
if (subItem.type === "document") {
|
|
10256
|
+
return /* @__PURE__ */ React.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React.createElement(
|
|
10257
|
+
Item,
|
|
10258
|
+
{
|
|
10259
|
+
setActiveFormId,
|
|
10260
|
+
depth: depth + 1,
|
|
10261
|
+
item: subItem
|
|
10262
|
+
}
|
|
10263
|
+
));
|
|
10264
|
+
}
|
|
10265
|
+
})));
|
|
10266
|
+
};
|
|
10267
|
+
const FormLists = (props) => {
|
|
10268
|
+
const cms = useCMS();
|
|
10269
|
+
return /* @__PURE__ */ React.createElement(
|
|
10270
|
+
Transition,
|
|
10271
|
+
{
|
|
10272
|
+
appear: true,
|
|
10273
|
+
show: true,
|
|
10274
|
+
as: "div",
|
|
10275
|
+
enter: "transition-all ease-out duration-150",
|
|
10276
|
+
enterFrom: "opacity-0 -translate-x-1/2",
|
|
10277
|
+
enterTo: "opacity-100",
|
|
10278
|
+
leave: "transition-all ease-out duration-150",
|
|
10279
|
+
leaveFrom: "opacity-100",
|
|
10280
|
+
leaveTo: "opacity-0 -translate-x-1/2"
|
|
10281
|
+
},
|
|
10282
|
+
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React.createElement(
|
|
10283
|
+
FormList,
|
|
10284
|
+
{
|
|
10285
|
+
isEditing: props.isEditing,
|
|
10286
|
+
setActiveFormId: (id) => {
|
|
10287
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
10288
|
+
},
|
|
10289
|
+
formList
|
|
10290
|
+
}
|
|
10291
|
+
)))
|
|
10292
|
+
);
|
|
10293
|
+
};
|
|
10294
|
+
const FormList = (props) => {
|
|
10295
|
+
const cms = useCMS();
|
|
10296
|
+
const listItems = React.useMemo(() => {
|
|
10297
|
+
var _a;
|
|
10298
|
+
const orderedListItems = [];
|
|
10299
|
+
const globalItems = [];
|
|
10300
|
+
const topItems = [];
|
|
10301
|
+
props.formList.items.forEach((item) => {
|
|
10302
|
+
if (item.type === "document") {
|
|
10303
|
+
const form = cms.state.forms.find(
|
|
10304
|
+
({ tinaForm }) => tinaForm.id === item.formId
|
|
10305
|
+
);
|
|
10306
|
+
if (form.tinaForm.global) {
|
|
10307
|
+
globalItems.push(item);
|
|
10308
|
+
} else {
|
|
10309
|
+
orderedListItems.push(item);
|
|
10310
|
+
}
|
|
10311
|
+
} else {
|
|
10312
|
+
orderedListItems.push(item);
|
|
10313
|
+
}
|
|
10314
|
+
});
|
|
10315
|
+
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
10316
|
+
topItems.push({ type: "list", label: "Documents" });
|
|
10317
|
+
}
|
|
10318
|
+
let extra = [];
|
|
10319
|
+
if (globalItems.length) {
|
|
10320
|
+
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
10321
|
+
}
|
|
10322
|
+
return [...topItems, ...orderedListItems, ...extra];
|
|
10323
|
+
}, [JSON.stringify(props.formList.items)]);
|
|
10324
|
+
return /* @__PURE__ */ React.createElement("ul", null, /* @__PURE__ */ React.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
10325
|
+
if (item.type === "list") {
|
|
10326
|
+
return /* @__PURE__ */ React.createElement(
|
|
10327
|
+
"div",
|
|
10328
|
+
{
|
|
10329
|
+
key: item.label,
|
|
10330
|
+
className: `relative group text-left w-full bg-white shadow-sm
|
|
10331
|
+
border-gray-100 px-6 -mt-px pb-3 ${index > 0 ? "pt-6 bg-gradient-to-b from-gray-50 via-white to-white" : "pt-3"}`
|
|
10332
|
+
},
|
|
10333
|
+
/* @__PURE__ */ React.createElement(
|
|
10334
|
+
"span",
|
|
10335
|
+
{
|
|
10336
|
+
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
10337
|
+
},
|
|
10338
|
+
item.label
|
|
10339
|
+
)
|
|
10340
|
+
);
|
|
10341
|
+
}
|
|
10342
|
+
return /* @__PURE__ */ React.createElement(
|
|
10343
|
+
FormListItem,
|
|
10344
|
+
{
|
|
10345
|
+
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
10346
|
+
key: item.formId,
|
|
10347
|
+
item,
|
|
10348
|
+
depth: 0
|
|
10349
|
+
}
|
|
10350
|
+
);
|
|
10351
|
+
})));
|
|
10352
|
+
};
|
|
10353
|
+
const SidebarNoFormsPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
10354
|
+
"div",
|
|
10355
|
+
{
|
|
10356
|
+
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
10357
|
+
style: {
|
|
10358
|
+
animationName: "fade-in",
|
|
10359
|
+
animationDelay: "300ms",
|
|
10360
|
+
animationTimingFunction: "ease-out",
|
|
10361
|
+
animationIterationCount: 1,
|
|
10362
|
+
animationFillMode: "both",
|
|
10363
|
+
animationDuration: "150ms"
|
|
10364
|
+
}
|
|
10365
|
+
},
|
|
10366
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pb-5" }, "Looks like there's ", /* @__PURE__ */ React.createElement("br", null), "nothing to edit on ", /* @__PURE__ */ React.createElement("br", null), "this page."),
|
|
10367
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pt-5" }, /* @__PURE__ */ React.createElement(
|
|
10368
|
+
Button$1,
|
|
10369
|
+
{
|
|
10370
|
+
href: "https://tina.io/docs/contextual-editing/overview",
|
|
10371
|
+
target: "_blank",
|
|
10372
|
+
as: "a"
|
|
10373
|
+
},
|
|
10374
|
+
/* @__PURE__ */ React.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
10375
|
+
" Contextual Editing Docs"
|
|
10376
|
+
))
|
|
10377
|
+
);
|
|
10378
|
+
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React.createElement(
|
|
10379
|
+
"span",
|
|
10380
|
+
{
|
|
10381
|
+
className: `text-[24px] leading-none inline-block ${className}`,
|
|
10382
|
+
...props
|
|
10383
|
+
}
|
|
10384
|
+
);
|
|
10385
|
+
const minimumTimeToShowLoadingIndicator = 1e3;
|
|
10386
|
+
const FormsView = ({ loadingPlaceholder } = {}) => {
|
|
10387
|
+
const cms = useCMS$1();
|
|
10388
|
+
const { setFormIsPristine } = React.useContext(SidebarContext);
|
|
10389
|
+
const [isShowingLoading, setIsShowingLoading] = React.useState(true);
|
|
10390
|
+
const [initialLoadComplete, setInitialLoadComplete] = React.useState(false);
|
|
10391
|
+
React.useEffect(() => {
|
|
10392
|
+
if (cms.state.isLoadingContent) {
|
|
10393
|
+
setIsShowingLoading(true);
|
|
10394
|
+
const timer = setTimeout(() => {
|
|
10395
|
+
if (!cms.state.isLoadingContent) {
|
|
10396
|
+
setIsShowingLoading(false);
|
|
10397
|
+
setInitialLoadComplete(true);
|
|
10398
|
+
}
|
|
10399
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10400
|
+
return () => clearTimeout(timer);
|
|
10401
|
+
} else {
|
|
10402
|
+
const timer = setTimeout(() => {
|
|
10403
|
+
setIsShowingLoading(false);
|
|
10404
|
+
setInitialLoadComplete(true);
|
|
10405
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10406
|
+
return () => clearTimeout(timer);
|
|
10407
|
+
}
|
|
10408
|
+
}, [cms.state.isLoadingContent]);
|
|
10409
|
+
if (isShowingLoading || !initialLoadComplete) {
|
|
10410
|
+
const LoadingPlaceholder = loadingPlaceholder || SidebarLoadingPlaceholder;
|
|
10411
|
+
return /* @__PURE__ */ React.createElement(LoadingPlaceholder, null);
|
|
10412
|
+
}
|
|
10413
|
+
if (!cms.state.formLists.length) {
|
|
10414
|
+
return /* @__PURE__ */ React.createElement(SidebarNoFormsPlaceholder, null);
|
|
10415
|
+
}
|
|
10416
|
+
const isMultiform = cms.state.forms.length > 1;
|
|
10417
|
+
const activeForm = cms.state.forms.find(
|
|
10418
|
+
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
10419
|
+
);
|
|
10420
|
+
const isEditing = !!activeForm;
|
|
10421
|
+
if (isMultiform && !activeForm) {
|
|
10422
|
+
return /* @__PURE__ */ React.createElement(FormLists, { isEditing });
|
|
10423
|
+
}
|
|
10424
|
+
const formMetas = cms.plugins.all("form:meta");
|
|
10425
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, activeForm && /* @__PURE__ */ React.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React.createElement(React.Fragment, { key: meta.name }, /* @__PURE__ */ React.createElement(meta.Component, null))), /* @__PURE__ */ React.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
10426
|
+
};
|
|
10427
|
+
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
10428
|
+
return /* @__PURE__ */ React.createElement(
|
|
10429
|
+
"div",
|
|
10430
|
+
{
|
|
10431
|
+
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
10432
|
+
style: isEditing ? {
|
|
10433
|
+
transform: "none",
|
|
10434
|
+
animationName: "fly-in-left",
|
|
10435
|
+
animationDuration: "150ms",
|
|
10436
|
+
animationDelay: "0",
|
|
10437
|
+
animationIterationCount: 1,
|
|
10438
|
+
animationTimingFunction: "ease-out"
|
|
10439
|
+
} : {
|
|
10440
|
+
transform: "translate3d(100%, 0, 0)"
|
|
10441
|
+
}
|
|
10442
|
+
},
|
|
10443
|
+
children
|
|
10444
|
+
);
|
|
10445
|
+
};
|
|
10446
|
+
const MultiformFormHeader = ({
|
|
10447
|
+
activeForm
|
|
10448
|
+
}) => {
|
|
10449
|
+
const cms = useCMS$1();
|
|
10450
|
+
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10451
|
+
return /* @__PURE__ */ React.createElement(
|
|
10452
|
+
"div",
|
|
10453
|
+
{
|
|
10454
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10455
|
+
},
|
|
10456
|
+
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10457
|
+
"button",
|
|
10458
|
+
{
|
|
10459
|
+
type: "button",
|
|
10460
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10461
|
+
onClick: () => {
|
|
10462
|
+
const state = activeForm.tinaForm.finalForm.getState();
|
|
10463
|
+
if (state.invalid === true) {
|
|
10464
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
10465
|
+
} else {
|
|
10466
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
10467
|
+
}
|
|
10468
|
+
}
|
|
10469
|
+
},
|
|
10470
|
+
/* @__PURE__ */ React.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10471
|
+
), /* @__PURE__ */ React.createElement(
|
|
10472
|
+
"button",
|
|
10473
|
+
{
|
|
10474
|
+
type: "button",
|
|
10475
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10476
|
+
onClick: () => {
|
|
10477
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10478
|
+
cms.state.activeFormId
|
|
10479
|
+
).name;
|
|
10480
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10481
|
+
}
|
|
10482
|
+
},
|
|
10483
|
+
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10484
|
+
), /* @__PURE__ */ React.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10485
|
+
);
|
|
10486
|
+
};
|
|
10487
|
+
const FormHeader = ({ activeForm }) => {
|
|
10488
|
+
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10489
|
+
const cms = useCMS$1();
|
|
10490
|
+
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
10491
|
+
return /* @__PURE__ */ React.createElement(
|
|
10492
|
+
"div",
|
|
10493
|
+
{
|
|
10494
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10495
|
+
},
|
|
10496
|
+
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10497
|
+
"button",
|
|
10498
|
+
{
|
|
10499
|
+
type: "button",
|
|
10500
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10501
|
+
onClick: () => {
|
|
10502
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10503
|
+
cms.state.activeFormId
|
|
10504
|
+
).name;
|
|
10505
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10506
|
+
}
|
|
10507
|
+
},
|
|
10508
|
+
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10509
|
+
), shortFormLabel && /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10510
|
+
);
|
|
10511
|
+
};
|
|
10580
10512
|
const SidebarContext = React.createContext(null);
|
|
10581
10513
|
const minPreviewWidth = 440;
|
|
10582
10514
|
const minSidebarWidth = 360;
|
|
@@ -10795,7 +10727,7 @@ const Sidebar$1 = ({
|
|
|
10795
10727
|
isLocalMode: (_d = (_c = cms.api) == null ? void 0 : _c.tina) == null ? void 0 : _d.isLocalMode,
|
|
10796
10728
|
branchingEnabled
|
|
10797
10729
|
}
|
|
10798
|
-
), /* @__PURE__ */ React.createElement(FormsView,
|
|
10730
|
+
), /* @__PURE__ */ React.createElement(FormsView, { loadingPlaceholder: sidebar.loadingPlaceholder }), activeScreen && /* @__PURE__ */ React.createElement(
|
|
10799
10731
|
ScreenPluginModal,
|
|
10800
10732
|
{
|
|
10801
10733
|
screen: activeScreen,
|
|
@@ -10971,7 +10903,7 @@ const SidebarHeader = ({
|
|
|
10971
10903
|
className: "h-5 w-auto -mx-1 text-blue-500",
|
|
10972
10904
|
stroke: "currentColor",
|
|
10973
10905
|
fill: "currentColor",
|
|
10974
|
-
|
|
10906
|
+
strokeWidth: "0",
|
|
10975
10907
|
viewBox: "0 0 24 24",
|
|
10976
10908
|
xmlns: "http://www.w3.org/2000/svg"
|
|
10977
10909
|
},
|
|
@@ -11111,6 +11043,93 @@ function createPlaceholder(name, _pr) {
|
|
|
11111
11043
|
);
|
|
11112
11044
|
};
|
|
11113
11045
|
}
|
|
11046
|
+
function dirname(path) {
|
|
11047
|
+
var _a, _b;
|
|
11048
|
+
const pattern = new RegExp("(?<prevDir>.*)/");
|
|
11049
|
+
return (_b = (_a = path.match(pattern)) == null ? void 0 : _a.groups) == null ? void 0 : _b.prevDir;
|
|
11050
|
+
}
|
|
11051
|
+
const BreadcrumbButton = ({ className = "", ...props }) => /* @__PURE__ */ React__default.createElement(
|
|
11052
|
+
"button",
|
|
11053
|
+
{
|
|
11054
|
+
className: "capitalize transition-colors duration-150 border-0 bg-transparent hover:text-blue-500 " + className,
|
|
11055
|
+
...props
|
|
11056
|
+
}
|
|
11057
|
+
);
|
|
11058
|
+
function Breadcrumb$1({ directory = "", setDirectory }) {
|
|
11059
|
+
directory = directory.replace(/^\/|\/$/g, "");
|
|
11060
|
+
let prevDir = dirname(directory) || "";
|
|
11061
|
+
if (prevDir === ".") {
|
|
11062
|
+
prevDir = "";
|
|
11063
|
+
}
|
|
11064
|
+
return /* @__PURE__ */ React__default.createElement("div", { className: "w-full flex items-center text-[16px] text-gray-300" }, directory !== "" && /* @__PURE__ */ React__default.createElement(
|
|
11065
|
+
IconButton,
|
|
11066
|
+
{
|
|
11067
|
+
variant: "ghost",
|
|
11068
|
+
className: "mr-2",
|
|
11069
|
+
onClick: () => setDirectory(prevDir)
|
|
11070
|
+
},
|
|
11071
|
+
/* @__PURE__ */ React__default.createElement(
|
|
11072
|
+
LeftArrowIcon,
|
|
11073
|
+
{
|
|
11074
|
+
className: `w-7 h-auto fill-gray-300 hover:fill-gray-900 transition duration-150 ease-out`
|
|
11075
|
+
}
|
|
11076
|
+
)
|
|
11077
|
+
), /* @__PURE__ */ React__default.createElement(
|
|
11078
|
+
BreadcrumbButton,
|
|
11079
|
+
{
|
|
11080
|
+
onClick: () => setDirectory(""),
|
|
11081
|
+
className: directory === "" ? "text-gray-500 font-bold" : "text-gray-300 font-medium after:pl-1.5 after:content-['/']"
|
|
11082
|
+
},
|
|
11083
|
+
"Media"
|
|
11084
|
+
), directory && directory.split("/").map((part, index, parts) => {
|
|
11085
|
+
const currentDir = parts.slice(0, index + 1).join("/");
|
|
11086
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
11087
|
+
BreadcrumbButton,
|
|
11088
|
+
{
|
|
11089
|
+
className: "pl-1.5 " + (index + 1 === parts.length ? "text-gray-500 font-bold" : "text-gray-300 font-medium after:pl-1.5 after:content-['/']"),
|
|
11090
|
+
key: currentDir,
|
|
11091
|
+
onClick: () => {
|
|
11092
|
+
setDirectory(currentDir);
|
|
11093
|
+
}
|
|
11094
|
+
},
|
|
11095
|
+
part
|
|
11096
|
+
);
|
|
11097
|
+
}));
|
|
11098
|
+
}
|
|
11099
|
+
const CopyField = ({ label, description, value }) => {
|
|
11100
|
+
const [copied, setCopied] = React__default.useState(false);
|
|
11101
|
+
const [fadeOut, setFadeOut] = React__default.useState(false);
|
|
11102
|
+
return /* @__PURE__ */ React__default.createElement("div", { className: "w-full" }, label && /* @__PURE__ */ React__default.createElement("label", { className: "w-full mb-1 block flex-1 text-sm font-bold leading-5 text-gray-700" }, label), /* @__PURE__ */ React__default.createElement(
|
|
11103
|
+
"span",
|
|
11104
|
+
{
|
|
11105
|
+
onClick: () => {
|
|
11106
|
+
if (copied === true)
|
|
11107
|
+
return;
|
|
11108
|
+
setCopied(true);
|
|
11109
|
+
setTimeout(() => {
|
|
11110
|
+
setFadeOut(true);
|
|
11111
|
+
}, 2500);
|
|
11112
|
+
setTimeout(() => {
|
|
11113
|
+
setCopied(false);
|
|
11114
|
+
setFadeOut(false);
|
|
11115
|
+
}, 3e3);
|
|
11116
|
+
navigator.clipboard.writeText(value);
|
|
11117
|
+
},
|
|
11118
|
+
className: `shadow-inner text-base leading-5 whitespace-normal break-all px-3 py-2 text-gray-600 w-full bg-gray-50 border border-gray-200 transition-all ease-out duration-150 rounded-md relative overflow-hidden appearance-none flex items-center w-full cursor-pointer hover:bg-white hover:text-blue-500 ${copied ? `pointer-events-none` : ``}`
|
|
11119
|
+
},
|
|
11120
|
+
/* @__PURE__ */ React__default.createElement(BiCopyAlt, { className: "relative text-blue-500 shrink-0 w-5 h-auto mr-1.5 -ml-0.5 z-20" }),
|
|
11121
|
+
" ",
|
|
11122
|
+
value,
|
|
11123
|
+
" ",
|
|
11124
|
+
copied && /* @__PURE__ */ React__default.createElement(
|
|
11125
|
+
"span",
|
|
11126
|
+
{
|
|
11127
|
+
className: `${fadeOut ? `opacity-0` : `opacity-100`} text-blue-500 transition-opacity duration-500 absolute right-0 w-full h-full px-3 py-2 bg-white bg-opacity-90 flex items-center justify-center text-center tracking-wide font-medium z-10`
|
|
11128
|
+
},
|
|
11129
|
+
/* @__PURE__ */ React__default.createElement("span", null, "Copied to clipboard!")
|
|
11130
|
+
)
|
|
11131
|
+
), description && /* @__PURE__ */ React__default.createElement("p", { className: "mt-2 text-sm text-gray-500" }, description));
|
|
11132
|
+
};
|
|
11114
11133
|
function ListMediaItem({ item, onClick, active }) {
|
|
11115
11134
|
let FileIcon = BiFile;
|
|
11116
11135
|
if (item.type === "dir") {
|
|
@@ -11186,59 +11205,6 @@ function GridMediaItem({ item, active, onClick }) {
|
|
|
11186
11205
|
)
|
|
11187
11206
|
);
|
|
11188
11207
|
}
|
|
11189
|
-
function dirname(path) {
|
|
11190
|
-
var _a, _b;
|
|
11191
|
-
const pattern = new RegExp("(?<prevDir>.*)/");
|
|
11192
|
-
return (_b = (_a = path.match(pattern)) == null ? void 0 : _a.groups) == null ? void 0 : _b.prevDir;
|
|
11193
|
-
}
|
|
11194
|
-
const BreadcrumbButton = ({ className = "", ...props }) => /* @__PURE__ */ React__default.createElement(
|
|
11195
|
-
"button",
|
|
11196
|
-
{
|
|
11197
|
-
className: "capitalize transition-colors duration-150 border-0 bg-transparent hover:text-blue-500 " + className,
|
|
11198
|
-
...props
|
|
11199
|
-
}
|
|
11200
|
-
);
|
|
11201
|
-
function Breadcrumb$1({ directory = "", setDirectory }) {
|
|
11202
|
-
directory = directory.replace(/^\/|\/$/g, "");
|
|
11203
|
-
let prevDir = dirname(directory) || "";
|
|
11204
|
-
if (prevDir === ".") {
|
|
11205
|
-
prevDir = "";
|
|
11206
|
-
}
|
|
11207
|
-
return /* @__PURE__ */ React__default.createElement("div", { className: "w-full flex items-center text-[16px] text-gray-300" }, directory !== "" && /* @__PURE__ */ React__default.createElement(
|
|
11208
|
-
IconButton,
|
|
11209
|
-
{
|
|
11210
|
-
variant: "ghost",
|
|
11211
|
-
className: "mr-2",
|
|
11212
|
-
onClick: () => setDirectory(prevDir)
|
|
11213
|
-
},
|
|
11214
|
-
/* @__PURE__ */ React__default.createElement(
|
|
11215
|
-
LeftArrowIcon,
|
|
11216
|
-
{
|
|
11217
|
-
className: `w-7 h-auto fill-gray-300 hover:fill-gray-900 transition duration-150 ease-out`
|
|
11218
|
-
}
|
|
11219
|
-
)
|
|
11220
|
-
), /* @__PURE__ */ React__default.createElement(
|
|
11221
|
-
BreadcrumbButton,
|
|
11222
|
-
{
|
|
11223
|
-
onClick: () => setDirectory(""),
|
|
11224
|
-
className: directory === "" ? "text-gray-500 font-bold" : "text-gray-300 font-medium after:pl-1.5 after:content-['/']"
|
|
11225
|
-
},
|
|
11226
|
-
"Media"
|
|
11227
|
-
), directory && directory.split("/").map((part, index, parts) => {
|
|
11228
|
-
const currentDir = parts.slice(0, index + 1).join("/");
|
|
11229
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
11230
|
-
BreadcrumbButton,
|
|
11231
|
-
{
|
|
11232
|
-
className: "pl-1.5 " + (index + 1 === parts.length ? "text-gray-500 font-bold" : "text-gray-300 font-medium after:pl-1.5 after:content-['/']"),
|
|
11233
|
-
key: currentDir,
|
|
11234
|
-
onClick: () => {
|
|
11235
|
-
setDirectory(currentDir);
|
|
11236
|
-
}
|
|
11237
|
-
},
|
|
11238
|
-
part
|
|
11239
|
-
);
|
|
11240
|
-
}));
|
|
11241
|
-
}
|
|
11242
11208
|
const DeleteModal$1 = ({
|
|
11243
11209
|
close: close2,
|
|
11244
11210
|
deleteFunc,
|
|
@@ -11292,40 +11258,6 @@ const NewFolderModal = ({ onSubmit, close: close2 }) => {
|
|
|
11292
11258
|
"Create New Folder"
|
|
11293
11259
|
))));
|
|
11294
11260
|
};
|
|
11295
|
-
const CopyField = ({ label, description, value }) => {
|
|
11296
|
-
const [copied, setCopied] = React__default.useState(false);
|
|
11297
|
-
const [fadeOut, setFadeOut] = React__default.useState(false);
|
|
11298
|
-
return /* @__PURE__ */ React__default.createElement("div", { className: "w-full" }, label && /* @__PURE__ */ React__default.createElement("label", { className: "w-full mb-1 block flex-1 text-sm font-bold leading-5 text-gray-700" }, label), /* @__PURE__ */ React__default.createElement(
|
|
11299
|
-
"span",
|
|
11300
|
-
{
|
|
11301
|
-
onClick: () => {
|
|
11302
|
-
if (copied === true)
|
|
11303
|
-
return;
|
|
11304
|
-
setCopied(true);
|
|
11305
|
-
setTimeout(() => {
|
|
11306
|
-
setFadeOut(true);
|
|
11307
|
-
}, 2500);
|
|
11308
|
-
setTimeout(() => {
|
|
11309
|
-
setCopied(false);
|
|
11310
|
-
setFadeOut(false);
|
|
11311
|
-
}, 3e3);
|
|
11312
|
-
navigator.clipboard.writeText(value);
|
|
11313
|
-
},
|
|
11314
|
-
className: `shadow-inner text-base leading-5 whitespace-normal break-all px-3 py-2 text-gray-600 w-full bg-gray-50 border border-gray-200 transition-all ease-out duration-150 rounded-md relative overflow-hidden appearance-none flex items-center w-full cursor-pointer hover:bg-white hover:text-blue-500 ${copied ? `pointer-events-none` : ``}`
|
|
11315
|
-
},
|
|
11316
|
-
/* @__PURE__ */ React__default.createElement(BiCopyAlt, { className: "relative text-blue-500 shrink-0 w-5 h-auto mr-1.5 -ml-0.5 z-20" }),
|
|
11317
|
-
" ",
|
|
11318
|
-
value,
|
|
11319
|
-
" ",
|
|
11320
|
-
copied && /* @__PURE__ */ React__default.createElement(
|
|
11321
|
-
"span",
|
|
11322
|
-
{
|
|
11323
|
-
className: `${fadeOut ? `opacity-0` : `opacity-100`} text-blue-500 transition-opacity duration-500 absolute right-0 w-full h-full px-3 py-2 bg-white bg-opacity-90 flex items-center justify-center text-center tracking-wide font-medium z-10`
|
|
11324
|
-
},
|
|
11325
|
-
/* @__PURE__ */ React__default.createElement("span", null, "Copied to clipboard!")
|
|
11326
|
-
)
|
|
11327
|
-
), description && /* @__PURE__ */ React__default.createElement("p", { className: "mt-2 text-sm text-gray-500" }, description));
|
|
11328
|
-
};
|
|
11329
11261
|
const { useDropzone } = dropzone;
|
|
11330
11262
|
const join = function(...parts) {
|
|
11331
11263
|
const [first, last, slash] = [0, parts.length - 1, "/"];
|
|
@@ -11561,7 +11493,10 @@ function MediaPicker({
|
|
|
11561
11493
|
const observer = new IntersectionObserver((entries) => {
|
|
11562
11494
|
const target = entries[0];
|
|
11563
11495
|
if (target.isIntersecting && list.nextOffset) {
|
|
11564
|
-
setOffsetHistory((offsetHistory2) => [
|
|
11496
|
+
setOffsetHistory((offsetHistory2) => [
|
|
11497
|
+
...offsetHistory2,
|
|
11498
|
+
list.nextOffset
|
|
11499
|
+
]);
|
|
11565
11500
|
}
|
|
11566
11501
|
});
|
|
11567
11502
|
if (loaderRef.current) {
|
|
@@ -11824,7 +11759,7 @@ const SyncStatusContainer = ({ children }) => {
|
|
|
11824
11759
|
target: "_blank",
|
|
11825
11760
|
href: `${cms.api.tina.appDashboardLink}/media`
|
|
11826
11761
|
},
|
|
11827
|
-
"Sync Your Media In
|
|
11762
|
+
"Sync Your Media In TinaCloud.",
|
|
11828
11763
|
/* @__PURE__ */ React__default.createElement(BiLinkExternal, { className: `w-5 h-auto flex-shrink-0` })
|
|
11829
11764
|
)
|
|
11830
11765
|
)))) : /* @__PURE__ */ React__default.createElement(SyncStatusContext.Provider, { value: { syncStatus } }, children);
|
|
@@ -12156,6 +12091,7 @@ const initialState = (cms) => {
|
|
|
12156
12091
|
forms: [],
|
|
12157
12092
|
formLists: [],
|
|
12158
12093
|
editingMode: "basic",
|
|
12094
|
+
isLoadingContent: false,
|
|
12159
12095
|
quickEditSupported: false,
|
|
12160
12096
|
sidebarDisplayState: ((_a = cms == null ? void 0 : cms.sidebar) == null ? void 0 : _a.defaultState) || "open"
|
|
12161
12097
|
};
|
|
@@ -12215,7 +12151,12 @@ function tinaReducer(state, action) {
|
|
|
12215
12151
|
}
|
|
12216
12152
|
});
|
|
12217
12153
|
}
|
|
12218
|
-
return {
|
|
12154
|
+
return {
|
|
12155
|
+
...state,
|
|
12156
|
+
activeFormId,
|
|
12157
|
+
formLists: nextFormLists,
|
|
12158
|
+
isLoadingContent: false
|
|
12159
|
+
};
|
|
12219
12160
|
}
|
|
12220
12161
|
case "form-lists:remove": {
|
|
12221
12162
|
const nextFormLists = state.formLists.filter(
|
|
@@ -12284,6 +12225,9 @@ function tinaReducer(state, action) {
|
|
|
12284
12225
|
}
|
|
12285
12226
|
return { ...state, sidebarDisplayState: action.value };
|
|
12286
12227
|
}
|
|
12228
|
+
case "sidebar:set-loading-state": {
|
|
12229
|
+
return { ...state, isLoadingContent: action.value };
|
|
12230
|
+
}
|
|
12287
12231
|
default:
|
|
12288
12232
|
throw new Error(`Unhandled action ${action.type}`);
|
|
12289
12233
|
}
|
|
@@ -12525,7 +12469,9 @@ const ActiveFieldIndicator = () => {
|
|
|
12525
12469
|
if (activeEle) {
|
|
12526
12470
|
setDisplay(true);
|
|
12527
12471
|
setPosition(activeEle.getBoundingClientRect());
|
|
12528
|
-
const iframe = document.getElementById(
|
|
12472
|
+
const iframe = document.getElementById(
|
|
12473
|
+
"tina-iframe"
|
|
12474
|
+
);
|
|
12529
12475
|
if (iframe) {
|
|
12530
12476
|
setIframePosition(iframe.getBoundingClientRect());
|
|
12531
12477
|
}
|
|
@@ -12967,7 +12913,6 @@ const CreateBranchModel = ({
|
|
|
12967
12913
|
}) => {
|
|
12968
12914
|
const cms = useCMS$1();
|
|
12969
12915
|
const tinaApi = cms.api.tina;
|
|
12970
|
-
tinaApi.branch;
|
|
12971
12916
|
const [disabled, setDisabled] = React.useState(false);
|
|
12972
12917
|
const [newBranchName, setNewBranchName] = React.useState("");
|
|
12973
12918
|
const [error, setError] = React.useState("");
|
|
@@ -12993,10 +12938,10 @@ const CreateBranchModel = ({
|
|
|
12993
12938
|
const newUrl = window.location.href.replace(hash, newHash);
|
|
12994
12939
|
window.location.href = newUrl;
|
|
12995
12940
|
};
|
|
12996
|
-
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", { className: "text-
|
|
12941
|
+
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", { className: "text-lg text-gray-700 font-bold mb-2" }, "This content is protected 🚧"), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-gray-700 mb-4" }, "To make changes, you need to create a copy then get it approved and merged for it to go live."), /* @__PURE__ */ React.createElement(
|
|
12997
12942
|
PrefixedTextField,
|
|
12998
12943
|
{
|
|
12999
|
-
placeholder: "
|
|
12944
|
+
placeholder: "e.g. {{PAGE-NAME}}-updates",
|
|
13000
12945
|
value: newBranchName,
|
|
13001
12946
|
onChange: (e) => {
|
|
13002
12947
|
setError("");
|
|
@@ -13143,7 +13088,9 @@ const ImgEmbed = ({
|
|
|
13143
13088
|
const { fieldName } = useTemplates();
|
|
13144
13089
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13145
13090
|
useHotkey("enter", () => {
|
|
13146
|
-
insertNodes(editor, [
|
|
13091
|
+
insertNodes(editor, [
|
|
13092
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13093
|
+
]);
|
|
13147
13094
|
});
|
|
13148
13095
|
return /* @__PURE__ */ React__default.createElement("span", { ...attributes, className: "" }, children, element.url ? /* @__PURE__ */ React__default.createElement(
|
|
13149
13096
|
"div",
|
|
@@ -13264,9 +13211,9 @@ const EllipsisIcon = ({ title }) => {
|
|
|
13264
13211
|
));
|
|
13265
13212
|
};
|
|
13266
13213
|
const Wrapper$1 = ({ inline, children }) => {
|
|
13267
|
-
const
|
|
13214
|
+
const Component = inline ? "span" : "div";
|
|
13268
13215
|
return /* @__PURE__ */ React__default.createElement(
|
|
13269
|
-
|
|
13216
|
+
Component,
|
|
13270
13217
|
{
|
|
13271
13218
|
contentEditable: false,
|
|
13272
13219
|
style: { userSelect: "none" },
|
|
@@ -13286,7 +13233,9 @@ const InlineEmbed = ({
|
|
|
13286
13233
|
const { templates, fieldName } = useTemplates();
|
|
13287
13234
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13288
13235
|
useHotkey("enter", () => {
|
|
13289
|
-
insertNodes(editor, [
|
|
13236
|
+
insertNodes(editor, [
|
|
13237
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13238
|
+
]);
|
|
13290
13239
|
});
|
|
13291
13240
|
useHotkey("space", () => {
|
|
13292
13241
|
insertNodes(editor, [{ text: " " }], {
|
|
@@ -13342,7 +13291,9 @@ const BlockEmbed = ({
|
|
|
13342
13291
|
const { templates, fieldName } = useTemplates();
|
|
13343
13292
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13344
13293
|
useHotkey("enter", () => {
|
|
13345
|
-
insertNodes(editor, [
|
|
13294
|
+
insertNodes(editor, [
|
|
13295
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13296
|
+
]);
|
|
13346
13297
|
});
|
|
13347
13298
|
const activeTemplate = templates.find(
|
|
13348
13299
|
(template) => template.name === element.name
|
|
@@ -13688,6 +13639,11 @@ const autoformatMarks = [
|
|
|
13688
13639
|
mode: "mark",
|
|
13689
13640
|
type: MARK_CODE,
|
|
13690
13641
|
match: "`"
|
|
13642
|
+
},
|
|
13643
|
+
{
|
|
13644
|
+
mode: "mark",
|
|
13645
|
+
type: MARK_STRIKETHROUGH,
|
|
13646
|
+
match: ["~~", "~"]
|
|
13691
13647
|
}
|
|
13692
13648
|
];
|
|
13693
13649
|
const autoformatRules = [
|
|
@@ -13829,16 +13785,14 @@ const plugins$1 = [
|
|
|
13829
13785
|
})
|
|
13830
13786
|
];
|
|
13831
13787
|
const plugins = [
|
|
13788
|
+
createBasicMarksPlugin(),
|
|
13832
13789
|
createHeadingPlugin(),
|
|
13833
13790
|
createParagraphPlugin(),
|
|
13834
13791
|
createCodeBlockPlugin(),
|
|
13835
13792
|
createHTMLBlockPlugin(),
|
|
13836
13793
|
createHTMLInlinePlugin(),
|
|
13837
13794
|
createBlockquotePlugin(),
|
|
13838
|
-
createBoldPlugin(),
|
|
13839
|
-
createItalicPlugin(),
|
|
13840
13795
|
createUnderlinePlugin(),
|
|
13841
|
-
createCodePlugin(),
|
|
13842
13796
|
createListPlugin(),
|
|
13843
13797
|
createIndentListPlugin(),
|
|
13844
13798
|
createHorizontalRulePlugin(),
|
|
@@ -14054,13 +14008,13 @@ const TooltipContent = withCn(
|
|
|
14054
14008
|
}),
|
|
14055
14009
|
"z-[9999] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md"
|
|
14056
14010
|
);
|
|
14057
|
-
function withTooltip(
|
|
14011
|
+
function withTooltip(Component) {
|
|
14058
14012
|
return React__default.forwardRef(function ExtendComponent({ tooltip, tooltipContentProps, tooltipProps, ...props }, ref) {
|
|
14059
14013
|
const [mounted, setMounted] = React__default.useState(false);
|
|
14060
14014
|
React__default.useEffect(() => {
|
|
14061
14015
|
setMounted(true);
|
|
14062
14016
|
}, []);
|
|
14063
|
-
const component = /* @__PURE__ */ React__default.createElement(
|
|
14017
|
+
const component = /* @__PURE__ */ React__default.createElement(Component, { ref, ...props });
|
|
14064
14018
|
if (tooltip && mounted) {
|
|
14065
14019
|
return /* @__PURE__ */ React__default.createElement(Tooltip, { ...tooltipProps }, /* @__PURE__ */ React__default.createElement(TooltipTrigger, { asChild: true }, component), /* @__PURE__ */ React__default.createElement(TooltipPortal, null, /* @__PURE__ */ React__default.createElement(TooltipContent, { ...tooltipContentProps }, tooltip)));
|
|
14066
14020
|
}
|
|
@@ -14198,7 +14152,9 @@ const EMBED_ICON_WIDTH = 78;
|
|
|
14198
14152
|
const CONTAINER_MD_BREAKPOINT = 448;
|
|
14199
14153
|
const FLOAT_BUTTON_WIDTH = 25;
|
|
14200
14154
|
const HEADING_LABEL = "Headings";
|
|
14201
|
-
const ToolbarContext = createContext(
|
|
14155
|
+
const ToolbarContext = createContext(
|
|
14156
|
+
void 0
|
|
14157
|
+
);
|
|
14202
14158
|
const ToolbarProvider = ({
|
|
14203
14159
|
tinaForm,
|
|
14204
14160
|
templates,
|
|
@@ -14348,7 +14304,7 @@ const useCodeBlockToolbarButton = (state) => {
|
|
|
14348
14304
|
const CodeBlockToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14349
14305
|
const state = useCodeBlockToolbarButtonState();
|
|
14350
14306
|
const { props } = useCodeBlockToolbarButton(state);
|
|
14351
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14307
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Code Block", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.codeBlock, null));
|
|
14352
14308
|
});
|
|
14353
14309
|
const useImageToolbarButtonState = () => {
|
|
14354
14310
|
const editor = useEditorState();
|
|
@@ -14380,36 +14336,54 @@ const useImageToolbarButton = (state) => {
|
|
|
14380
14336
|
const ImageToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14381
14337
|
const state = useImageToolbarButtonState();
|
|
14382
14338
|
const { props } = useImageToolbarButton(state);
|
|
14383
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14384
|
-
});
|
|
14385
|
-
const IndentListToolbarButton = withRef(({ nodeType = ELEMENT_UL }, ref) => {
|
|
14386
|
-
const editor = useEditorState();
|
|
14387
|
-
const state = useListToolbarButtonState({ nodeType });
|
|
14388
|
-
const { props } = useListToolbarButton(state);
|
|
14389
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
14390
|
-
ToolbarButton,
|
|
14391
|
-
{
|
|
14392
|
-
ref,
|
|
14393
|
-
tooltip: nodeType === ELEMENT_UL ? "Bulleted List" : "Numbered List",
|
|
14394
|
-
...props,
|
|
14395
|
-
onClick: (e) => {
|
|
14396
|
-
e.preventDefault();
|
|
14397
|
-
e.stopPropagation();
|
|
14398
|
-
toggleList(editor, { type: nodeType });
|
|
14399
|
-
}
|
|
14400
|
-
},
|
|
14401
|
-
nodeType === ELEMENT_UL ? /* @__PURE__ */ React__default.createElement(Icons.ul, null) : /* @__PURE__ */ React__default.createElement(Icons.ol, null)
|
|
14402
|
-
);
|
|
14339
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Image", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.image, null));
|
|
14403
14340
|
});
|
|
14341
|
+
const UnorderedListToolbarButton = withRef(
|
|
14342
|
+
(props, ref) => {
|
|
14343
|
+
const editor = useEditorState();
|
|
14344
|
+
const state = useListToolbarButtonState({ nodeType: ELEMENT_UL });
|
|
14345
|
+
const { props: buttonProps } = useListToolbarButton(state);
|
|
14346
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14347
|
+
ToolbarButton,
|
|
14348
|
+
{
|
|
14349
|
+
ref,
|
|
14350
|
+
tooltip: "Bulleted List",
|
|
14351
|
+
...buttonProps,
|
|
14352
|
+
onClick: (e) => {
|
|
14353
|
+
e.preventDefault();
|
|
14354
|
+
e.stopPropagation();
|
|
14355
|
+
toggleList(editor, { type: ELEMENT_UL });
|
|
14356
|
+
}
|
|
14357
|
+
},
|
|
14358
|
+
/* @__PURE__ */ React__default.createElement(Icons.ul, null)
|
|
14359
|
+
);
|
|
14360
|
+
}
|
|
14361
|
+
);
|
|
14362
|
+
const OrderedListToolbarButton = withRef(
|
|
14363
|
+
(props, ref) => {
|
|
14364
|
+
const editor = useEditorState();
|
|
14365
|
+
const state = useListToolbarButtonState({ nodeType: ELEMENT_OL });
|
|
14366
|
+
const { props: buttonProps } = useListToolbarButton(state);
|
|
14367
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14368
|
+
ToolbarButton,
|
|
14369
|
+
{
|
|
14370
|
+
ref,
|
|
14371
|
+
tooltip: "Numbered List",
|
|
14372
|
+
...buttonProps,
|
|
14373
|
+
onClick: (e) => {
|
|
14374
|
+
e.preventDefault();
|
|
14375
|
+
e.stopPropagation();
|
|
14376
|
+
toggleList(editor, { type: ELEMENT_OL });
|
|
14377
|
+
}
|
|
14378
|
+
},
|
|
14379
|
+
/* @__PURE__ */ React__default.createElement(Icons.ol, null)
|
|
14380
|
+
);
|
|
14381
|
+
}
|
|
14382
|
+
);
|
|
14404
14383
|
const LinkToolbarButton = withRef((rest, ref) => {
|
|
14405
14384
|
const state = useLinkToolbarButtonState();
|
|
14406
14385
|
const { props } = useLinkToolbarButton(state);
|
|
14407
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link"
|
|
14408
|
-
});
|
|
14409
|
-
const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14410
|
-
const state = useMarkToolbarButtonState({ clear, nodeType });
|
|
14411
|
-
const { props } = useMarkToolbarButton(state);
|
|
14412
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14386
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest, tooltip: "Link" }, /* @__PURE__ */ React__default.createElement(Icons.link, null));
|
|
14413
14387
|
});
|
|
14414
14388
|
const useMermaidToolbarButtonState = () => {
|
|
14415
14389
|
const editor = useEditorState();
|
|
@@ -14452,6 +14426,7 @@ function OverflowMenu({
|
|
|
14452
14426
|
ToolbarButton,
|
|
14453
14427
|
{
|
|
14454
14428
|
showArrow: false,
|
|
14429
|
+
"data-testid": "rich-text-editor-overflow-menu-button",
|
|
14455
14430
|
className: "lg:min-w-[130px]",
|
|
14456
14431
|
isDropdown: true,
|
|
14457
14432
|
pressed: openState.open,
|
|
@@ -14489,7 +14464,7 @@ const useBlockQuoteToolbarButton = (state) => {
|
|
|
14489
14464
|
const QuoteToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14490
14465
|
const state = useBlockQuoteToolbarButtonState();
|
|
14491
14466
|
const { props } = useBlockQuoteToolbarButton(state);
|
|
14492
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14467
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Quote (⌘+⇧+.)", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.quote, null));
|
|
14493
14468
|
});
|
|
14494
14469
|
const useRawMarkdownToolbarButton = () => {
|
|
14495
14470
|
const { setRawMode } = useEditorContext();
|
|
@@ -14505,7 +14480,17 @@ const useRawMarkdownToolbarButton = () => {
|
|
|
14505
14480
|
};
|
|
14506
14481
|
const RawMarkdownToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14507
14482
|
const { props } = useRawMarkdownToolbarButton();
|
|
14508
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
14483
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14484
|
+
ToolbarButton,
|
|
14485
|
+
{
|
|
14486
|
+
ref,
|
|
14487
|
+
tooltip: "Raw Markdown",
|
|
14488
|
+
...rest,
|
|
14489
|
+
...props,
|
|
14490
|
+
"data-testid": "markdown-button"
|
|
14491
|
+
},
|
|
14492
|
+
/* @__PURE__ */ React__default.createElement(Icons.raw, null)
|
|
14493
|
+
);
|
|
14509
14494
|
});
|
|
14510
14495
|
function TableDropdownMenu(props) {
|
|
14511
14496
|
const tableSelected = useEditorSelector(
|
|
@@ -14644,7 +14629,7 @@ const EmbedButton = ({ editor, templates }) => {
|
|
|
14644
14629
|
key: template.name,
|
|
14645
14630
|
onMouseDown: (e) => {
|
|
14646
14631
|
e.preventDefault();
|
|
14647
|
-
|
|
14632
|
+
setOpen(false);
|
|
14648
14633
|
insertMDX(editor, template);
|
|
14649
14634
|
},
|
|
14650
14635
|
className: ""
|
|
@@ -14652,6 +14637,15 @@ const EmbedButton = ({ editor, templates }) => {
|
|
|
14652
14637
|
template.label || template.name
|
|
14653
14638
|
))));
|
|
14654
14639
|
};
|
|
14640
|
+
const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14641
|
+
const state = useMarkToolbarButtonState({ clear, nodeType });
|
|
14642
|
+
const { props } = useMarkToolbarButton(state);
|
|
14643
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14644
|
+
});
|
|
14645
|
+
const BoldToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: MARK_BOLD }, /* @__PURE__ */ React__default.createElement(Icons.bold, null));
|
|
14646
|
+
const StrikethroughToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Strikethrough", nodeType: MARK_STRIKETHROUGH }, /* @__PURE__ */ React__default.createElement(Icons.strikethrough, null));
|
|
14647
|
+
const ItalicToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: MARK_ITALIC }, /* @__PURE__ */ React__default.createElement(Icons.italic, null));
|
|
14648
|
+
const CodeToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: MARK_CODE }, /* @__PURE__ */ React__default.createElement(Icons.code, null));
|
|
14655
14649
|
const toolbarItems = {
|
|
14656
14650
|
heading: {
|
|
14657
14651
|
label: HEADING_LABEL,
|
|
@@ -14672,32 +14666,37 @@ const toolbarItems = {
|
|
|
14672
14666
|
quote: {
|
|
14673
14667
|
label: "Quote",
|
|
14674
14668
|
width: () => STANDARD_ICON_WIDTH,
|
|
14675
|
-
Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton,
|
|
14669
|
+
Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton, null)
|
|
14676
14670
|
},
|
|
14677
14671
|
ul: {
|
|
14678
14672
|
label: "Unordered List",
|
|
14679
14673
|
width: () => STANDARD_ICON_WIDTH,
|
|
14680
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14674
|
+
Component: /* @__PURE__ */ React__default.createElement(UnorderedListToolbarButton, null)
|
|
14681
14675
|
},
|
|
14682
14676
|
ol: {
|
|
14683
14677
|
label: "Ordered List",
|
|
14684
14678
|
width: () => STANDARD_ICON_WIDTH,
|
|
14685
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14679
|
+
Component: /* @__PURE__ */ React__default.createElement(OrderedListToolbarButton, null)
|
|
14686
14680
|
},
|
|
14687
14681
|
bold: {
|
|
14688
14682
|
label: "Bold",
|
|
14689
14683
|
width: () => STANDARD_ICON_WIDTH,
|
|
14690
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14684
|
+
Component: /* @__PURE__ */ React__default.createElement(BoldToolbarButton, null)
|
|
14685
|
+
},
|
|
14686
|
+
strikethrough: {
|
|
14687
|
+
label: "Strikethrough",
|
|
14688
|
+
width: () => STANDARD_ICON_WIDTH,
|
|
14689
|
+
Component: /* @__PURE__ */ React__default.createElement(StrikethroughToolbarButton, null)
|
|
14691
14690
|
},
|
|
14692
14691
|
italic: {
|
|
14693
14692
|
label: "Italic",
|
|
14694
14693
|
width: () => STANDARD_ICON_WIDTH,
|
|
14695
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14694
|
+
Component: /* @__PURE__ */ React__default.createElement(ItalicToolbarButton, null)
|
|
14696
14695
|
},
|
|
14697
14696
|
code: {
|
|
14698
14697
|
label: "Code",
|
|
14699
14698
|
width: () => STANDARD_ICON_WIDTH,
|
|
14700
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14699
|
+
Component: /* @__PURE__ */ React__default.createElement(CodeToolbarButton, null)
|
|
14701
14700
|
},
|
|
14702
14701
|
codeBlock: {
|
|
14703
14702
|
label: "Code Block",
|
|
@@ -14730,7 +14729,12 @@ function FixedToolbarButtons() {
|
|
|
14730
14729
|
const [itemsShown, setItemsShown] = React__default.useState(11);
|
|
14731
14730
|
const { overrides, templates } = useToolbarContext();
|
|
14732
14731
|
const showEmbedButton = templates.length > 0;
|
|
14733
|
-
let items2 =
|
|
14732
|
+
let items2 = [];
|
|
14733
|
+
if (Array.isArray(overrides)) {
|
|
14734
|
+
items2 = overrides === void 0 ? Object.values(toolbarItems) : overrides.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14735
|
+
} else {
|
|
14736
|
+
items2 = (overrides == null ? void 0 : overrides.toolbar) === void 0 ? Object.values(toolbarItems) : overrides.toolbar.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14737
|
+
}
|
|
14734
14738
|
if (!showEmbedButton) {
|
|
14735
14739
|
items2 = items2.filter((item) => item.label !== toolbarItems.embed.label);
|
|
14736
14740
|
}
|
|
@@ -15058,6 +15062,9 @@ const isUrl = (string) => {
|
|
|
15058
15062
|
if (typeof string !== "string") {
|
|
15059
15063
|
return false;
|
|
15060
15064
|
}
|
|
15065
|
+
if (string.startsWith("#")) {
|
|
15066
|
+
return true;
|
|
15067
|
+
}
|
|
15061
15068
|
const generalMatch = string.match(protocolAndDomainRE);
|
|
15062
15069
|
const emailLinkMatch = string.match(emailLintRE);
|
|
15063
15070
|
const localUrlMatch = string.match(localUrlRE);
|
|
@@ -15079,12 +15086,12 @@ const isUrl = (string) => {
|
|
|
15079
15086
|
}
|
|
15080
15087
|
return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);
|
|
15081
15088
|
};
|
|
15082
|
-
const RichEditor = (
|
|
15089
|
+
const RichEditor = ({ input, tinaForm, field }) => {
|
|
15083
15090
|
var _a;
|
|
15084
15091
|
const initialValue = React__default.useMemo(
|
|
15085
15092
|
() => {
|
|
15086
15093
|
var _a2, _b;
|
|
15087
|
-
return ((_b = (_a2 =
|
|
15094
|
+
return ((_b = (_a2 = input.value) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) ? input.value.children.map(helpers.normalize) : [{ type: "p", children: [{ type: "text", text: "" }] }];
|
|
15088
15095
|
},
|
|
15089
15096
|
[]
|
|
15090
15097
|
);
|
|
@@ -15112,7 +15119,7 @@ const RichEditor = (props) => {
|
|
|
15112
15119
|
),
|
|
15113
15120
|
[]
|
|
15114
15121
|
);
|
|
15115
|
-
const tempId = [
|
|
15122
|
+
const tempId = [tinaForm.id, input.name].join(".");
|
|
15116
15123
|
const id = React__default.useMemo(() => uuid() + tempId, [tempId]);
|
|
15117
15124
|
const ref = React__default.useRef(null);
|
|
15118
15125
|
React__default.useEffect(() => {
|
|
@@ -15122,13 +15129,13 @@ const RichEditor = (props) => {
|
|
|
15122
15129
|
const plateElement = (_a2 = ref.current) == null ? void 0 : _a2.querySelector(
|
|
15123
15130
|
'[role="textbox"]'
|
|
15124
15131
|
);
|
|
15125
|
-
if (
|
|
15132
|
+
if (field.experimental_focusIntent && plateElement) {
|
|
15126
15133
|
if (plateElement)
|
|
15127
15134
|
plateElement.focus();
|
|
15128
15135
|
}
|
|
15129
15136
|
}, 100);
|
|
15130
15137
|
}
|
|
15131
|
-
}, [
|
|
15138
|
+
}, [field.experimental_focusIntent, ref]);
|
|
15132
15139
|
return /* @__PURE__ */ React__default.createElement("div", { ref }, /* @__PURE__ */ React__default.createElement(
|
|
15133
15140
|
Plate,
|
|
15134
15141
|
{
|
|
@@ -15136,7 +15143,7 @@ const RichEditor = (props) => {
|
|
|
15136
15143
|
initialValue,
|
|
15137
15144
|
plugins: plugins$2,
|
|
15138
15145
|
onChange: (value) => {
|
|
15139
|
-
|
|
15146
|
+
input.onChange({
|
|
15140
15147
|
type: "root",
|
|
15141
15148
|
children: value
|
|
15142
15149
|
});
|
|
@@ -15145,12 +15152,12 @@ const RichEditor = (props) => {
|
|
|
15145
15152
|
/* @__PURE__ */ React__default.createElement(TooltipProvider, null, /* @__PURE__ */ React__default.createElement(
|
|
15146
15153
|
ToolbarProvider,
|
|
15147
15154
|
{
|
|
15148
|
-
tinaForm
|
|
15149
|
-
templates:
|
|
15150
|
-
overrides: (
|
|
15155
|
+
tinaForm,
|
|
15156
|
+
templates: field.templates,
|
|
15157
|
+
overrides: (field == null ? void 0 : field.toolbarOverride) ? field.toolbarOverride : field.overrides
|
|
15151
15158
|
},
|
|
15152
15159
|
/* @__PURE__ */ React__default.createElement(FixedToolbar, null, /* @__PURE__ */ React__default.createElement(FixedToolbarButtons, null)),
|
|
15153
|
-
/* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null))
|
|
15160
|
+
((_a = field == null ? void 0 : field.overrides) == null ? void 0 : _a.showFloatingToolbar) !== false ? /* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null)) : null
|
|
15154
15161
|
), /* @__PURE__ */ React__default.createElement(Editor, null))
|
|
15155
15162
|
));
|
|
15156
15163
|
};
|
|
@@ -16338,132 +16345,1209 @@ const ben = [
|
|
|
16338
16345
|
"হয়"
|
|
16339
16346
|
];
|
|
16340
16347
|
const bre = [
|
|
16348
|
+
"'blam",
|
|
16349
|
+
"'d",
|
|
16350
|
+
"'m",
|
|
16351
|
+
"'r",
|
|
16352
|
+
"'ta",
|
|
16353
|
+
"'vat",
|
|
16354
|
+
"'z",
|
|
16355
|
+
"'zo",
|
|
16341
16356
|
"a",
|
|
16342
|
-
"
|
|
16343
|
-
"
|
|
16344
|
-
"
|
|
16345
|
-
"
|
|
16346
|
-
"
|
|
16347
|
-
"
|
|
16348
|
-
"
|
|
16349
|
-
"
|
|
16350
|
-
"
|
|
16351
|
-
"
|
|
16352
|
-
"
|
|
16353
|
-
"
|
|
16354
|
-
"
|
|
16355
|
-
"
|
|
16356
|
-
"
|
|
16357
|
-
"
|
|
16358
|
-
"
|
|
16359
|
-
"
|
|
16360
|
-
"
|
|
16361
|
-
"
|
|
16362
|
-
"
|
|
16357
|
+
"a:",
|
|
16358
|
+
"aba",
|
|
16359
|
+
"abalamour",
|
|
16360
|
+
"abaoe",
|
|
16361
|
+
"ac'hane",
|
|
16362
|
+
"ac'hanoc'h",
|
|
16363
|
+
"ac'hanomp",
|
|
16364
|
+
"ac'hanon",
|
|
16365
|
+
"ac'hanout",
|
|
16366
|
+
"adal",
|
|
16367
|
+
"adalek",
|
|
16368
|
+
"adarre",
|
|
16369
|
+
"ae",
|
|
16370
|
+
"aec'h",
|
|
16371
|
+
"aed",
|
|
16372
|
+
"aemp",
|
|
16373
|
+
"aen",
|
|
16374
|
+
"aent",
|
|
16375
|
+
"aes",
|
|
16376
|
+
"afe",
|
|
16377
|
+
"afec'h",
|
|
16378
|
+
"afed",
|
|
16379
|
+
"afemp",
|
|
16380
|
+
"afen",
|
|
16381
|
+
"afent",
|
|
16382
|
+
"afes",
|
|
16383
|
+
"ag",
|
|
16384
|
+
"ah",
|
|
16385
|
+
"aimp",
|
|
16386
|
+
"aint",
|
|
16387
|
+
"aio",
|
|
16388
|
+
"aiou",
|
|
16389
|
+
"aje",
|
|
16390
|
+
"ajec'h",
|
|
16391
|
+
"ajed",
|
|
16392
|
+
"ajemp",
|
|
16393
|
+
"ajen",
|
|
16394
|
+
"ajent",
|
|
16395
|
+
"ajes",
|
|
16396
|
+
"al",
|
|
16397
|
+
"alato",
|
|
16398
|
+
"alies",
|
|
16399
|
+
"aliesañ",
|
|
16400
|
+
"alkent",
|
|
16401
|
+
"all",
|
|
16402
|
+
"allas",
|
|
16403
|
+
"allo",
|
|
16404
|
+
"allô",
|
|
16405
|
+
"am",
|
|
16406
|
+
"amañ",
|
|
16407
|
+
"amzer",
|
|
16408
|
+
"an",
|
|
16409
|
+
"anezhañ",
|
|
16410
|
+
"anezhe",
|
|
16411
|
+
"anezhi",
|
|
16412
|
+
"anezho",
|
|
16413
|
+
"anvet",
|
|
16414
|
+
"aon",
|
|
16415
|
+
"aotren",
|
|
16416
|
+
"ar",
|
|
16417
|
+
"arall",
|
|
16418
|
+
"araok",
|
|
16419
|
+
"araoki",
|
|
16420
|
+
"araozañ",
|
|
16421
|
+
"araozo",
|
|
16422
|
+
"araozoc'h",
|
|
16423
|
+
"araozomp",
|
|
16424
|
+
"araozon",
|
|
16425
|
+
"araozor",
|
|
16426
|
+
"araozout",
|
|
16427
|
+
"arbenn",
|
|
16428
|
+
"arre",
|
|
16429
|
+
"atalek",
|
|
16430
|
+
"atav",
|
|
16431
|
+
"az",
|
|
16432
|
+
"azalek",
|
|
16433
|
+
"azirazañ",
|
|
16434
|
+
"azirazi",
|
|
16435
|
+
"azirazo",
|
|
16436
|
+
"azirazoc'h",
|
|
16437
|
+
"azirazomp",
|
|
16438
|
+
"azirazon",
|
|
16439
|
+
"azirazor",
|
|
16440
|
+
"azirazout",
|
|
16441
|
+
"b:",
|
|
16442
|
+
"ba",
|
|
16443
|
+
"ba'l",
|
|
16444
|
+
"ba'n",
|
|
16445
|
+
"ba'r",
|
|
16446
|
+
"bad",
|
|
16447
|
+
"bah",
|
|
16448
|
+
"bal",
|
|
16449
|
+
"ban",
|
|
16450
|
+
"bar",
|
|
16451
|
+
"bastañ",
|
|
16452
|
+
"befe",
|
|
16453
|
+
"bell",
|
|
16454
|
+
"benaos",
|
|
16455
|
+
"benn",
|
|
16456
|
+
"bennag",
|
|
16457
|
+
"bennak",
|
|
16458
|
+
"bennozh",
|
|
16459
|
+
"bep",
|
|
16460
|
+
"bepred",
|
|
16461
|
+
"berr",
|
|
16462
|
+
"berzh",
|
|
16463
|
+
"bet",
|
|
16464
|
+
"betek",
|
|
16465
|
+
"betra",
|
|
16466
|
+
"bev",
|
|
16467
|
+
"bevet",
|
|
16468
|
+
"bez",
|
|
16469
|
+
"bezañ",
|
|
16470
|
+
"beze",
|
|
16471
|
+
"bezent",
|
|
16472
|
+
"bezet",
|
|
16473
|
+
"bezh",
|
|
16474
|
+
"bezit",
|
|
16475
|
+
"bezomp",
|
|
16476
|
+
"bihan",
|
|
16477
|
+
"bije",
|
|
16478
|
+
"biou",
|
|
16479
|
+
"biskoazh",
|
|
16480
|
+
"blam",
|
|
16481
|
+
"bo",
|
|
16482
|
+
"boa",
|
|
16483
|
+
"bominapl",
|
|
16484
|
+
"boudoudom",
|
|
16485
|
+
"bouez",
|
|
16486
|
+
"boull",
|
|
16487
|
+
"boum",
|
|
16488
|
+
"bout",
|
|
16489
|
+
"bras",
|
|
16490
|
+
"brasañ",
|
|
16491
|
+
"brav",
|
|
16492
|
+
"bravo",
|
|
16493
|
+
"bremañ",
|
|
16494
|
+
"bres",
|
|
16495
|
+
"brokenn",
|
|
16496
|
+
"bronn",
|
|
16497
|
+
"brrr",
|
|
16498
|
+
"brutal",
|
|
16499
|
+
"buhezek",
|
|
16500
|
+
"c'h:",
|
|
16501
|
+
"c'haout",
|
|
16502
|
+
"c'he",
|
|
16503
|
+
"c'hem",
|
|
16504
|
+
"c'herz",
|
|
16505
|
+
"c'heñver",
|
|
16506
|
+
"c'hichen",
|
|
16507
|
+
"c'hiz",
|
|
16508
|
+
"c'hoazh",
|
|
16509
|
+
"c'horre",
|
|
16510
|
+
"c'houde",
|
|
16511
|
+
"c'houst",
|
|
16512
|
+
"c'hreiz",
|
|
16513
|
+
"c'hwec'h",
|
|
16514
|
+
"c'hwec'hvet",
|
|
16515
|
+
"c'hwezek",
|
|
16516
|
+
"c'hwi",
|
|
16517
|
+
"ch:",
|
|
16518
|
+
"chaous",
|
|
16519
|
+
"chik",
|
|
16520
|
+
"chit",
|
|
16521
|
+
"chom",
|
|
16522
|
+
"chut",
|
|
16523
|
+
"d'",
|
|
16524
|
+
"d'al",
|
|
16525
|
+
"d'an",
|
|
16526
|
+
"d'ar",
|
|
16527
|
+
"d'az",
|
|
16528
|
+
"d'e",
|
|
16529
|
+
"d'he",
|
|
16530
|
+
"d'ho",
|
|
16531
|
+
"d'hol",
|
|
16532
|
+
"d'hon",
|
|
16533
|
+
"d'hor",
|
|
16534
|
+
"d'o",
|
|
16535
|
+
"d'ober",
|
|
16536
|
+
"d'ul",
|
|
16537
|
+
"d'un",
|
|
16538
|
+
"d'ur",
|
|
16539
|
+
"d:",
|
|
16363
16540
|
"da",
|
|
16364
|
-
"
|
|
16365
|
-
"
|
|
16366
|
-
"
|
|
16367
|
-
"
|
|
16368
|
-
"
|
|
16369
|
-
"
|
|
16370
|
-
"
|
|
16371
|
-
"
|
|
16372
|
-
"
|
|
16373
|
-
"
|
|
16374
|
-
"
|
|
16375
|
-
"
|
|
16376
|
-
"
|
|
16377
|
-
"
|
|
16378
|
-
"
|
|
16541
|
+
"dak",
|
|
16542
|
+
"daka",
|
|
16543
|
+
"dal",
|
|
16544
|
+
"dalbezh",
|
|
16545
|
+
"dalc'hmat",
|
|
16546
|
+
"dalit",
|
|
16547
|
+
"damdost",
|
|
16548
|
+
"damheñvel",
|
|
16549
|
+
"damm",
|
|
16550
|
+
"dan",
|
|
16551
|
+
"danvez",
|
|
16552
|
+
"dao",
|
|
16553
|
+
"daol",
|
|
16554
|
+
"daonet",
|
|
16555
|
+
"daou",
|
|
16556
|
+
"daoust",
|
|
16557
|
+
"daouzek",
|
|
16558
|
+
"daouzekvet",
|
|
16559
|
+
"darn",
|
|
16560
|
+
"dastrewiñ",
|
|
16561
|
+
"dav",
|
|
16562
|
+
"davedoc'h",
|
|
16563
|
+
"davedomp",
|
|
16564
|
+
"davedon",
|
|
16565
|
+
"davedor",
|
|
16566
|
+
"davedout",
|
|
16567
|
+
"davet",
|
|
16568
|
+
"davetañ",
|
|
16569
|
+
"davete",
|
|
16570
|
+
"daveti",
|
|
16571
|
+
"daveto",
|
|
16572
|
+
"defe",
|
|
16573
|
+
"dehou",
|
|
16574
|
+
"dek",
|
|
16575
|
+
"dekvet",
|
|
16576
|
+
"den",
|
|
16577
|
+
"deoc'h",
|
|
16578
|
+
"deomp",
|
|
16579
|
+
"deor",
|
|
16580
|
+
"derc'hel",
|
|
16581
|
+
"deus",
|
|
16582
|
+
"dez",
|
|
16583
|
+
"deze",
|
|
16584
|
+
"dezhañ",
|
|
16585
|
+
"dezhe",
|
|
16586
|
+
"dezhi",
|
|
16587
|
+
"dezho",
|
|
16588
|
+
"di",
|
|
16589
|
+
"diabarzh",
|
|
16590
|
+
"diagent",
|
|
16591
|
+
"diar",
|
|
16592
|
+
"diaraok",
|
|
16593
|
+
"diavaez",
|
|
16594
|
+
"dibaoe",
|
|
16595
|
+
"dibaot",
|
|
16596
|
+
"dibar",
|
|
16597
|
+
"dic'halañ",
|
|
16598
|
+
"didiac'h",
|
|
16599
|
+
"dienn",
|
|
16600
|
+
"difer",
|
|
16601
|
+
"diganeoc'h",
|
|
16602
|
+
"diganeomp",
|
|
16603
|
+
"diganeor",
|
|
16604
|
+
"diganimp",
|
|
16605
|
+
"diganin",
|
|
16606
|
+
"diganit",
|
|
16607
|
+
"digant",
|
|
16608
|
+
"digantañ",
|
|
16609
|
+
"digante",
|
|
16610
|
+
"diganti",
|
|
16611
|
+
"diganto",
|
|
16612
|
+
"digemmesk",
|
|
16613
|
+
"diget",
|
|
16614
|
+
"digor",
|
|
16615
|
+
"digoret",
|
|
16616
|
+
"dija",
|
|
16617
|
+
"dije",
|
|
16618
|
+
"dimp",
|
|
16619
|
+
"din",
|
|
16620
|
+
"dinaou",
|
|
16621
|
+
"dindan",
|
|
16622
|
+
"dindanañ",
|
|
16623
|
+
"dindani",
|
|
16624
|
+
"dindano",
|
|
16625
|
+
"dindanoc'h",
|
|
16626
|
+
"dindanomp",
|
|
16627
|
+
"dindanon",
|
|
16628
|
+
"dindanor",
|
|
16629
|
+
"dindanout",
|
|
16630
|
+
"dioutañ",
|
|
16631
|
+
"dioute",
|
|
16632
|
+
"diouti",
|
|
16633
|
+
"diouto",
|
|
16634
|
+
"diouzh",
|
|
16635
|
+
"diouzhin",
|
|
16636
|
+
"diouzhit",
|
|
16637
|
+
"diouzhoc'h",
|
|
16638
|
+
"diouzhomp",
|
|
16639
|
+
"diouzhor",
|
|
16640
|
+
"dirak",
|
|
16641
|
+
"dirazañ",
|
|
16642
|
+
"dirazi",
|
|
16643
|
+
"dirazo",
|
|
16644
|
+
"dirazoc'h",
|
|
16645
|
+
"dirazomp",
|
|
16646
|
+
"dirazon",
|
|
16647
|
+
"dirazor",
|
|
16648
|
+
"dirazout",
|
|
16649
|
+
"disheñvel",
|
|
16650
|
+
"dispar",
|
|
16651
|
+
"distank",
|
|
16652
|
+
"dister",
|
|
16653
|
+
"disterañ",
|
|
16654
|
+
"disterig",
|
|
16655
|
+
"distro",
|
|
16656
|
+
"dit",
|
|
16657
|
+
"divaez",
|
|
16658
|
+
"diwar",
|
|
16659
|
+
"diwezhat",
|
|
16660
|
+
"diwezhañ",
|
|
16379
16661
|
"do",
|
|
16380
|
-
"
|
|
16381
|
-
"
|
|
16662
|
+
"doa",
|
|
16663
|
+
"doare",
|
|
16664
|
+
"dont",
|
|
16665
|
+
"dost",
|
|
16666
|
+
"doue",
|
|
16667
|
+
"douetus",
|
|
16668
|
+
"douez",
|
|
16669
|
+
"doug",
|
|
16670
|
+
"draou",
|
|
16671
|
+
"draoñ",
|
|
16672
|
+
"dre",
|
|
16673
|
+
"drede",
|
|
16674
|
+
"dreist",
|
|
16675
|
+
"dreistañ",
|
|
16676
|
+
"dreisti",
|
|
16677
|
+
"dreisto",
|
|
16678
|
+
"dreistoc'h",
|
|
16679
|
+
"dreistomp",
|
|
16680
|
+
"dreiston",
|
|
16681
|
+
"dreistor",
|
|
16682
|
+
"dreistout",
|
|
16683
|
+
"drek",
|
|
16684
|
+
"dreñv",
|
|
16685
|
+
"dring",
|
|
16686
|
+
"dro",
|
|
16687
|
+
"du",
|
|
16382
16688
|
"e",
|
|
16383
|
-
"
|
|
16384
|
-
"
|
|
16385
|
-
"
|
|
16386
|
-
"
|
|
16689
|
+
"e:",
|
|
16690
|
+
"eas",
|
|
16691
|
+
"ebet",
|
|
16692
|
+
"ec'h",
|
|
16693
|
+
"edo",
|
|
16694
|
+
"edoc'h",
|
|
16695
|
+
"edod",
|
|
16696
|
+
"edomp",
|
|
16697
|
+
"edon",
|
|
16698
|
+
"edont",
|
|
16699
|
+
"edos",
|
|
16700
|
+
"eer",
|
|
16701
|
+
"eeun",
|
|
16702
|
+
"efed",
|
|
16703
|
+
"egedoc'h",
|
|
16704
|
+
"egedomp",
|
|
16705
|
+
"egedon",
|
|
16706
|
+
"egedor",
|
|
16707
|
+
"egedout",
|
|
16708
|
+
"eget",
|
|
16709
|
+
"egetañ",
|
|
16710
|
+
"egete",
|
|
16711
|
+
"egeti",
|
|
16712
|
+
"egeto",
|
|
16713
|
+
"eh",
|
|
16714
|
+
"eil",
|
|
16715
|
+
"eilvet",
|
|
16716
|
+
"eizh",
|
|
16717
|
+
"eizhvet",
|
|
16718
|
+
"ejoc'h",
|
|
16719
|
+
"ejod",
|
|
16720
|
+
"ejomp",
|
|
16721
|
+
"ejont",
|
|
16722
|
+
"ejout",
|
|
16723
|
+
"el",
|
|
16387
16724
|
"em",
|
|
16388
|
-
"
|
|
16389
|
-
"
|
|
16390
|
-
"
|
|
16391
|
-
"
|
|
16392
|
-
"
|
|
16393
|
-
"
|
|
16394
|
-
"
|
|
16395
|
-
"
|
|
16396
|
-
"
|
|
16397
|
-
"
|
|
16725
|
+
"emaint",
|
|
16726
|
+
"emaoc'h",
|
|
16727
|
+
"emaomp",
|
|
16728
|
+
"emaon",
|
|
16729
|
+
"emaout",
|
|
16730
|
+
"emañ",
|
|
16731
|
+
"eme",
|
|
16732
|
+
"emeur",
|
|
16733
|
+
"emezañ",
|
|
16734
|
+
"emezi",
|
|
16735
|
+
"emezo",
|
|
16736
|
+
"emezoc'h",
|
|
16737
|
+
"emezomp",
|
|
16738
|
+
"emezon",
|
|
16739
|
+
"emezout",
|
|
16740
|
+
"emporzhiañ",
|
|
16741
|
+
"en",
|
|
16742
|
+
"end",
|
|
16743
|
+
"endan",
|
|
16744
|
+
"endra",
|
|
16745
|
+
"enep",
|
|
16746
|
+
"ennañ",
|
|
16747
|
+
"enni",
|
|
16748
|
+
"enno",
|
|
16749
|
+
"ennoc'h",
|
|
16750
|
+
"ennomp",
|
|
16751
|
+
"ennon",
|
|
16752
|
+
"ennor",
|
|
16753
|
+
"ennout",
|
|
16754
|
+
"enta",
|
|
16755
|
+
"eo",
|
|
16756
|
+
"eomp",
|
|
16757
|
+
"eont",
|
|
16758
|
+
"eor",
|
|
16759
|
+
"eot",
|
|
16760
|
+
"er",
|
|
16761
|
+
"erbet",
|
|
16762
|
+
"erfin",
|
|
16763
|
+
"esa",
|
|
16764
|
+
"esae",
|
|
16765
|
+
"espar",
|
|
16766
|
+
"estlamm",
|
|
16767
|
+
"estrañj",
|
|
16768
|
+
"eta",
|
|
16769
|
+
"etre",
|
|
16770
|
+
"etreoc'h",
|
|
16771
|
+
"etrezo",
|
|
16772
|
+
"etrezoc'h",
|
|
16773
|
+
"etrezomp",
|
|
16774
|
+
"etrezor",
|
|
16775
|
+
"euh",
|
|
16776
|
+
"eur",
|
|
16777
|
+
"eus",
|
|
16778
|
+
"evel",
|
|
16779
|
+
"evelato",
|
|
16780
|
+
"eveldoc'h",
|
|
16781
|
+
"eveldomp",
|
|
16782
|
+
"eveldon",
|
|
16783
|
+
"eveldor",
|
|
16784
|
+
"eveldout",
|
|
16785
|
+
"evelkent",
|
|
16786
|
+
"eveltañ",
|
|
16787
|
+
"evelte",
|
|
16788
|
+
"evelti",
|
|
16789
|
+
"evelto",
|
|
16790
|
+
"evidoc'h",
|
|
16791
|
+
"evidomp",
|
|
16792
|
+
"evidon",
|
|
16793
|
+
"evidor",
|
|
16794
|
+
"evidout",
|
|
16795
|
+
"evit",
|
|
16796
|
+
"evitañ",
|
|
16797
|
+
"evite",
|
|
16798
|
+
"eviti",
|
|
16799
|
+
"evito",
|
|
16800
|
+
"ez",
|
|
16801
|
+
"eñ",
|
|
16802
|
+
"f:",
|
|
16803
|
+
"fac'h",
|
|
16804
|
+
"fall",
|
|
16805
|
+
"fed",
|
|
16806
|
+
"feiz",
|
|
16807
|
+
"fenn",
|
|
16808
|
+
"fezh",
|
|
16809
|
+
"fin",
|
|
16810
|
+
"finsalvet",
|
|
16811
|
+
"foei",
|
|
16812
|
+
"fouilhezañ",
|
|
16813
|
+
"g:",
|
|
16814
|
+
"gallout",
|
|
16815
|
+
"ganeoc'h",
|
|
16816
|
+
"ganeomp",
|
|
16817
|
+
"ganin",
|
|
16818
|
+
"ganit",
|
|
16819
|
+
"gant",
|
|
16820
|
+
"gantañ",
|
|
16821
|
+
"ganti",
|
|
16822
|
+
"ganto",
|
|
16823
|
+
"gaout",
|
|
16824
|
+
"gast",
|
|
16825
|
+
"gein",
|
|
16826
|
+
"gellout",
|
|
16827
|
+
"genndost",
|
|
16828
|
+
"gentañ",
|
|
16829
|
+
"ger",
|
|
16830
|
+
"gerz",
|
|
16831
|
+
"get",
|
|
16832
|
+
"geñver",
|
|
16833
|
+
"gichen",
|
|
16834
|
+
"gin",
|
|
16835
|
+
"giz",
|
|
16836
|
+
"glan",
|
|
16837
|
+
"gloev",
|
|
16838
|
+
"goll",
|
|
16839
|
+
"gorre",
|
|
16840
|
+
"goude",
|
|
16841
|
+
"gouez",
|
|
16842
|
+
"gouezit",
|
|
16843
|
+
"gouezomp",
|
|
16844
|
+
"goulz",
|
|
16845
|
+
"gounnar",
|
|
16846
|
+
"gour",
|
|
16847
|
+
"goust",
|
|
16848
|
+
"gouze",
|
|
16849
|
+
"gouzout",
|
|
16850
|
+
"gra",
|
|
16851
|
+
"grak",
|
|
16852
|
+
"grec'h",
|
|
16853
|
+
"greiz",
|
|
16854
|
+
"grenn",
|
|
16855
|
+
"greomp",
|
|
16856
|
+
"grit",
|
|
16857
|
+
"groñs",
|
|
16858
|
+
"gutez",
|
|
16859
|
+
"gwall",
|
|
16860
|
+
"gwashoc'h",
|
|
16861
|
+
"gwazh",
|
|
16862
|
+
"gwech",
|
|
16863
|
+
"gwechall",
|
|
16864
|
+
"gwechoù",
|
|
16865
|
+
"gwell",
|
|
16866
|
+
"gwezh",
|
|
16867
|
+
"gwezhall",
|
|
16868
|
+
"gwezharall",
|
|
16869
|
+
"gwezhoù",
|
|
16870
|
+
"gwig",
|
|
16871
|
+
"gwirionez",
|
|
16872
|
+
"gwitibunan",
|
|
16873
|
+
"gêr",
|
|
16874
|
+
"h:",
|
|
16398
16875
|
"ha",
|
|
16399
|
-
"
|
|
16400
|
-
"
|
|
16401
|
-
"
|
|
16402
|
-
"
|
|
16403
|
-
"
|
|
16404
|
-
"
|
|
16405
|
-
"
|
|
16406
|
-
"
|
|
16407
|
-
"
|
|
16408
|
-
"
|
|
16409
|
-
"
|
|
16876
|
+
"hag",
|
|
16877
|
+
"han",
|
|
16878
|
+
"hanter",
|
|
16879
|
+
"hanterc'hantad",
|
|
16880
|
+
"hanterkantved",
|
|
16881
|
+
"harz",
|
|
16882
|
+
"hañ",
|
|
16883
|
+
"hañval",
|
|
16884
|
+
"he",
|
|
16885
|
+
"hebioù",
|
|
16886
|
+
"hec'h",
|
|
16887
|
+
"hei",
|
|
16888
|
+
"hein",
|
|
16889
|
+
"hem",
|
|
16890
|
+
"hemañ",
|
|
16891
|
+
"hen",
|
|
16892
|
+
"hend",
|
|
16893
|
+
"henhont",
|
|
16894
|
+
"henn",
|
|
16895
|
+
"hennezh",
|
|
16896
|
+
"hent",
|
|
16897
|
+
"hep",
|
|
16898
|
+
"hervez",
|
|
16899
|
+
"hervezañ",
|
|
16900
|
+
"hervezi",
|
|
16901
|
+
"hervezo",
|
|
16902
|
+
"hervezoc'h",
|
|
16903
|
+
"hervezomp",
|
|
16904
|
+
"hervezon",
|
|
16905
|
+
"hervezor",
|
|
16906
|
+
"hervezout",
|
|
16907
|
+
"heul",
|
|
16908
|
+
"heuliañ",
|
|
16909
|
+
"hevelep",
|
|
16910
|
+
"heverk",
|
|
16911
|
+
"heñvel",
|
|
16912
|
+
"heñvelat",
|
|
16913
|
+
"heñvelañ",
|
|
16914
|
+
"heñveliñ",
|
|
16915
|
+
"heñveloc'h",
|
|
16916
|
+
"heñvelout",
|
|
16917
|
+
"hi",
|
|
16918
|
+
"hilh",
|
|
16919
|
+
"hini",
|
|
16920
|
+
"hirie",
|
|
16921
|
+
"hirio",
|
|
16922
|
+
"hiziv",
|
|
16923
|
+
"hiziviken",
|
|
16924
|
+
"ho",
|
|
16925
|
+
"hoaliñ",
|
|
16926
|
+
"hoc'h",
|
|
16927
|
+
"hogen",
|
|
16928
|
+
"hogos",
|
|
16929
|
+
"hogozik",
|
|
16930
|
+
"hol",
|
|
16931
|
+
"holl",
|
|
16932
|
+
"holà",
|
|
16933
|
+
"homañ",
|
|
16934
|
+
"hon",
|
|
16935
|
+
"honhont",
|
|
16936
|
+
"honnezh",
|
|
16937
|
+
"hont",
|
|
16938
|
+
"hop",
|
|
16939
|
+
"hopala",
|
|
16940
|
+
"hor",
|
|
16941
|
+
"hou",
|
|
16942
|
+
"houp",
|
|
16943
|
+
"hudu",
|
|
16944
|
+
"hue",
|
|
16945
|
+
"hui",
|
|
16946
|
+
"hum",
|
|
16947
|
+
"hurrah",
|
|
16948
|
+
"i",
|
|
16949
|
+
"i:",
|
|
16950
|
+
"in",
|
|
16951
|
+
"int",
|
|
16952
|
+
"is",
|
|
16953
|
+
"ispisial",
|
|
16954
|
+
"isurzhiet",
|
|
16955
|
+
"it",
|
|
16956
|
+
"ivez",
|
|
16957
|
+
"izelañ",
|
|
16958
|
+
"j:",
|
|
16959
|
+
"just",
|
|
16960
|
+
"k:",
|
|
16961
|
+
"kae",
|
|
16962
|
+
"kaer",
|
|
16963
|
+
"kalon",
|
|
16964
|
+
"kalz",
|
|
16965
|
+
"kant",
|
|
16966
|
+
"kaout",
|
|
16967
|
+
"kar",
|
|
16968
|
+
"kazi",
|
|
16969
|
+
"keid",
|
|
16970
|
+
"kein",
|
|
16971
|
+
"keit",
|
|
16972
|
+
"kel",
|
|
16973
|
+
"kellies",
|
|
16974
|
+
"keloù",
|
|
16975
|
+
"kement",
|
|
16976
|
+
"ken",
|
|
16977
|
+
"kenkent",
|
|
16978
|
+
"kenkoulz",
|
|
16979
|
+
"kenment",
|
|
16980
|
+
"kent",
|
|
16981
|
+
"kentañ",
|
|
16982
|
+
"kentizh",
|
|
16983
|
+
"kentoc'h",
|
|
16984
|
+
"kentre",
|
|
16985
|
+
"ker",
|
|
16986
|
+
"kerkent",
|
|
16987
|
+
"kerz",
|
|
16988
|
+
"kerzh",
|
|
16989
|
+
"ket",
|
|
16990
|
+
"keta",
|
|
16991
|
+
"keñver",
|
|
16992
|
+
"keñverel",
|
|
16993
|
+
"keñverius",
|
|
16994
|
+
"kichen",
|
|
16995
|
+
"kichenik",
|
|
16996
|
+
"kit",
|
|
16997
|
+
"kiz",
|
|
16998
|
+
"klak",
|
|
16999
|
+
"klek",
|
|
17000
|
+
"klik",
|
|
17001
|
+
"komprenet",
|
|
17002
|
+
"komz",
|
|
17003
|
+
"kont",
|
|
17004
|
+
"korf",
|
|
17005
|
+
"korre",
|
|
17006
|
+
"koulskoude",
|
|
17007
|
+
"koulz",
|
|
17008
|
+
"koust",
|
|
17009
|
+
"krak",
|
|
17010
|
+
"krampouezh",
|
|
17011
|
+
"krec'h",
|
|
17012
|
+
"kreiz",
|
|
17013
|
+
"kuit",
|
|
17014
|
+
"kwir",
|
|
17015
|
+
"l:",
|
|
17016
|
+
"la",
|
|
17017
|
+
"laez",
|
|
17018
|
+
"laoskel",
|
|
17019
|
+
"laouen",
|
|
17020
|
+
"lavar",
|
|
17021
|
+
"lavaret",
|
|
17022
|
+
"lavarout",
|
|
17023
|
+
"lec'h",
|
|
17024
|
+
"lein",
|
|
17025
|
+
"leizh",
|
|
17026
|
+
"lerc'h",
|
|
17027
|
+
"leun",
|
|
17028
|
+
"leuskel",
|
|
17029
|
+
"lew",
|
|
17030
|
+
"lies",
|
|
17031
|
+
"liesañ",
|
|
17032
|
+
"lod",
|
|
17033
|
+
"lusk",
|
|
17034
|
+
"lâr",
|
|
17035
|
+
"lârout",
|
|
17036
|
+
"m:",
|
|
17037
|
+
"ma",
|
|
17038
|
+
"ma'z",
|
|
17039
|
+
"mac'h",
|
|
17040
|
+
"mac'hat",
|
|
17041
|
+
"mac'hañ",
|
|
17042
|
+
"mac'hoc'h",
|
|
17043
|
+
"mad",
|
|
17044
|
+
"maez",
|
|
17045
|
+
"maksimal",
|
|
17046
|
+
"mann",
|
|
17047
|
+
"mar",
|
|
17048
|
+
"mard",
|
|
17049
|
+
"marg",
|
|
17050
|
+
"marzh",
|
|
17051
|
+
"mat",
|
|
17052
|
+
"mañ",
|
|
17053
|
+
"me",
|
|
17054
|
+
"memes",
|
|
17055
|
+
"memestra",
|
|
17056
|
+
"merkapl",
|
|
17057
|
+
"mersi",
|
|
17058
|
+
"mes",
|
|
17059
|
+
"mesk",
|
|
17060
|
+
"met",
|
|
17061
|
+
"meur",
|
|
17062
|
+
"mil",
|
|
17063
|
+
"minimal",
|
|
17064
|
+
"moan",
|
|
17065
|
+
"moaniaat",
|
|
17066
|
+
"mod",
|
|
17067
|
+
"mont",
|
|
17068
|
+
"mout",
|
|
17069
|
+
"mui",
|
|
17070
|
+
"muiañ",
|
|
17071
|
+
"muioc'h",
|
|
17072
|
+
"n",
|
|
17073
|
+
"n'",
|
|
17074
|
+
"n:",
|
|
16410
17075
|
"na",
|
|
16411
|
-
"
|
|
16412
|
-
"
|
|
16413
|
-
"
|
|
16414
|
-
"
|
|
16415
|
-
"
|
|
16416
|
-
"
|
|
17076
|
+
"nag",
|
|
17077
|
+
"naontek",
|
|
17078
|
+
"naturel",
|
|
17079
|
+
"nav",
|
|
17080
|
+
"navet",
|
|
17081
|
+
"ne",
|
|
17082
|
+
"nebeudig",
|
|
17083
|
+
"nebeut",
|
|
17084
|
+
"nebeutañ",
|
|
17085
|
+
"nebeutoc'h",
|
|
17086
|
+
"neketa",
|
|
17087
|
+
"nemedoc'h",
|
|
17088
|
+
"nemedomp",
|
|
17089
|
+
"nemedon",
|
|
17090
|
+
"nemedor",
|
|
17091
|
+
"nemedout",
|
|
17092
|
+
"nemet",
|
|
17093
|
+
"nemetañ",
|
|
17094
|
+
"nemete",
|
|
17095
|
+
"nemeti",
|
|
17096
|
+
"nemeto",
|
|
17097
|
+
"nemeur",
|
|
17098
|
+
"neoac'h",
|
|
17099
|
+
"nepell",
|
|
17100
|
+
"nerzh",
|
|
17101
|
+
"nes",
|
|
17102
|
+
"neseser",
|
|
17103
|
+
"netra",
|
|
17104
|
+
"neubeudoù",
|
|
17105
|
+
"neuhe",
|
|
17106
|
+
"neuze",
|
|
17107
|
+
"nevez",
|
|
17108
|
+
"newazh",
|
|
17109
|
+
"nez",
|
|
17110
|
+
"ni",
|
|
17111
|
+
"nikun",
|
|
17112
|
+
"niverus",
|
|
17113
|
+
"nul",
|
|
16417
17114
|
"o",
|
|
16418
|
-
"
|
|
16419
|
-
"
|
|
16420
|
-
"
|
|
16421
|
-
"
|
|
16422
|
-
"
|
|
16423
|
-
"
|
|
16424
|
-
"
|
|
16425
|
-
"
|
|
16426
|
-
"
|
|
16427
|
-
"
|
|
16428
|
-
"
|
|
16429
|
-
"
|
|
16430
|
-
"
|
|
16431
|
-
"
|
|
16432
|
-
"
|
|
16433
|
-
"
|
|
16434
|
-
"
|
|
16435
|
-
"
|
|
16436
|
-
"
|
|
16437
|
-
"
|
|
16438
|
-
"
|
|
16439
|
-
"
|
|
16440
|
-
"
|
|
16441
|
-
"
|
|
17115
|
+
"o:",
|
|
17116
|
+
"oa",
|
|
17117
|
+
"oac'h",
|
|
17118
|
+
"oad",
|
|
17119
|
+
"oamp",
|
|
17120
|
+
"oan",
|
|
17121
|
+
"oant",
|
|
17122
|
+
"oar",
|
|
17123
|
+
"oas",
|
|
17124
|
+
"ober",
|
|
17125
|
+
"oc'h",
|
|
17126
|
+
"oc'ho",
|
|
17127
|
+
"oc'hola",
|
|
17128
|
+
"oc'hpenn",
|
|
17129
|
+
"oh",
|
|
17130
|
+
"ohe",
|
|
17131
|
+
"ollé",
|
|
17132
|
+
"olole",
|
|
17133
|
+
"olé",
|
|
17134
|
+
"omp",
|
|
17135
|
+
"on",
|
|
17136
|
+
"ordin",
|
|
17137
|
+
"ordinal",
|
|
17138
|
+
"ouejoc'h",
|
|
17139
|
+
"ouejod",
|
|
17140
|
+
"ouejomp",
|
|
17141
|
+
"ouejont",
|
|
17142
|
+
"ouejout",
|
|
17143
|
+
"ouek",
|
|
17144
|
+
"ouezas",
|
|
17145
|
+
"ouezi",
|
|
17146
|
+
"ouezimp",
|
|
17147
|
+
"ouezin",
|
|
17148
|
+
"ouezint",
|
|
17149
|
+
"ouezis",
|
|
17150
|
+
"ouezo",
|
|
17151
|
+
"ouezoc'h",
|
|
17152
|
+
"ouezor",
|
|
17153
|
+
"ouf",
|
|
17154
|
+
"oufe",
|
|
17155
|
+
"oufec'h",
|
|
17156
|
+
"oufed",
|
|
17157
|
+
"oufemp",
|
|
17158
|
+
"oufen",
|
|
17159
|
+
"oufent",
|
|
17160
|
+
"oufes",
|
|
17161
|
+
"ouie",
|
|
17162
|
+
"ouiec'h",
|
|
17163
|
+
"ouied",
|
|
17164
|
+
"ouiemp",
|
|
17165
|
+
"ouien",
|
|
17166
|
+
"ouient",
|
|
17167
|
+
"ouies",
|
|
17168
|
+
"ouije",
|
|
17169
|
+
"ouijec'h",
|
|
17170
|
+
"ouijed",
|
|
17171
|
+
"ouijemp",
|
|
17172
|
+
"ouijen",
|
|
17173
|
+
"ouijent",
|
|
17174
|
+
"ouijes",
|
|
17175
|
+
"out",
|
|
17176
|
+
"outañ",
|
|
17177
|
+
"outi",
|
|
17178
|
+
"outo",
|
|
17179
|
+
"ouzer",
|
|
17180
|
+
"ouzh",
|
|
17181
|
+
"ouzhin",
|
|
17182
|
+
"ouzhit",
|
|
17183
|
+
"ouzhoc'h",
|
|
17184
|
+
"ouzhomp",
|
|
17185
|
+
"ouzhor",
|
|
17186
|
+
"ouzhpenn",
|
|
17187
|
+
"ouzhpennik",
|
|
17188
|
+
"ouzoc'h",
|
|
17189
|
+
"ouzomp",
|
|
17190
|
+
"ouzon",
|
|
17191
|
+
"ouzont",
|
|
17192
|
+
"ouzout",
|
|
17193
|
+
"p'",
|
|
17194
|
+
"p:",
|
|
17195
|
+
"pa",
|
|
17196
|
+
"pad",
|
|
17197
|
+
"padal",
|
|
17198
|
+
"paf",
|
|
17199
|
+
"pan",
|
|
17200
|
+
"panevedeoc'h",
|
|
17201
|
+
"panevedo",
|
|
17202
|
+
"panevedomp",
|
|
17203
|
+
"panevedon",
|
|
17204
|
+
"panevedout",
|
|
17205
|
+
"panevet",
|
|
17206
|
+
"panevetañ",
|
|
17207
|
+
"paneveti",
|
|
17208
|
+
"pas",
|
|
17209
|
+
"paseet",
|
|
17210
|
+
"pe",
|
|
17211
|
+
"peadra",
|
|
17212
|
+
"peder",
|
|
17213
|
+
"pedervet",
|
|
17214
|
+
"pedervetvet",
|
|
17215
|
+
"pefe",
|
|
17216
|
+
"pegeit",
|
|
17217
|
+
"pegement",
|
|
17218
|
+
"pegen",
|
|
17219
|
+
"pegiz",
|
|
17220
|
+
"pegoulz",
|
|
17221
|
+
"pehini",
|
|
17222
|
+
"pelec'h",
|
|
17223
|
+
"pell",
|
|
17224
|
+
"pemod",
|
|
17225
|
+
"pemp",
|
|
17226
|
+
"pempved",
|
|
17227
|
+
"pemzek",
|
|
17228
|
+
"penaos",
|
|
17229
|
+
"penn",
|
|
17230
|
+
"peogwir",
|
|
17231
|
+
"peotramant",
|
|
17232
|
+
"pep",
|
|
17233
|
+
"perak",
|
|
17234
|
+
"perc'hennañ",
|
|
17235
|
+
"pergen",
|
|
17236
|
+
"permetiñ",
|
|
17237
|
+
"peseurt",
|
|
17238
|
+
"pet",
|
|
17239
|
+
"petiaoul",
|
|
17240
|
+
"petoare",
|
|
17241
|
+
"petra",
|
|
17242
|
+
"peur",
|
|
17243
|
+
"peurgetket",
|
|
17244
|
+
"peurheñvel",
|
|
17245
|
+
"peurliesañ",
|
|
17246
|
+
"peurvuiañ",
|
|
17247
|
+
"peus",
|
|
17248
|
+
"peustost",
|
|
17249
|
+
"peuz",
|
|
17250
|
+
"pevar",
|
|
17251
|
+
"pevare",
|
|
17252
|
+
"pevarevet",
|
|
17253
|
+
"pevarzek",
|
|
17254
|
+
"pez",
|
|
17255
|
+
"peze",
|
|
17256
|
+
"pezh",
|
|
17257
|
+
"pff",
|
|
17258
|
+
"pfft",
|
|
17259
|
+
"pfut",
|
|
17260
|
+
"picher",
|
|
17261
|
+
"pif",
|
|
17262
|
+
"pife",
|
|
17263
|
+
"pign",
|
|
17264
|
+
"pije",
|
|
17265
|
+
"pikol",
|
|
17266
|
+
"pitiaoul",
|
|
17267
|
+
"piv",
|
|
17268
|
+
"plaouf",
|
|
17269
|
+
"plok",
|
|
17270
|
+
"plouf",
|
|
17271
|
+
"po",
|
|
17272
|
+
"poa",
|
|
17273
|
+
"poelladus",
|
|
17274
|
+
"pof",
|
|
17275
|
+
"pok",
|
|
17276
|
+
"posupl",
|
|
17277
|
+
"pouah",
|
|
17278
|
+
"pourc'henn",
|
|
17279
|
+
"prest",
|
|
17280
|
+
"prestik",
|
|
17281
|
+
"prim",
|
|
17282
|
+
"prin",
|
|
17283
|
+
"provostapl",
|
|
17284
|
+
"pst",
|
|
17285
|
+
"pu",
|
|
17286
|
+
"pur",
|
|
17287
|
+
"r:",
|
|
17288
|
+
"ra",
|
|
17289
|
+
"rae",
|
|
17290
|
+
"raec'h",
|
|
17291
|
+
"raed",
|
|
17292
|
+
"raemp",
|
|
17293
|
+
"raen",
|
|
17294
|
+
"raent",
|
|
17295
|
+
"raes",
|
|
17296
|
+
"rafe",
|
|
17297
|
+
"rafec'h",
|
|
17298
|
+
"rafed",
|
|
17299
|
+
"rafemp",
|
|
17300
|
+
"rafen",
|
|
17301
|
+
"rafent",
|
|
17302
|
+
"rafes",
|
|
17303
|
+
"rag",
|
|
17304
|
+
"raimp",
|
|
17305
|
+
"raint",
|
|
17306
|
+
"raio",
|
|
17307
|
+
"raje",
|
|
17308
|
+
"rajec'h",
|
|
17309
|
+
"rajed",
|
|
17310
|
+
"rajemp",
|
|
17311
|
+
"rajen",
|
|
17312
|
+
"rajent",
|
|
17313
|
+
"rajes",
|
|
17314
|
+
"rak",
|
|
17315
|
+
"ral",
|
|
17316
|
+
"ran",
|
|
17317
|
+
"rankout",
|
|
17318
|
+
"raok",
|
|
17319
|
+
"razh",
|
|
17320
|
+
"re",
|
|
17321
|
+
"reas",
|
|
17322
|
+
"reer",
|
|
17323
|
+
"regennoù",
|
|
17324
|
+
"reiñ",
|
|
17325
|
+
"rejoc'h",
|
|
17326
|
+
"rejod",
|
|
17327
|
+
"rejomp",
|
|
17328
|
+
"rejont",
|
|
17329
|
+
"rejout",
|
|
17330
|
+
"rener",
|
|
17331
|
+
"rentañ",
|
|
17332
|
+
"reoc'h",
|
|
17333
|
+
"reomp",
|
|
17334
|
+
"reont",
|
|
17335
|
+
"reor",
|
|
17336
|
+
"reot",
|
|
17337
|
+
"resis",
|
|
17338
|
+
"ret",
|
|
17339
|
+
"reve",
|
|
17340
|
+
"rez",
|
|
17341
|
+
"ri",
|
|
17342
|
+
"rik",
|
|
17343
|
+
"rin",
|
|
17344
|
+
"ris",
|
|
17345
|
+
"rit",
|
|
17346
|
+
"rouez",
|
|
17347
|
+
"s:",
|
|
17348
|
+
"sac'h",
|
|
17349
|
+
"sant",
|
|
17350
|
+
"sav",
|
|
17351
|
+
"sañset",
|
|
16442
17352
|
"se",
|
|
16443
|
-
"
|
|
16444
|
-
"
|
|
16445
|
-
"
|
|
16446
|
-
"
|
|
16447
|
-
"
|
|
16448
|
-
"
|
|
16449
|
-
"
|
|
16450
|
-
"
|
|
16451
|
-
"
|
|
17353
|
+
"sed",
|
|
17354
|
+
"seitek",
|
|
17355
|
+
"seizh",
|
|
17356
|
+
"seizhvet",
|
|
17357
|
+
"sell",
|
|
17358
|
+
"sellit",
|
|
17359
|
+
"ser",
|
|
17360
|
+
"setu",
|
|
17361
|
+
"seul",
|
|
17362
|
+
"seurt",
|
|
17363
|
+
"siwazh",
|
|
17364
|
+
"skignañ",
|
|
17365
|
+
"skoaz",
|
|
17366
|
+
"skouer",
|
|
17367
|
+
"sort",
|
|
17368
|
+
"souden",
|
|
17369
|
+
"souvitañ",
|
|
17370
|
+
"soñj",
|
|
17371
|
+
"speriañ",
|
|
17372
|
+
"spririñ",
|
|
17373
|
+
"stad",
|
|
17374
|
+
"stlabezañ",
|
|
17375
|
+
"stop",
|
|
17376
|
+
"stranañ",
|
|
17377
|
+
"strewiñ",
|
|
17378
|
+
"strishaat",
|
|
17379
|
+
"stumm",
|
|
17380
|
+
"sujed",
|
|
17381
|
+
"surtoud",
|
|
17382
|
+
"t:",
|
|
17383
|
+
"ta",
|
|
17384
|
+
"taer",
|
|
17385
|
+
"tailh",
|
|
17386
|
+
"tak",
|
|
16452
17387
|
"tal",
|
|
16453
|
-
"
|
|
16454
|
-
"
|
|
17388
|
+
"talvoudegezh",
|
|
17389
|
+
"tamm",
|
|
17390
|
+
"tanav",
|
|
17391
|
+
"taol",
|
|
17392
|
+
"te",
|
|
17393
|
+
"techet",
|
|
17394
|
+
"teir",
|
|
17395
|
+
"teirvet",
|
|
17396
|
+
"telt",
|
|
17397
|
+
"teltenn",
|
|
16455
17398
|
"teus",
|
|
16456
|
-
"
|
|
16457
|
-
"
|
|
16458
|
-
"
|
|
16459
|
-
"
|
|
16460
|
-
"
|
|
16461
|
-
"
|
|
16462
|
-
"
|
|
16463
|
-
"
|
|
16464
|
-
"
|
|
16465
|
-
"
|
|
16466
|
-
"
|
|
17399
|
+
"teut",
|
|
17400
|
+
"teuteu",
|
|
17401
|
+
"ti",
|
|
17402
|
+
"tik",
|
|
17403
|
+
"toa",
|
|
17404
|
+
"tok",
|
|
17405
|
+
"tost",
|
|
17406
|
+
"tostig",
|
|
17407
|
+
"toud",
|
|
17408
|
+
"touesk",
|
|
17409
|
+
"touez",
|
|
17410
|
+
"toull",
|
|
17411
|
+
"tra",
|
|
17412
|
+
"trantenn",
|
|
17413
|
+
"traoñ",
|
|
17414
|
+
"trawalc'h",
|
|
17415
|
+
"tre",
|
|
17416
|
+
"trede",
|
|
17417
|
+
"tregont",
|
|
17418
|
+
"tremenet",
|
|
17419
|
+
"tri",
|
|
17420
|
+
"trivet",
|
|
17421
|
+
"triwec'h",
|
|
17422
|
+
"trizek",
|
|
17423
|
+
"tro",
|
|
17424
|
+
"trugarez",
|
|
17425
|
+
"trumm",
|
|
17426
|
+
"tsoin",
|
|
17427
|
+
"tsouin",
|
|
17428
|
+
"tu",
|
|
17429
|
+
"tud",
|
|
17430
|
+
"u:",
|
|
17431
|
+
"ugent",
|
|
17432
|
+
"uhel",
|
|
17433
|
+
"uhelañ",
|
|
17434
|
+
"ul",
|
|
17435
|
+
"un",
|
|
17436
|
+
"unan",
|
|
17437
|
+
"unanez",
|
|
17438
|
+
"unanig",
|
|
17439
|
+
"unnek",
|
|
17440
|
+
"unnekvet",
|
|
17441
|
+
"ur",
|
|
17442
|
+
"urzh",
|
|
17443
|
+
"us",
|
|
17444
|
+
"v:",
|
|
17445
|
+
"va",
|
|
17446
|
+
"vale",
|
|
17447
|
+
"van",
|
|
17448
|
+
"vare",
|
|
17449
|
+
"vat",
|
|
17450
|
+
"vefe",
|
|
17451
|
+
"vefec'h",
|
|
17452
|
+
"vefed",
|
|
17453
|
+
"vefemp",
|
|
17454
|
+
"vefen",
|
|
17455
|
+
"vefent",
|
|
17456
|
+
"vefes",
|
|
17457
|
+
"vesk",
|
|
17458
|
+
"vete",
|
|
17459
|
+
"vez",
|
|
17460
|
+
"vezan",
|
|
17461
|
+
"vezañ",
|
|
17462
|
+
"veze",
|
|
17463
|
+
"vezec'h",
|
|
17464
|
+
"vezed",
|
|
17465
|
+
"vezemp",
|
|
17466
|
+
"vezen",
|
|
17467
|
+
"vezent",
|
|
17468
|
+
"vezer",
|
|
17469
|
+
"vezes",
|
|
17470
|
+
"vezez",
|
|
17471
|
+
"vezit",
|
|
17472
|
+
"vezomp",
|
|
17473
|
+
"vezont",
|
|
17474
|
+
"vi",
|
|
17475
|
+
"vihan",
|
|
17476
|
+
"vihanañ",
|
|
17477
|
+
"vije",
|
|
17478
|
+
"vijec'h",
|
|
17479
|
+
"vijed",
|
|
17480
|
+
"vijemp",
|
|
17481
|
+
"vijen",
|
|
17482
|
+
"vijent",
|
|
17483
|
+
"vijes",
|
|
17484
|
+
"viken",
|
|
17485
|
+
"vimp",
|
|
17486
|
+
"vin",
|
|
17487
|
+
"vint",
|
|
17488
|
+
"vior",
|
|
17489
|
+
"viot",
|
|
17490
|
+
"virviken",
|
|
17491
|
+
"viskoazh",
|
|
17492
|
+
"vlan",
|
|
17493
|
+
"vlaou",
|
|
17494
|
+
"vo",
|
|
17495
|
+
"vod",
|
|
17496
|
+
"voe",
|
|
17497
|
+
"voec'h",
|
|
17498
|
+
"voed",
|
|
17499
|
+
"voemp",
|
|
17500
|
+
"voen",
|
|
17501
|
+
"voent",
|
|
17502
|
+
"voes",
|
|
17503
|
+
"vont",
|
|
17504
|
+
"vostapl",
|
|
17505
|
+
"vrac'h",
|
|
17506
|
+
"vrasañ",
|
|
17507
|
+
"vremañ",
|
|
17508
|
+
"w:",
|
|
17509
|
+
"walc'h",
|
|
17510
|
+
"war",
|
|
17511
|
+
"warnañ",
|
|
17512
|
+
"warni",
|
|
17513
|
+
"warno",
|
|
17514
|
+
"warnoc'h",
|
|
17515
|
+
"warnomp",
|
|
17516
|
+
"warnon",
|
|
17517
|
+
"warnor",
|
|
17518
|
+
"warnout",
|
|
17519
|
+
"wazh",
|
|
17520
|
+
"wech",
|
|
17521
|
+
"wechoù",
|
|
17522
|
+
"well",
|
|
17523
|
+
"y:",
|
|
17524
|
+
"you",
|
|
17525
|
+
"youadenn",
|
|
17526
|
+
"youc'hadenn",
|
|
17527
|
+
"youc'hou",
|
|
17528
|
+
"z:",
|
|
17529
|
+
"za",
|
|
17530
|
+
"zan",
|
|
17531
|
+
"zaw",
|
|
17532
|
+
"zeu",
|
|
17533
|
+
"zi",
|
|
17534
|
+
"ziar",
|
|
17535
|
+
"zigarez",
|
|
17536
|
+
"ziget",
|
|
17537
|
+
"zindan",
|
|
17538
|
+
"zioc'h",
|
|
17539
|
+
"ziouzh",
|
|
17540
|
+
"zirak",
|
|
17541
|
+
"zivout",
|
|
17542
|
+
"ziwar",
|
|
17543
|
+
"ziwezhañ",
|
|
17544
|
+
"zo",
|
|
17545
|
+
"zoken",
|
|
17546
|
+
"zokenoc'h",
|
|
17547
|
+
"zouesk",
|
|
17548
|
+
"zouez",
|
|
17549
|
+
"zro",
|
|
17550
|
+
"zu"
|
|
16467
17551
|
];
|
|
16468
17552
|
const bul = [
|
|
16469
17553
|
"а",
|
|
@@ -28119,22 +29203,32 @@ const tur = [
|
|
|
28119
29203
|
"şöyle"
|
|
28120
29204
|
];
|
|
28121
29205
|
const ukr = [
|
|
29206
|
+
"а",
|
|
29207
|
+
"або",
|
|
28122
29208
|
"авжеж",
|
|
28123
29209
|
"адже",
|
|
29210
|
+
"аж",
|
|
28124
29211
|
"але",
|
|
29212
|
+
"ані",
|
|
28125
29213
|
"б",
|
|
28126
29214
|
"без",
|
|
29215
|
+
"би",
|
|
29216
|
+
"бо",
|
|
28127
29217
|
"був",
|
|
28128
29218
|
"була",
|
|
28129
29219
|
"були",
|
|
28130
29220
|
"було",
|
|
28131
29221
|
"бути",
|
|
28132
29222
|
"більш",
|
|
29223
|
+
"в",
|
|
28133
29224
|
"вам",
|
|
29225
|
+
"вами",
|
|
28134
29226
|
"вас",
|
|
28135
29227
|
"весь",
|
|
29228
|
+
"вже",
|
|
28136
29229
|
"вздовж",
|
|
28137
29230
|
"ви",
|
|
29231
|
+
"від",
|
|
28138
29232
|
"вниз",
|
|
28139
29233
|
"внизу",
|
|
28140
29234
|
"вона",
|
|
@@ -28143,55 +29237,138 @@ const ukr = [
|
|
|
28143
29237
|
"все",
|
|
28144
29238
|
"всередині",
|
|
28145
29239
|
"всіх",
|
|
29240
|
+
"вся",
|
|
28146
29241
|
"від",
|
|
28147
29242
|
"він",
|
|
28148
29243
|
"да",
|
|
28149
29244
|
"давай",
|
|
28150
29245
|
"давати",
|
|
28151
29246
|
"де",
|
|
29247
|
+
"десь",
|
|
28152
29248
|
"дещо",
|
|
28153
29249
|
"для",
|
|
28154
29250
|
"до",
|
|
29251
|
+
"є",
|
|
29252
|
+
"ж",
|
|
29253
|
+
"же",
|
|
28155
29254
|
"з",
|
|
29255
|
+
"за",
|
|
28156
29256
|
"завжди",
|
|
28157
29257
|
"замість",
|
|
29258
|
+
"зі",
|
|
29259
|
+
"і",
|
|
29260
|
+
"із",
|
|
29261
|
+
"інших",
|
|
29262
|
+
"її",
|
|
29263
|
+
"їй",
|
|
29264
|
+
"їм",
|
|
29265
|
+
"їх",
|
|
28158
29266
|
"й",
|
|
29267
|
+
"його",
|
|
29268
|
+
"йому",
|
|
28159
29269
|
"коли",
|
|
28160
29270
|
"ледве",
|
|
29271
|
+
"лиш",
|
|
28161
29272
|
"майже",
|
|
29273
|
+
"мене",
|
|
29274
|
+
"мені",
|
|
28162
29275
|
"ми",
|
|
29276
|
+
"між",
|
|
29277
|
+
"мій",
|
|
29278
|
+
"мною",
|
|
29279
|
+
"мов",
|
|
29280
|
+
"мого",
|
|
29281
|
+
"моєї",
|
|
29282
|
+
"моє",
|
|
29283
|
+
"може",
|
|
29284
|
+
"мої",
|
|
29285
|
+
"моїх",
|
|
29286
|
+
"моя",
|
|
29287
|
+
"на",
|
|
29288
|
+
"над",
|
|
28163
29289
|
"навколо",
|
|
28164
29290
|
"навіть",
|
|
28165
29291
|
"нам",
|
|
29292
|
+
"нами",
|
|
29293
|
+
"нас",
|
|
29294
|
+
"наче",
|
|
29295
|
+
"наш",
|
|
29296
|
+
"не",
|
|
29297
|
+
"нє",
|
|
29298
|
+
"неї",
|
|
29299
|
+
"нема",
|
|
29300
|
+
"немов",
|
|
29301
|
+
"неначе",
|
|
29302
|
+
"нею",
|
|
29303
|
+
"ним",
|
|
29304
|
+
"ними",
|
|
29305
|
+
"них",
|
|
29306
|
+
"ні",
|
|
29307
|
+
"ніби",
|
|
29308
|
+
"ніщо",
|
|
29309
|
+
"нього",
|
|
29310
|
+
"о",
|
|
29311
|
+
"ось",
|
|
28166
29312
|
"от",
|
|
28167
29313
|
"отже",
|
|
28168
29314
|
"отож",
|
|
29315
|
+
"під",
|
|
29316
|
+
"по",
|
|
28169
29317
|
"поза",
|
|
28170
29318
|
"про",
|
|
28171
29319
|
"під",
|
|
29320
|
+
"сам",
|
|
29321
|
+
"сама",
|
|
29322
|
+
"свій",
|
|
29323
|
+
"свої",
|
|
29324
|
+
"своя",
|
|
29325
|
+
"свою",
|
|
29326
|
+
"себе",
|
|
29327
|
+
"собі",
|
|
28172
29328
|
"та",
|
|
29329
|
+
"там",
|
|
28173
29330
|
"так",
|
|
29331
|
+
"така",
|
|
28174
29332
|
"такий",
|
|
28175
29333
|
"також",
|
|
29334
|
+
"твій",
|
|
29335
|
+
"твого",
|
|
29336
|
+
"твоєї",
|
|
29337
|
+
"твої",
|
|
29338
|
+
"твоя",
|
|
28176
29339
|
"те",
|
|
29340
|
+
"тебе",
|
|
28177
29341
|
"ти",
|
|
29342
|
+
"ті",
|
|
29343
|
+
"тільки",
|
|
29344
|
+
"то",
|
|
29345
|
+
"тобі",
|
|
29346
|
+
"тобою",
|
|
28178
29347
|
"тобто",
|
|
29348
|
+
"тоді",
|
|
28179
29349
|
"тож",
|
|
29350
|
+
"той",
|
|
28180
29351
|
"тощо",
|
|
29352
|
+
"тут",
|
|
29353
|
+
"у",
|
|
29354
|
+
"хіба",
|
|
29355
|
+
"хоч",
|
|
28181
29356
|
"хоча",
|
|
28182
29357
|
"це",
|
|
28183
29358
|
"цей",
|
|
29359
|
+
"ці",
|
|
29360
|
+
"ця",
|
|
28184
29361
|
"чи",
|
|
28185
29362
|
"чого",
|
|
29363
|
+
"ще",
|
|
28186
29364
|
"що",
|
|
29365
|
+
"щоб",
|
|
29366
|
+
"щось",
|
|
29367
|
+
"я",
|
|
28187
29368
|
"як",
|
|
29369
|
+
"яка",
|
|
28188
29370
|
"який",
|
|
28189
|
-
"якої"
|
|
28190
|
-
"є",
|
|
28191
|
-
"із",
|
|
28192
|
-
"інших",
|
|
28193
|
-
"їх",
|
|
28194
|
-
"її"
|
|
29371
|
+
"якої"
|
|
28195
29372
|
];
|
|
28196
29373
|
const urd = [
|
|
28197
29374
|
"آئی",
|
|
@@ -29189,7 +30366,14 @@ const TINA_LOGIN_EVENT = "tinaCloudLogin";
|
|
|
29189
30366
|
const AUTH_TOKEN_KEY = "tinacms-auth";
|
|
29190
30367
|
const authenticate = (clientId, frontendUrl) => {
|
|
29191
30368
|
return new Promise((resolve) => {
|
|
29192
|
-
|
|
30369
|
+
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
30370
|
+
const authTab = popupWindow(
|
|
30371
|
+
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
30372
|
+
"_blank",
|
|
30373
|
+
window,
|
|
30374
|
+
1e3,
|
|
30375
|
+
700
|
|
30376
|
+
);
|
|
29193
30377
|
window.addEventListener("message", function(e) {
|
|
29194
30378
|
if (e.data.source === TINA_LOGIN_EVENT) {
|
|
29195
30379
|
if (authTab) {
|
|
@@ -29202,14 +30386,6 @@ const authenticate = (clientId, frontendUrl) => {
|
|
|
29202
30386
|
});
|
|
29203
30387
|
}
|
|
29204
30388
|
});
|
|
29205
|
-
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
29206
|
-
authTab = popupWindow(
|
|
29207
|
-
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
29208
|
-
"_blank",
|
|
29209
|
-
window,
|
|
29210
|
-
1e3,
|
|
29211
|
-
700
|
|
29212
|
-
);
|
|
29213
30389
|
});
|
|
29214
30390
|
};
|
|
29215
30391
|
const DefaultSessionProvider = ({
|
|
@@ -29520,6 +30696,7 @@ mutation addPendingDocumentMutation(
|
|
|
29520
30696
|
setBranch(branchName) {
|
|
29521
30697
|
var _a, _b, _c, _d;
|
|
29522
30698
|
const encodedBranch = encodeURIComponent(branchName);
|
|
30699
|
+
document.cookie = `x-branch=${encodedBranch}; path=/; max-age=3600`;
|
|
29523
30700
|
this.branch = encodedBranch;
|
|
29524
30701
|
this.assetsApiUrl = ((_a = this.options.tinaioConfig) == null ? void 0 : _a.assetsApiUrlOverride) || "https://assets.tinajs.io";
|
|
29525
30702
|
this.frontendUrl = ((_b = this.options.tinaioConfig) == null ? void 0 : _b.frontendUrlOverride) || "https://app.tina.io";
|
|
@@ -29562,7 +30739,7 @@ mutation addPendingDocumentMutation(
|
|
|
29562
30739
|
branch: ${this.branch}.`;
|
|
29563
30740
|
if (this.branch !== "main") {
|
|
29564
30741
|
errorMessage = `${errorMessage}
|
|
29565
|
-
Note: This error can occur if the branch does not exist on GitHub or on
|
|
30742
|
+
Note: This error can occur if the branch does not exist on GitHub or on TinaCloud`;
|
|
29566
30743
|
}
|
|
29567
30744
|
}
|
|
29568
30745
|
throw new Error(errorMessage);
|
|
@@ -29698,7 +30875,7 @@ mutation addPendingDocumentMutation(
|
|
|
29698
30875
|
unknownCount++;
|
|
29699
30876
|
if (unknownCount > 5) {
|
|
29700
30877
|
throw new Error(
|
|
29701
|
-
"AsyncPoller: status unknown for too long, please check indexing progress the
|
|
30878
|
+
"AsyncPoller: status unknown for too long, please check indexing progress the TinaCloud dashboard"
|
|
29702
30879
|
);
|
|
29703
30880
|
}
|
|
29704
30881
|
}
|
|
@@ -29915,56 +31092,6 @@ const AsyncButton = ({ name, primary, action }) => {
|
|
|
29915
31092
|
!submitting && name
|
|
29916
31093
|
);
|
|
29917
31094
|
};
|
|
29918
|
-
const TINA_AUTH_CONFIG = "tina_auth_config";
|
|
29919
|
-
const useTinaAuthRedirect = () => {
|
|
29920
|
-
useEffect(() => {
|
|
29921
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
29922
|
-
const config = {
|
|
29923
|
-
code: urlParams.get("code") || "",
|
|
29924
|
-
scope: urlParams.get("scope") || "email",
|
|
29925
|
-
state: urlParams.get("state")
|
|
29926
|
-
};
|
|
29927
|
-
if (!config.code) {
|
|
29928
|
-
return;
|
|
29929
|
-
}
|
|
29930
|
-
localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
|
|
29931
|
-
}, []);
|
|
29932
|
-
};
|
|
29933
|
-
const createClient = ({
|
|
29934
|
-
clientId,
|
|
29935
|
-
isLocalClient = true,
|
|
29936
|
-
branch,
|
|
29937
|
-
tinaioConfig,
|
|
29938
|
-
schema,
|
|
29939
|
-
apiUrl,
|
|
29940
|
-
tinaGraphQLVersion
|
|
29941
|
-
}) => {
|
|
29942
|
-
return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
|
|
29943
|
-
clientId: clientId || "",
|
|
29944
|
-
branch: branch || "main",
|
|
29945
|
-
tokenStorage: "LOCAL_STORAGE",
|
|
29946
|
-
tinaioConfig,
|
|
29947
|
-
schema,
|
|
29948
|
-
tinaGraphQLVersion
|
|
29949
|
-
});
|
|
29950
|
-
};
|
|
29951
|
-
function assertShape(value, yupSchema, errorMessage) {
|
|
29952
|
-
const shape = yupSchema(yup);
|
|
29953
|
-
try {
|
|
29954
|
-
shape.validateSync(value);
|
|
29955
|
-
} catch (e) {
|
|
29956
|
-
const message = errorMessage || `Failed to assertShape - ${e.message}`;
|
|
29957
|
-
throw new Error(message);
|
|
29958
|
-
}
|
|
29959
|
-
}
|
|
29960
|
-
function safeAssertShape(value, yupSchema) {
|
|
29961
|
-
try {
|
|
29962
|
-
assertShape(value, yupSchema);
|
|
29963
|
-
return true;
|
|
29964
|
-
} catch (e) {
|
|
29965
|
-
return false;
|
|
29966
|
-
}
|
|
29967
|
-
}
|
|
29968
31095
|
class TinaAdminApi {
|
|
29969
31096
|
constructor(cms) {
|
|
29970
31097
|
var _a, _b, _c, _d;
|
|
@@ -30311,6 +31438,56 @@ class TinaAdminApi {
|
|
|
30311
31438
|
);
|
|
30312
31439
|
}
|
|
30313
31440
|
}
|
|
31441
|
+
const createClient = ({
|
|
31442
|
+
clientId,
|
|
31443
|
+
isLocalClient = true,
|
|
31444
|
+
branch,
|
|
31445
|
+
tinaioConfig,
|
|
31446
|
+
schema,
|
|
31447
|
+
apiUrl,
|
|
31448
|
+
tinaGraphQLVersion
|
|
31449
|
+
}) => {
|
|
31450
|
+
return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
|
|
31451
|
+
clientId: clientId || "",
|
|
31452
|
+
branch: branch || "main",
|
|
31453
|
+
tokenStorage: "LOCAL_STORAGE",
|
|
31454
|
+
tinaioConfig,
|
|
31455
|
+
schema,
|
|
31456
|
+
tinaGraphQLVersion
|
|
31457
|
+
});
|
|
31458
|
+
};
|
|
31459
|
+
function assertShape(value, yupSchema, errorMessage) {
|
|
31460
|
+
const shape = yupSchema(yup);
|
|
31461
|
+
try {
|
|
31462
|
+
shape.validateSync(value);
|
|
31463
|
+
} catch (e) {
|
|
31464
|
+
const message = errorMessage || `Failed to assertShape - ${e.message}`;
|
|
31465
|
+
throw new Error(message);
|
|
31466
|
+
}
|
|
31467
|
+
}
|
|
31468
|
+
function safeAssertShape(value, yupSchema) {
|
|
31469
|
+
try {
|
|
31470
|
+
assertShape(value, yupSchema);
|
|
31471
|
+
return true;
|
|
31472
|
+
} catch (e) {
|
|
31473
|
+
return false;
|
|
31474
|
+
}
|
|
31475
|
+
}
|
|
31476
|
+
const TINA_AUTH_CONFIG = "tina_auth_config";
|
|
31477
|
+
const useTinaAuthRedirect = () => {
|
|
31478
|
+
useEffect(() => {
|
|
31479
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
31480
|
+
const config = {
|
|
31481
|
+
code: urlParams.get("code") || "",
|
|
31482
|
+
scope: urlParams.get("scope") || "email",
|
|
31483
|
+
state: urlParams.get("state")
|
|
31484
|
+
};
|
|
31485
|
+
if (!config.code) {
|
|
31486
|
+
return;
|
|
31487
|
+
}
|
|
31488
|
+
localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
|
|
31489
|
+
}, []);
|
|
31490
|
+
};
|
|
30314
31491
|
function sleep(ms) {
|
|
30315
31492
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
30316
31493
|
}
|
|
@@ -30409,7 +31586,7 @@ const AuthWallInner = ({
|
|
|
30409
31586
|
});
|
|
30410
31587
|
}
|
|
30411
31588
|
};
|
|
30412
|
-
let modalTitle = "
|
|
31589
|
+
let modalTitle = "TinaCloud";
|
|
30413
31590
|
if (activeModal === "authenticate" && loginStrategy === "Redirect" && !isTinaCloud) {
|
|
30414
31591
|
modalTitle = "Enter into edit mode";
|
|
30415
31592
|
} else if (activeModal === "authenticate" && loginStrategy === "UsernamePassword") {
|
|
@@ -30425,7 +31602,7 @@ const AuthWallInner = ({
|
|
|
30425
31602
|
ModalBuilder,
|
|
30426
31603
|
{
|
|
30427
31604
|
title: modalTitle,
|
|
30428
|
-
message: isTinaCloud ? "Your site uses
|
|
31605
|
+
message: isTinaCloud ? "Your site uses TinaCloud to track changes. To make edits, you must log in." : "To save edits, enter into edit mode. On save, changes will saved to the local filesystem.",
|
|
30429
31606
|
close,
|
|
30430
31607
|
actions: [
|
|
30431
31608
|
...otherModalActions,
|
|
@@ -30647,6 +31824,9 @@ const TinaCloudProvider = (props) => {
|
|
|
30647
31824
|
cms.flags.set("branch-switcher", true);
|
|
30648
31825
|
client.usingEditorialWorkflow = true;
|
|
30649
31826
|
client.protectedBranches = project.protectedBranches;
|
|
31827
|
+
if (!project.metadata[currentBranch]) {
|
|
31828
|
+
setCurrentBranch(project.defaultBranch || "main");
|
|
31829
|
+
}
|
|
30650
31830
|
}
|
|
30651
31831
|
});
|
|
30652
31832
|
};
|
|
@@ -30659,7 +31839,7 @@ const TinaCloudProvider = (props) => {
|
|
|
30659
31839
|
}
|
|
30660
31840
|
});
|
|
30661
31841
|
return unsubscribe;
|
|
30662
|
-
}, [isTinaCloud, cms]);
|
|
31842
|
+
}, [currentBranch, isTinaCloud, cms]);
|
|
30663
31843
|
return /* @__PURE__ */ React__default.createElement(SessionProvider, { basePath: "/api/tina/auth" }, /* @__PURE__ */ React__default.createElement(
|
|
30664
31844
|
BranchDataProvider,
|
|
30665
31845
|
{
|
|
@@ -31145,6 +32325,14 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31145
32325
|
}
|
|
31146
32326
|
return client.request(query, { variables });
|
|
31147
32327
|
};
|
|
32328
|
+
const GetCMS = ({ children }) => {
|
|
32329
|
+
try {
|
|
32330
|
+
const cms = useCMS$1();
|
|
32331
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children(cms));
|
|
32332
|
+
} catch (e) {
|
|
32333
|
+
return null;
|
|
32334
|
+
}
|
|
32335
|
+
};
|
|
31148
32336
|
const Layout = ({ children }) => {
|
|
31149
32337
|
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
|
|
31150
32338
|
"div",
|
|
@@ -31356,47 +32544,6 @@ const SidebarCloudLink = ({ config }) => {
|
|
|
31356
32544
|
}
|
|
31357
32545
|
return /* @__PURE__ */ React__default.createElement("span", { className: "text-base tracking-wide text-gray-500 hover:text-blue-600 flex items-center opacity-90 hover:opacity-100" }, /* @__PURE__ */ React__default.createElement(config.Icon, { className: "mr-2 h-6 opacity-80 w-auto" }), /* @__PURE__ */ React__default.createElement("a", { target: "_blank", href: config.link.href }, config.link.text));
|
|
31358
32546
|
};
|
|
31359
|
-
const GetCMS = ({ children }) => {
|
|
31360
|
-
try {
|
|
31361
|
-
const cms = useCMS$1();
|
|
31362
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children(cms));
|
|
31363
|
-
} catch (e) {
|
|
31364
|
-
return null;
|
|
31365
|
-
}
|
|
31366
|
-
};
|
|
31367
|
-
const PageWrapper = ({ children }) => {
|
|
31368
|
-
var _a, _b;
|
|
31369
|
-
const cms = useCMS$1();
|
|
31370
|
-
const isLocalMode = (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode;
|
|
31371
|
-
const [branchingEnabled, setBranchingEnabled] = React__default.useState(
|
|
31372
|
-
() => cms.flags.get("branch-switcher")
|
|
31373
|
-
);
|
|
31374
|
-
React__default.useEffect(() => {
|
|
31375
|
-
cms.events.subscribe("flag:set", ({ key, value }) => {
|
|
31376
|
-
if (key === "branch-switcher") {
|
|
31377
|
-
setBranchingEnabled(value);
|
|
31378
|
-
}
|
|
31379
|
-
});
|
|
31380
|
-
}, [cms.events]);
|
|
31381
|
-
return /* @__PURE__ */ React__default.createElement("div", { className: "relative left-0 w-full h-full bg-gradient-to-b from-gray-50/50 to-gray-50 shadow-2xl overflow-y-auto transition-opacity duration-300 ease-out flex flex-col opacity-100" }, branchingEnabled && !isLocalMode && /* @__PURE__ */ React__default.createElement(BranchBanner, null), children);
|
|
31382
|
-
};
|
|
31383
|
-
const PageHeader = ({
|
|
31384
|
-
isLocalMode,
|
|
31385
|
-
children
|
|
31386
|
-
}) => {
|
|
31387
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, isLocalMode && /* @__PURE__ */ React__default.createElement(LocalWarning, null), !isLocalMode && /* @__PURE__ */ React__default.createElement(BillingWarning, null), /* @__PURE__ */ React__default.createElement("div", { className: "pt-16 xl:pt-12 px-6 xl:px-12" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full mx-auto max-w-screen-xl" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full flex justify-between items-end" }, children))));
|
|
31388
|
-
};
|
|
31389
|
-
const PageBody = ({ children }) => /* @__PURE__ */ React__default.createElement("div", { className: "py-8 px-6 xl:px-12" }, children);
|
|
31390
|
-
const PageBodyNarrow = ({ children }) => /* @__PURE__ */ React__default.createElement("div", { className: "py-10 px-6 xl:px-12" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full mx-auto max-w-screen-xl" }, children));
|
|
31391
|
-
const DashboardPage = () => {
|
|
31392
|
-
return /* @__PURE__ */ React__default.createElement(GetCMS, null, (cms) => {
|
|
31393
|
-
var _a, _b;
|
|
31394
|
-
return /* @__PURE__ */ React__default.createElement(PageWrapper, null, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(PageHeader, { isLocalMode: (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode }, /* @__PURE__ */ React__default.createElement("h3", { className: "text-2xl font-sans text-gray-700" }, "Welcome to Tina!")), /* @__PURE__ */ React__default.createElement(PageBodyNarrow, null, "This is your dashboard for editing or creating content. Select a collection on the left to begin.")));
|
|
31395
|
-
});
|
|
31396
|
-
};
|
|
31397
|
-
function RiHome2Line(props) {
|
|
31398
|
-
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "d": "M19 21H5C4.44772 21 4 20.5523 4 20V11L1 11L11.3273 1.6115C11.7087 1.26475 12.2913 1.26475 12.6727 1.6115L23 11L20 11V20C20 20.5523 19.5523 21 19 21ZM6 19H18V9.15745L12 3.7029L6 9.15745V19Z" }, "child": [] }] })(props);
|
|
31399
|
-
}
|
|
31400
32547
|
const LoadingPage = () => /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(
|
|
31401
32548
|
"div",
|
|
31402
32549
|
{
|
|
@@ -31506,203 +32653,33 @@ const LoadingPage = () => /* @__PURE__ */ React__default.createElement(React__de
|
|
|
31506
32653
|
)
|
|
31507
32654
|
)
|
|
31508
32655
|
));
|
|
31509
|
-
|
|
31510
|
-
|
|
31511
|
-
|
|
31512
|
-
}) => {
|
|
31513
|
-
|
|
31514
|
-
|
|
31515
|
-
const
|
|
31516
|
-
const
|
|
31517
|
-
|
|
31518
|
-
|
|
31519
|
-
|
|
31520
|
-
|
|
31521
|
-
|
|
31522
|
-
|
|
31523
|
-
useEffect(() => {
|
|
31524
|
-
let cancelled = false;
|
|
31525
|
-
const fetchCollection = async () => {
|
|
31526
|
-
var _a;
|
|
31527
|
-
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
31528
|
-
const { name, order } = JSON.parse(sortKey || "{}");
|
|
31529
|
-
const validSortKey = ((_a = collectionExtra.fields) == null ? void 0 : _a.map((x) => x.name).includes(name)) ? name : void 0;
|
|
31530
|
-
try {
|
|
31531
|
-
const collection2 = await api.fetchCollection(
|
|
31532
|
-
collectionName,
|
|
31533
|
-
includeDocuments,
|
|
31534
|
-
(filterArgs == null ? void 0 : filterArgs.filterField) ? "" : folder.fullyQualifiedName,
|
|
31535
|
-
after,
|
|
31536
|
-
validSortKey,
|
|
31537
|
-
order,
|
|
31538
|
-
filterArgs
|
|
31539
|
-
);
|
|
31540
|
-
setCollection(collection2);
|
|
31541
|
-
} catch (error2) {
|
|
31542
|
-
cms.alerts.error(
|
|
31543
|
-
`[${error2.name}] GetCollection failed: ${error2.message}`
|
|
31544
|
-
);
|
|
31545
|
-
console.error(error2);
|
|
31546
|
-
setCollection(void 0);
|
|
31547
|
-
setError(error2);
|
|
31548
|
-
}
|
|
31549
|
-
setLoading(false);
|
|
31550
|
-
}
|
|
31551
|
-
};
|
|
31552
|
-
if (cancelled)
|
|
31553
|
-
return;
|
|
31554
|
-
setLoading(true);
|
|
31555
|
-
fetchCollection();
|
|
31556
|
-
return () => {
|
|
31557
|
-
cancelled = true;
|
|
31558
|
-
};
|
|
31559
|
-
}, [
|
|
31560
|
-
cms,
|
|
31561
|
-
collectionName,
|
|
31562
|
-
folder.loading,
|
|
31563
|
-
folder.fullyQualifiedName,
|
|
31564
|
-
resetState,
|
|
31565
|
-
after,
|
|
31566
|
-
sortKey
|
|
31567
|
-
]);
|
|
31568
|
-
const reFetchCollection = () => setResetSate((x) => x + 1);
|
|
31569
|
-
return { collection, loading, error, reFetchCollection, collectionExtra };
|
|
31570
|
-
};
|
|
31571
|
-
const useSearchCollection = (cms, collectionName, includeDocuments = true, folder, after = "", search) => {
|
|
31572
|
-
const api = new TinaAdminApi(cms);
|
|
31573
|
-
const schema = cms.api.tina.schema;
|
|
31574
|
-
const collectionExtra = schema.getCollection(collectionName);
|
|
31575
|
-
const [collection, setCollection] = useState(void 0);
|
|
31576
|
-
const [loading, setLoading] = useState(true);
|
|
31577
|
-
const [error, setError] = useState(void 0);
|
|
31578
|
-
const [resetState, setResetSate] = useState(0);
|
|
31579
|
-
useEffect(() => {
|
|
31580
|
-
let cancelled = false;
|
|
31581
|
-
const searchCollection = async () => {
|
|
31582
|
-
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
31583
|
-
try {
|
|
31584
|
-
const response = await cms.api.search.query(
|
|
31585
|
-
`${search} AND _collection:${collectionName}`,
|
|
31586
|
-
{
|
|
31587
|
-
limit: 15,
|
|
31588
|
-
cursor: after
|
|
31589
|
-
}
|
|
31590
|
-
);
|
|
31591
|
-
const docs = await Promise.allSettled(
|
|
31592
|
-
response.results.map((result) => {
|
|
31593
|
-
const [collection2, relativePath2] = result._id.split(":");
|
|
31594
|
-
return api.fetchDocument(collection2, relativePath2, false);
|
|
31595
|
-
})
|
|
31596
|
-
);
|
|
31597
|
-
const edges = docs.filter((p) => {
|
|
31598
|
-
var _a;
|
|
31599
|
-
return p.status === "fulfilled" && !!((_a = p.value) == null ? void 0 : _a.document);
|
|
31600
|
-
}).map((result) => ({ node: result.value.document }));
|
|
31601
|
-
const c = await api.fetchCollection(collectionName, false, "");
|
|
31602
|
-
setCollection({
|
|
31603
|
-
format: collection.format,
|
|
31604
|
-
label: collection.label,
|
|
31605
|
-
name: collectionName,
|
|
31606
|
-
templates: collection.templates,
|
|
31607
|
-
documents: {
|
|
31608
|
-
pageInfo: {
|
|
31609
|
-
hasNextPage: !!response.nextCursor,
|
|
31610
|
-
hasPreviousPage: !!response.prevCursor,
|
|
31611
|
-
startCursor: "",
|
|
31612
|
-
endCursor: response.nextCursor || ""
|
|
31613
|
-
},
|
|
31614
|
-
edges
|
|
31615
|
-
}
|
|
31616
|
-
});
|
|
31617
|
-
} catch (error2) {
|
|
31618
|
-
cms.alerts.error(
|
|
31619
|
-
`[${error2.name}] GetCollection failed: ${error2.message}`
|
|
31620
|
-
);
|
|
31621
|
-
console.error(error2);
|
|
31622
|
-
setCollection(void 0);
|
|
31623
|
-
setError(error2);
|
|
31624
|
-
}
|
|
31625
|
-
setLoading(false);
|
|
32656
|
+
function RiHome2Line(props) {
|
|
32657
|
+
return GenIcon({ "tag": "svg", "attr": { "viewBox": "0 0 24 24", "fill": "currentColor" }, "child": [{ "tag": "path", "attr": { "d": "M19 21H5C4.44772 21 4 20.5523 4 20V11L1 11L11.3273 1.6115C11.7087 1.26475 12.2913 1.26475 12.6727 1.6115L23 11L20 11V20C20 20.5523 19.5523 21 19 21ZM6 19H18V9.15745L12 3.7029L6 9.15745V19Z" }, "child": [] }] })(props);
|
|
32658
|
+
}
|
|
32659
|
+
const PageWrapper = ({ children }) => {
|
|
32660
|
+
var _a, _b;
|
|
32661
|
+
const cms = useCMS$1();
|
|
32662
|
+
const isLocalMode = (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode;
|
|
32663
|
+
const [branchingEnabled, setBranchingEnabled] = React__default.useState(
|
|
32664
|
+
() => cms.flags.get("branch-switcher")
|
|
32665
|
+
);
|
|
32666
|
+
React__default.useEffect(() => {
|
|
32667
|
+
cms.events.subscribe("flag:set", ({ key, value }) => {
|
|
32668
|
+
if (key === "branch-switcher") {
|
|
32669
|
+
setBranchingEnabled(value);
|
|
31626
32670
|
}
|
|
31627
|
-
};
|
|
31628
|
-
|
|
31629
|
-
|
|
31630
|
-
setLoading(true);
|
|
31631
|
-
searchCollection();
|
|
31632
|
-
return () => {
|
|
31633
|
-
cancelled = true;
|
|
31634
|
-
};
|
|
31635
|
-
}, [
|
|
31636
|
-
cms,
|
|
31637
|
-
collectionName,
|
|
31638
|
-
folder.loading,
|
|
31639
|
-
folder.fullyQualifiedName,
|
|
31640
|
-
resetState,
|
|
31641
|
-
after,
|
|
31642
|
-
search
|
|
31643
|
-
]);
|
|
31644
|
-
const reFetchCollection = () => setResetSate((x) => x + 1);
|
|
31645
|
-
return { collection, loading, error, reFetchCollection, collectionExtra };
|
|
32671
|
+
});
|
|
32672
|
+
}, [cms.events]);
|
|
32673
|
+
return /* @__PURE__ */ React__default.createElement("div", { className: "relative left-0 w-full h-full bg-gradient-to-b from-gray-50/50 to-gray-50 shadow-2xl overflow-y-auto transition-opacity duration-300 ease-out flex flex-col opacity-100" }, branchingEnabled && !isLocalMode && /* @__PURE__ */ React__default.createElement(BranchBanner, null), children);
|
|
31646
32674
|
};
|
|
31647
|
-
const
|
|
31648
|
-
|
|
31649
|
-
|
|
31650
|
-
folder,
|
|
31651
|
-
includeDocuments = true,
|
|
31652
|
-
startCursor,
|
|
31653
|
-
sortKey,
|
|
31654
|
-
children,
|
|
31655
|
-
filterArgs,
|
|
31656
|
-
search
|
|
32675
|
+
const PageHeader = ({
|
|
32676
|
+
isLocalMode,
|
|
32677
|
+
children
|
|
31657
32678
|
}) => {
|
|
31658
|
-
|
|
31659
|
-
const { collection, loading, error, reFetchCollection, collectionExtra } = search ? useSearchCollection(
|
|
31660
|
-
cms,
|
|
31661
|
-
collectionName,
|
|
31662
|
-
includeDocuments,
|
|
31663
|
-
folder,
|
|
31664
|
-
startCursor || "",
|
|
31665
|
-
search
|
|
31666
|
-
) : useGetCollection(
|
|
31667
|
-
cms,
|
|
31668
|
-
collectionName,
|
|
31669
|
-
includeDocuments,
|
|
31670
|
-
folder,
|
|
31671
|
-
startCursor || "",
|
|
31672
|
-
sortKey,
|
|
31673
|
-
filterArgs
|
|
31674
|
-
) || {};
|
|
31675
|
-
useEffect(() => {
|
|
31676
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
31677
|
-
if (loading)
|
|
31678
|
-
return;
|
|
31679
|
-
const collectionDefinition = cms.api.tina.schema.getCollection(
|
|
31680
|
-
collection.name
|
|
31681
|
-
);
|
|
31682
|
-
const allowCreate = ((_b = (_a = collectionDefinition == null ? void 0 : collectionDefinition.ui) == null ? void 0 : _a.allowedActions) == null ? void 0 : _b.create) ?? true;
|
|
31683
|
-
const allowDelete = ((_d = (_c = collectionDefinition == null ? void 0 : collectionDefinition.ui) == null ? void 0 : _c.allowedActions) == null ? void 0 : _d.delete) ?? true;
|
|
31684
|
-
const collectionResponse = collection;
|
|
31685
|
-
if (!allowCreate && !allowDelete && // Check there is only one document
|
|
31686
|
-
((_f = (_e = collectionResponse.documents) == null ? void 0 : _e.edges) == null ? void 0 : _f.length) === 1 && // Check to make sure the file is not a folder
|
|
31687
|
-
((_i = (_h = (_g = collectionResponse.documents) == null ? void 0 : _g.edges[0]) == null ? void 0 : _h.node) == null ? void 0 : _i.__typename) !== "Folder") {
|
|
31688
|
-
const doc = collectionResponse.documents.edges[0].node;
|
|
31689
|
-
handleNavigate(
|
|
31690
|
-
navigate,
|
|
31691
|
-
cms,
|
|
31692
|
-
collectionResponse,
|
|
31693
|
-
collectionDefinition,
|
|
31694
|
-
doc
|
|
31695
|
-
);
|
|
31696
|
-
}
|
|
31697
|
-
}, [(collection == null ? void 0 : collection.name) || "", loading]);
|
|
31698
|
-
if (error) {
|
|
31699
|
-
return /* @__PURE__ */ React__default.createElement(FullscreenError, null);
|
|
31700
|
-
}
|
|
31701
|
-
if (loading) {
|
|
31702
|
-
return /* @__PURE__ */ React__default.createElement(LoadingPage, null);
|
|
31703
|
-
}
|
|
31704
|
-
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children(collection, loading, reFetchCollection, collectionExtra));
|
|
32679
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, isLocalMode && /* @__PURE__ */ React__default.createElement(LocalWarning, null), !isLocalMode && /* @__PURE__ */ React__default.createElement(BillingWarning, null), /* @__PURE__ */ React__default.createElement("div", { className: "pt-16 xl:pt-12 px-6 xl:px-12" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full mx-auto max-w-screen-xl" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full flex justify-between items-end" }, children))));
|
|
31705
32680
|
};
|
|
32681
|
+
const PageBody = ({ children }) => /* @__PURE__ */ React__default.createElement("div", { className: "py-8 px-6 xl:px-12" }, children);
|
|
32682
|
+
const PageBodyNarrow = ({ children }) => /* @__PURE__ */ React__default.createElement("div", { className: "py-10 px-6 xl:px-12" }, /* @__PURE__ */ React__default.createElement("div", { className: "w-full mx-auto max-w-screen-xl" }, children));
|
|
31706
32683
|
const folderRegex = /^.*\/~\/*(.*)$/;
|
|
31707
32684
|
const parentFolder = (folder) => {
|
|
31708
32685
|
return {
|
|
@@ -31822,6 +32799,7 @@ const CollectionListPage = () => {
|
|
|
31822
32799
|
const [vars, setVars] = React__default.useState({
|
|
31823
32800
|
collection: collectionName,
|
|
31824
32801
|
relativePath: "",
|
|
32802
|
+
relativePathWithoutExtension: "",
|
|
31825
32803
|
newRelativePath: "",
|
|
31826
32804
|
filterField: "",
|
|
31827
32805
|
folderName: "",
|
|
@@ -31863,6 +32841,7 @@ const CollectionListPage = () => {
|
|
|
31863
32841
|
...old,
|
|
31864
32842
|
collection: collectionName,
|
|
31865
32843
|
relativePath: "",
|
|
32844
|
+
relativePathWithoutExtension: "",
|
|
31866
32845
|
newRelativePath: "",
|
|
31867
32846
|
filterField: "",
|
|
31868
32847
|
startsWith: "",
|
|
@@ -31888,6 +32867,7 @@ const CollectionListPage = () => {
|
|
|
31888
32867
|
collectionName === vars.collection ? vars : {
|
|
31889
32868
|
collection: collectionName,
|
|
31890
32869
|
relativePath: "",
|
|
32870
|
+
relativePathWithoutExtension: "",
|
|
31891
32871
|
newRelativePath: "",
|
|
31892
32872
|
filterField: "",
|
|
31893
32873
|
startsWith: "",
|
|
@@ -31975,7 +32955,9 @@ const CollectionListPage = () => {
|
|
|
31975
32955
|
safeSubmit: async () => {
|
|
31976
32956
|
try {
|
|
31977
32957
|
await admin.deleteDocument(vars);
|
|
31978
|
-
cms.alerts.info(
|
|
32958
|
+
cms.alerts.info(
|
|
32959
|
+
"Document was successfully deleted"
|
|
32960
|
+
);
|
|
31979
32961
|
reFetchCollection();
|
|
31980
32962
|
} catch (error) {
|
|
31981
32963
|
cms.alerts.warn(
|
|
@@ -31989,7 +32971,7 @@ const CollectionListPage = () => {
|
|
|
31989
32971
|
), renameModalOpen && /* @__PURE__ */ React__default.createElement(
|
|
31990
32972
|
RenameModal,
|
|
31991
32973
|
{
|
|
31992
|
-
filename: vars.
|
|
32974
|
+
filename: vars.relativePathWithoutExtension,
|
|
31993
32975
|
newRelativePath: vars.newRelativePath,
|
|
31994
32976
|
setNewRelativePath: (newRelativePath) => {
|
|
31995
32977
|
setVars((vars2) => {
|
|
@@ -32004,7 +32986,9 @@ const CollectionListPage = () => {
|
|
|
32004
32986
|
relativePath: vars.relativePath,
|
|
32005
32987
|
newRelativePath
|
|
32006
32988
|
});
|
|
32007
|
-
cms.alerts.info(
|
|
32989
|
+
cms.alerts.info(
|
|
32990
|
+
"Document was successfully renamed"
|
|
32991
|
+
);
|
|
32008
32992
|
reFetchCollection();
|
|
32009
32993
|
} catch (error) {
|
|
32010
32994
|
if (error.message.indexOf("has references")) {
|
|
@@ -32104,7 +33088,9 @@ const CollectionListPage = () => {
|
|
|
32104
33088
|
name: "sort",
|
|
32105
33089
|
value: sortKey,
|
|
32106
33090
|
onChange: (e) => {
|
|
32107
|
-
const val = JSON.parse(
|
|
33091
|
+
const val = JSON.parse(
|
|
33092
|
+
e.target.value
|
|
33093
|
+
);
|
|
32108
33094
|
setEndCursor("");
|
|
32109
33095
|
setPrevCursors([]);
|
|
32110
33096
|
window == null ? void 0 : window.localStorage.setItem(
|
|
@@ -32310,6 +33296,9 @@ const CollectionListPage = () => {
|
|
|
32310
33296
|
setVars((old) => ({
|
|
32311
33297
|
...old,
|
|
32312
33298
|
collection: collectionName,
|
|
33299
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33300
|
+
"/"
|
|
33301
|
+
),
|
|
32313
33302
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32314
33303
|
"/"
|
|
32315
33304
|
) + document2.node._sys.extension,
|
|
@@ -32332,6 +33321,9 @@ const CollectionListPage = () => {
|
|
|
32332
33321
|
setVars((old) => ({
|
|
32333
33322
|
...old,
|
|
32334
33323
|
collection: collectionName,
|
|
33324
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33325
|
+
"/"
|
|
33326
|
+
),
|
|
32335
33327
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32336
33328
|
"/"
|
|
32337
33329
|
) + document2.node._sys.extension,
|
|
@@ -32544,7 +33536,7 @@ const RenameModal = ({
|
|
|
32544
33536
|
newRelativePath,
|
|
32545
33537
|
setNewRelativePath
|
|
32546
33538
|
}) => {
|
|
32547
|
-
return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "?
|
|
33539
|
+
return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "?"), /* @__PURE__ */ React__default.createElement(
|
|
32548
33540
|
BaseTextField,
|
|
32549
33541
|
{
|
|
32550
33542
|
placeholder: "Enter a new name for the document's file",
|
|
@@ -32559,11 +33551,237 @@ const RenameModal = ({
|
|
|
32559
33551
|
onClick: async () => {
|
|
32560
33552
|
await renameFunc();
|
|
32561
33553
|
close2();
|
|
32562
|
-
}
|
|
33554
|
+
},
|
|
33555
|
+
disabled: !newRelativePath || newRelativePath === filename
|
|
32563
33556
|
},
|
|
32564
33557
|
"Rename"
|
|
32565
33558
|
))));
|
|
32566
33559
|
};
|
|
33560
|
+
const FullscreenError = ({
|
|
33561
|
+
title = "Error",
|
|
33562
|
+
errorMessage = "It looks like something went wrong."
|
|
33563
|
+
}) => {
|
|
33564
|
+
return /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col justify-center items-center h-screen bg-gray-100" }, /* @__PURE__ */ React__default.createElement("div", { className: "text-red-500 text-4xl mb-6 flex items-center" }, /* @__PURE__ */ React__default.createElement(BiError, { className: "w-12 h-auto fill-current text-red-400 opacity-70 mr-1" }), " ", title), /* @__PURE__ */ React__default.createElement("p", { className: "text-gray-700 text-xl mb-8" }, errorMessage), /* @__PURE__ */ React__default.createElement(Button$1, { variant: "danger", onClick: () => window.location.reload() }, /* @__PURE__ */ React__default.createElement(BiSync, { className: "w-7 h-auto fill-current opacity-70 mr-1" }), " Reload"));
|
|
33565
|
+
};
|
|
33566
|
+
const isValidSortKey = (sortKey, collection) => {
|
|
33567
|
+
if (collection.fields) {
|
|
33568
|
+
const sortKeys = collection.fields.map((x) => x.name);
|
|
33569
|
+
return sortKeys.includes(sortKey);
|
|
33570
|
+
} else if (collection.templates) {
|
|
33571
|
+
const collectionMap = {};
|
|
33572
|
+
const conflictedFields = /* @__PURE__ */ new Set();
|
|
33573
|
+
for (const template of collection.templates) {
|
|
33574
|
+
for (const field of template.fields) {
|
|
33575
|
+
if (collectionMap[field.name]) {
|
|
33576
|
+
if (collectionMap[field.name].type !== field.type) {
|
|
33577
|
+
conflictedFields.add(field.name);
|
|
33578
|
+
}
|
|
33579
|
+
} else {
|
|
33580
|
+
collectionMap[field.name] = field;
|
|
33581
|
+
}
|
|
33582
|
+
}
|
|
33583
|
+
}
|
|
33584
|
+
for (const key in conflictedFields) {
|
|
33585
|
+
delete collectionMap[key];
|
|
33586
|
+
}
|
|
33587
|
+
for (const key in collectionMap) {
|
|
33588
|
+
if (key === sortKey) {
|
|
33589
|
+
return true;
|
|
33590
|
+
}
|
|
33591
|
+
}
|
|
33592
|
+
return false;
|
|
33593
|
+
}
|
|
33594
|
+
};
|
|
33595
|
+
const useGetCollection = (cms, collectionName, includeDocuments = true, folder, after = "", sortKey, filterArgs) => {
|
|
33596
|
+
const api = new TinaAdminApi(cms);
|
|
33597
|
+
const schema = cms.api.tina.schema;
|
|
33598
|
+
const collectionExtra = schema.getCollection(collectionName);
|
|
33599
|
+
const [collection, setCollection] = useState(void 0);
|
|
33600
|
+
const [loading, setLoading] = useState(true);
|
|
33601
|
+
const [error, setError] = useState(void 0);
|
|
33602
|
+
const [resetState, setResetSate] = useState(0);
|
|
33603
|
+
useEffect(() => {
|
|
33604
|
+
let cancelled = false;
|
|
33605
|
+
const fetchCollection = async () => {
|
|
33606
|
+
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
33607
|
+
const { name, order } = JSON.parse(sortKey || "{}");
|
|
33608
|
+
const validSortKey = isValidSortKey(name, collectionExtra) ? name : void 0;
|
|
33609
|
+
try {
|
|
33610
|
+
const collection2 = await api.fetchCollection(
|
|
33611
|
+
collectionName,
|
|
33612
|
+
includeDocuments,
|
|
33613
|
+
(filterArgs == null ? void 0 : filterArgs.filterField) ? "" : folder.fullyQualifiedName,
|
|
33614
|
+
after,
|
|
33615
|
+
validSortKey,
|
|
33616
|
+
order,
|
|
33617
|
+
filterArgs
|
|
33618
|
+
);
|
|
33619
|
+
setCollection(collection2);
|
|
33620
|
+
} catch (error2) {
|
|
33621
|
+
cms.alerts.error(
|
|
33622
|
+
`[${error2.name}] GetCollection failed: ${error2.message}`
|
|
33623
|
+
);
|
|
33624
|
+
console.error(error2);
|
|
33625
|
+
setCollection(void 0);
|
|
33626
|
+
setError(error2);
|
|
33627
|
+
}
|
|
33628
|
+
setLoading(false);
|
|
33629
|
+
}
|
|
33630
|
+
};
|
|
33631
|
+
if (cancelled)
|
|
33632
|
+
return;
|
|
33633
|
+
setLoading(true);
|
|
33634
|
+
fetchCollection();
|
|
33635
|
+
return () => {
|
|
33636
|
+
cancelled = true;
|
|
33637
|
+
};
|
|
33638
|
+
}, [
|
|
33639
|
+
cms,
|
|
33640
|
+
collectionName,
|
|
33641
|
+
folder.loading,
|
|
33642
|
+
folder.fullyQualifiedName,
|
|
33643
|
+
resetState,
|
|
33644
|
+
after,
|
|
33645
|
+
sortKey
|
|
33646
|
+
]);
|
|
33647
|
+
const reFetchCollection = () => setResetSate((x) => x + 1);
|
|
33648
|
+
return { collection, loading, error, reFetchCollection, collectionExtra };
|
|
33649
|
+
};
|
|
33650
|
+
const useSearchCollection = (cms, collectionName, includeDocuments = true, folder, after = "", search) => {
|
|
33651
|
+
const api = new TinaAdminApi(cms);
|
|
33652
|
+
const schema = cms.api.tina.schema;
|
|
33653
|
+
const collectionExtra = schema.getCollection(collectionName);
|
|
33654
|
+
const [collection, setCollection] = useState(void 0);
|
|
33655
|
+
const [loading, setLoading] = useState(true);
|
|
33656
|
+
const [error, setError] = useState(void 0);
|
|
33657
|
+
const [resetState, setResetSate] = useState(0);
|
|
33658
|
+
useEffect(() => {
|
|
33659
|
+
let cancelled = false;
|
|
33660
|
+
const searchCollection = async () => {
|
|
33661
|
+
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
33662
|
+
try {
|
|
33663
|
+
const response = await cms.api.search.query(
|
|
33664
|
+
`${search} AND _collection:${collectionName}`,
|
|
33665
|
+
{
|
|
33666
|
+
limit: 15,
|
|
33667
|
+
cursor: after
|
|
33668
|
+
}
|
|
33669
|
+
);
|
|
33670
|
+
const docs = await Promise.allSettled(
|
|
33671
|
+
response.results.map((result) => {
|
|
33672
|
+
const [collection2, relativePath2] = result._id.split(":");
|
|
33673
|
+
return api.fetchDocument(collection2, relativePath2, false);
|
|
33674
|
+
})
|
|
33675
|
+
);
|
|
33676
|
+
const edges = docs.filter((p) => {
|
|
33677
|
+
var _a;
|
|
33678
|
+
return p.status === "fulfilled" && !!((_a = p.value) == null ? void 0 : _a.document);
|
|
33679
|
+
}).map((result) => ({ node: result.value.document }));
|
|
33680
|
+
const c = await api.fetchCollection(collectionName, false, "");
|
|
33681
|
+
setCollection({
|
|
33682
|
+
format: collection.format,
|
|
33683
|
+
label: collection.label,
|
|
33684
|
+
name: collectionName,
|
|
33685
|
+
templates: collection.templates,
|
|
33686
|
+
documents: {
|
|
33687
|
+
pageInfo: {
|
|
33688
|
+
hasNextPage: !!response.nextCursor,
|
|
33689
|
+
hasPreviousPage: !!response.prevCursor,
|
|
33690
|
+
startCursor: "",
|
|
33691
|
+
endCursor: response.nextCursor || ""
|
|
33692
|
+
},
|
|
33693
|
+
edges
|
|
33694
|
+
}
|
|
33695
|
+
});
|
|
33696
|
+
} catch (error2) {
|
|
33697
|
+
cms.alerts.error(
|
|
33698
|
+
`[${error2.name}] GetCollection failed: ${error2.message}`
|
|
33699
|
+
);
|
|
33700
|
+
console.error(error2);
|
|
33701
|
+
setCollection(void 0);
|
|
33702
|
+
setError(error2);
|
|
33703
|
+
}
|
|
33704
|
+
setLoading(false);
|
|
33705
|
+
}
|
|
33706
|
+
};
|
|
33707
|
+
if (cancelled)
|
|
33708
|
+
return;
|
|
33709
|
+
setLoading(true);
|
|
33710
|
+
searchCollection();
|
|
33711
|
+
return () => {
|
|
33712
|
+
cancelled = true;
|
|
33713
|
+
};
|
|
33714
|
+
}, [
|
|
33715
|
+
cms,
|
|
33716
|
+
collectionName,
|
|
33717
|
+
folder.loading,
|
|
33718
|
+
folder.fullyQualifiedName,
|
|
33719
|
+
resetState,
|
|
33720
|
+
after,
|
|
33721
|
+
search
|
|
33722
|
+
]);
|
|
33723
|
+
const reFetchCollection = () => setResetSate((x) => x + 1);
|
|
33724
|
+
return { collection, loading, error, reFetchCollection, collectionExtra };
|
|
33725
|
+
};
|
|
33726
|
+
const GetCollection = ({
|
|
33727
|
+
cms,
|
|
33728
|
+
collectionName,
|
|
33729
|
+
folder,
|
|
33730
|
+
includeDocuments = true,
|
|
33731
|
+
startCursor,
|
|
33732
|
+
sortKey,
|
|
33733
|
+
children,
|
|
33734
|
+
filterArgs,
|
|
33735
|
+
search
|
|
33736
|
+
}) => {
|
|
33737
|
+
const navigate = useNavigate();
|
|
33738
|
+
const { collection, loading, error, reFetchCollection, collectionExtra } = search ? useSearchCollection(
|
|
33739
|
+
cms,
|
|
33740
|
+
collectionName,
|
|
33741
|
+
includeDocuments,
|
|
33742
|
+
folder,
|
|
33743
|
+
startCursor || "",
|
|
33744
|
+
search
|
|
33745
|
+
) : useGetCollection(
|
|
33746
|
+
cms,
|
|
33747
|
+
collectionName,
|
|
33748
|
+
includeDocuments,
|
|
33749
|
+
folder,
|
|
33750
|
+
startCursor || "",
|
|
33751
|
+
sortKey,
|
|
33752
|
+
filterArgs
|
|
33753
|
+
) || {};
|
|
33754
|
+
useEffect(() => {
|
|
33755
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
33756
|
+
if (loading)
|
|
33757
|
+
return;
|
|
33758
|
+
const collectionDefinition = cms.api.tina.schema.getCollection(
|
|
33759
|
+
collection.name
|
|
33760
|
+
);
|
|
33761
|
+
const allowCreate = ((_b = (_a = collectionDefinition == null ? void 0 : collectionDefinition.ui) == null ? void 0 : _a.allowedActions) == null ? void 0 : _b.create) ?? true;
|
|
33762
|
+
const allowDelete = ((_d = (_c = collectionDefinition == null ? void 0 : collectionDefinition.ui) == null ? void 0 : _c.allowedActions) == null ? void 0 : _d.delete) ?? true;
|
|
33763
|
+
const collectionResponse = collection;
|
|
33764
|
+
if (!allowCreate && !allowDelete && // Check there is only one document
|
|
33765
|
+
((_f = (_e = collectionResponse.documents) == null ? void 0 : _e.edges) == null ? void 0 : _f.length) === 1 && // Check to make sure the file is not a folder
|
|
33766
|
+
((_i = (_h = (_g = collectionResponse.documents) == null ? void 0 : _g.edges[0]) == null ? void 0 : _h.node) == null ? void 0 : _i.__typename) !== "Folder") {
|
|
33767
|
+
const doc = collectionResponse.documents.edges[0].node;
|
|
33768
|
+
handleNavigate(
|
|
33769
|
+
navigate,
|
|
33770
|
+
cms,
|
|
33771
|
+
collectionResponse,
|
|
33772
|
+
collectionDefinition,
|
|
33773
|
+
doc
|
|
33774
|
+
);
|
|
33775
|
+
}
|
|
33776
|
+
}, [(collection == null ? void 0 : collection.name) || "", loading]);
|
|
33777
|
+
if (error) {
|
|
33778
|
+
return /* @__PURE__ */ React__default.createElement(FullscreenError, null);
|
|
33779
|
+
}
|
|
33780
|
+
if (loading) {
|
|
33781
|
+
return /* @__PURE__ */ React__default.createElement(LoadingPage, null);
|
|
33782
|
+
}
|
|
33783
|
+
return /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, children(collection, loading, reFetchCollection, collectionExtra));
|
|
33784
|
+
};
|
|
32567
33785
|
const ErrorDialog = (props) => {
|
|
32568
33786
|
return /* @__PURE__ */ React__default.createElement(
|
|
32569
33787
|
"div",
|
|
@@ -32886,7 +34104,10 @@ const useGetDocument = (cms, collectionName, relativePath2) => {
|
|
|
32886
34104
|
const fetchDocument = async () => {
|
|
32887
34105
|
if (api.isAuthenticated()) {
|
|
32888
34106
|
try {
|
|
32889
|
-
const response = await api.fetchDocument(
|
|
34107
|
+
const response = await api.fetchDocument(
|
|
34108
|
+
collectionName,
|
|
34109
|
+
relativePath2
|
|
34110
|
+
);
|
|
32890
34111
|
setDocument(response.document);
|
|
32891
34112
|
} catch (error2) {
|
|
32892
34113
|
cms.alerts.error(
|
|
@@ -33104,6 +34325,12 @@ const RenderForm = ({
|
|
|
33104
34325
|
), /* @__PURE__ */ React__default.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React__default.createElement("span", { className: "flex-1 w-full text-sm leading-tight whitespace-nowrap truncate" }, `${filename}.${collection.format}`), /* @__PURE__ */ React__default.createElement(FormStatus, { pristine: formIsPristine }))
|
|
33105
34326
|
), activeForm && /* @__PURE__ */ React__default.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine }));
|
|
33106
34327
|
};
|
|
34328
|
+
const DashboardPage = () => {
|
|
34329
|
+
return /* @__PURE__ */ React__default.createElement(GetCMS, null, (cms) => {
|
|
34330
|
+
var _a, _b;
|
|
34331
|
+
return /* @__PURE__ */ React__default.createElement(PageWrapper, null, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement(PageHeader, { isLocalMode: (_b = (_a = cms.api) == null ? void 0 : _a.tina) == null ? void 0 : _b.isLocalMode }, /* @__PURE__ */ React__default.createElement("h3", { className: "text-2xl font-sans text-gray-700" }, "Welcome to Tina!")), /* @__PURE__ */ React__default.createElement(PageBodyNarrow, null, "This is your dashboard for editing or creating content. Select a collection on the left to begin.")));
|
|
34332
|
+
});
|
|
34333
|
+
};
|
|
33107
34334
|
const ScreenPage = () => {
|
|
33108
34335
|
const { screenName } = useParams();
|
|
33109
34336
|
return /* @__PURE__ */ React__default.createElement(GetCMS, null, (cms) => {
|
|
@@ -33186,7 +34413,7 @@ const IndexingPage = () => {
|
|
|
33186
34413
|
} catch {
|
|
33187
34414
|
cms.alerts.error("Branch indexing failed.");
|
|
33188
34415
|
setErrorMessage(
|
|
33189
|
-
'Branch indexing failed, please check the
|
|
34416
|
+
'Branch indexing failed, please check the TinaCloud dashboard for more information. To try again chick "re-index" on the branch in the dashboard.'
|
|
33190
34417
|
);
|
|
33191
34418
|
setState("error");
|
|
33192
34419
|
}
|
|
@@ -33230,15 +34457,24 @@ const IndexingPage = () => {
|
|
|
33230
34457
|
}
|
|
33231
34458
|
}
|
|
33232
34459
|
if (state === "creatingPR") {
|
|
33233
|
-
|
|
33234
|
-
|
|
33235
|
-
|
|
33236
|
-
|
|
33237
|
-
|
|
33238
|
-
|
|
33239
|
-
|
|
33240
|
-
|
|
33241
|
-
|
|
34460
|
+
try {
|
|
34461
|
+
const foo = await tinaApi.createPullRequest({
|
|
34462
|
+
baseBranch,
|
|
34463
|
+
branch,
|
|
34464
|
+
title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
|
|
34465
|
+
});
|
|
34466
|
+
console.log("PR created", foo);
|
|
34467
|
+
cms.alerts.success("Pull request created.");
|
|
34468
|
+
localStorage.setItem("tina.createBranchState", "done");
|
|
34469
|
+
setState("done");
|
|
34470
|
+
} catch (e) {
|
|
34471
|
+
console.error(e);
|
|
34472
|
+
cms.alerts.error("Failed to create PR");
|
|
34473
|
+
setErrorMessage(
|
|
34474
|
+
"Failed to create PR, please try again. If the problem persists please contact support."
|
|
34475
|
+
);
|
|
34476
|
+
setState("error");
|
|
34477
|
+
}
|
|
33242
34478
|
}
|
|
33243
34479
|
if (state === "done") {
|
|
33244
34480
|
window.location.href = back;
|
|
@@ -33345,7 +34581,7 @@ const CheckSchema = ({
|
|
|
33345
34581
|
);
|
|
33346
34582
|
}
|
|
33347
34583
|
}).catch((e) => {
|
|
33348
|
-
if (e.message.includes("has not been indexed by
|
|
34584
|
+
if (e.message.includes("has not been indexed by TinaCloud")) {
|
|
33349
34585
|
setSchemaMissingError(true);
|
|
33350
34586
|
} else {
|
|
33351
34587
|
cms.alerts.error(`Unexpected error checking schema: ${e}`);
|
|
@@ -33860,5 +35096,6 @@ export {
|
|
|
33860
35096
|
useScreenPlugin,
|
|
33861
35097
|
useTinaAuthRedirect,
|
|
33862
35098
|
wrapFieldWithError,
|
|
35099
|
+
wrapFieldWithNoHeader,
|
|
33863
35100
|
wrapFieldsWithMeta
|
|
33864
35101
|
};
|