tinacms 0.0.0-f03fd62-20241023052950 → 0.0.0-f322e12-20250327003611
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api.d.ts +1 -0
- package/dist/admin/components/GetCollection.d.ts +2 -2
- package/dist/admin/types.d.ts +3 -0
- package/dist/auth/TinaCloudProvider.d.ts +1 -1
- package/dist/cache/node-cache.d.ts +1 -0
- package/dist/client.js +83 -63
- package/dist/client.mjs +49 -35
- package/dist/hooks/create-page-plugin.d.ts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2478 -1200
- package/dist/index.mjs +2496 -1218
- 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/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/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-065e42a2.mjs +0 -52
- package/dist/toolkit/react-sidebar/components/no-forms-placeholder.d.ts +0 -8
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(global, factory) {
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/cn"), require("@udecode/plate"), require("@udecode/plate-common"), require("@udecode/plate-slash-command"), require("slate-react"), require("@udecode/plate-code-block"), require("@monaco-editor/react"), require("@headlessui/react"), require("class-variance-authority"), require("lucide-react"), require("mermaid"), require("@udecode/plate-heading"), require("@ariakit/react"), require("@udecode/plate-combobox"), require("@udecode/plate-table"), require("@udecode/plate-resizable"), require("@radix-ui/react-popover"), require("@radix-ui/react-slot"), require("@radix-ui/react-dropdown-menu"), require("@radix-ui/react-separator"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("react-color"), require("color-string"), require("react-dropzone"), require("clsx"), require("tailwind-merge"), require("cmdk"), require("is-hotkey"), require("slate"), require("lodash.get"), require("moment"), require("date-fns"), require("@udecode/plate-link"), require("@radix-ui/react-toolbar"), require("@radix-ui/react-tooltip"), require("@udecode/plate-paragraph"), require("@udecode/plate-block-quote"), require("@udecode/plate-floating"), require("
|
|
3
|
-
})(this, function(exports2, zod, React, reactDom, cn$1, plate, plateCommon, plateSlashCommand, slateReact, plateCodeBlock, MonacoEditor, react, classVarianceAuthority, lucideReact, mermaid, plateHeading, react$1, plateCombobox, plateTable, plateResizable, PopoverPrimitive, reactSlot, DropdownMenuPrimitive, SeparatorPrimitive, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, pkg$1, pkg, dropzone, clsx, tailwindMerge, cmdk, isHotkey, slate, get, moment, dateFns, plateLink, ToolbarPrimitive, TooltipPrimitive, plateParagraph, plateBlockQuote, plateFloating,
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/cn"), require("@udecode/plate"), require("@udecode/plate-common"), require("@udecode/plate-slash-command"), require("slate-react"), require("@udecode/plate-code-block"), require("@monaco-editor/react"), require("@headlessui/react"), require("class-variance-authority"), require("lucide-react"), require("mermaid"), require("@udecode/plate-heading"), require("@ariakit/react"), require("@udecode/plate-combobox"), require("@udecode/plate-table"), require("@udecode/plate-resizable"), require("@radix-ui/react-popover"), require("@radix-ui/react-slot"), require("@radix-ui/react-dropdown-menu"), require("@radix-ui/react-separator"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("react-color"), require("color-string"), require("react-dropzone"), require("clsx"), require("tailwind-merge"), require("cmdk"), require("is-hotkey"), require("slate"), require("@react-hook/window-size"), require("lodash.get"), require("moment"), require("date-fns"), require("@udecode/plate-link"), require("@radix-ui/react-toolbar"), require("@radix-ui/react-tooltip"), require("@udecode/plate-paragraph"), require("@udecode/plate-block-quote"), require("@udecode/plate-floating"), require("graphql"), require("graphql-tag"), require("@tinacms/schema-tools"), require("@graphql-inspector/core"), require("yup"), require("react-router-dom"), require("@tinacms/mdx")) : typeof define === "function" && define.amd ? define(["exports", "zod", "react", "react-dom", "@udecode/cn", "@udecode/plate", "@udecode/plate-common", "@udecode/plate-slash-command", "slate-react", "@udecode/plate-code-block", "@monaco-editor/react", "@headlessui/react", "class-variance-authority", "lucide-react", "mermaid", "@udecode/plate-heading", "@ariakit/react", "@udecode/plate-combobox", "@udecode/plate-table", "@udecode/plate-resizable", "@radix-ui/react-popover", "@radix-ui/react-slot", "@radix-ui/react-dropdown-menu", "@radix-ui/react-separator", "final-form-arrays", "final-form-set-field-data", "final-form", "react-final-form", "prop-types", "react-beautiful-dnd", "react-color", "color-string", "react-dropzone", "clsx", "tailwind-merge", "cmdk", "is-hotkey", "slate", "@react-hook/window-size", "lodash.get", "moment", "date-fns", "@udecode/plate-link", "@radix-ui/react-toolbar", "@radix-ui/react-tooltip", "@udecode/plate-paragraph", "@udecode/plate-block-quote", "@udecode/plate-floating", "graphql", "graphql-tag", "@tinacms/schema-tools", "@graphql-inspector/core", "yup", "react-router-dom", "@tinacms/mdx"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP));
|
|
3
|
+
})(this, function(exports2, zod, React, reactDom, cn$1, plate, plateCommon, plateSlashCommand, slateReact, plateCodeBlock, MonacoEditor, react, classVarianceAuthority, lucideReact, mermaid, plateHeading, react$1, plateCombobox, plateTable, plateResizable, PopoverPrimitive, reactSlot, DropdownMenuPrimitive, SeparatorPrimitive, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, pkg$1, pkg, dropzone, clsx, tailwindMerge, cmdk, isHotkey, slate, windowSize, get, moment, dateFns, plateLink, ToolbarPrimitive, TooltipPrimitive, plateParagraph, plateBlockQuote, plateFloating, graphql, gql, schemaTools, core, yup, reactRouterDom, mdx) {
|
|
4
4
|
"use strict";var __defProp = Object.defineProperty;
|
|
5
5
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
6
|
var __publicField = (obj, key, value) => {
|
|
@@ -774,6 +774,22 @@ var __publicField = (obj, key, value) => {
|
|
|
774
774
|
);
|
|
775
775
|
};
|
|
776
776
|
}
|
|
777
|
+
function wrapFieldWithNoHeader(Field) {
|
|
778
|
+
return (props) => {
|
|
779
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
780
|
+
FieldMeta,
|
|
781
|
+
{
|
|
782
|
+
name: props.input.name,
|
|
783
|
+
label: false,
|
|
784
|
+
description: "",
|
|
785
|
+
error: props.meta.error,
|
|
786
|
+
index: props.index,
|
|
787
|
+
tinaForm: props.tinaForm
|
|
788
|
+
},
|
|
789
|
+
/* @__PURE__ */ React__namespace.createElement(Field, { ...props })
|
|
790
|
+
);
|
|
791
|
+
};
|
|
792
|
+
}
|
|
777
793
|
function wrapFieldWithError(Field) {
|
|
778
794
|
return (props) => {
|
|
779
795
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -846,6 +862,16 @@ var __publicField = (obj, key, value) => {
|
|
|
846
862
|
className,
|
|
847
863
|
...props
|
|
848
864
|
}) => {
|
|
865
|
+
if (typeof children === "string") {
|
|
866
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
867
|
+
"span",
|
|
868
|
+
{
|
|
869
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
|
|
870
|
+
...props,
|
|
871
|
+
dangerouslySetInnerHTML: { __html: children }
|
|
872
|
+
}
|
|
873
|
+
);
|
|
874
|
+
}
|
|
849
875
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
850
876
|
"span",
|
|
851
877
|
{
|
|
@@ -2917,7 +2943,7 @@ flowchart TD
|
|
|
2917
2943
|
),
|
|
2918
2944
|
[plate.MARK_CODE]: CodeLeaf,
|
|
2919
2945
|
[plate.MARK_UNDERLINE]: cn$1.withProps(plateCommon.PlateLeaf, { as: "u" }),
|
|
2920
|
-
[plate.MARK_STRIKETHROUGH]:
|
|
2946
|
+
[plate.MARK_STRIKETHROUGH]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React.createElement("s", { ...props.attributes, ...props }),
|
|
2921
2947
|
[plate.MARK_ITALIC]: cn$1.withProps(plateCommon.PlateLeaf, { as: "em" }),
|
|
2922
2948
|
[plate.MARK_BOLD]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React.createElement("strong", { ...props.attributes, ...props }),
|
|
2923
2949
|
[plate.ELEMENT_HR]: ({
|
|
@@ -3676,7 +3702,7 @@ flowchart TD
|
|
|
3676
3702
|
};
|
|
3677
3703
|
const sizeClasses = {
|
|
3678
3704
|
small: `text-xs h-8 px-3`,
|
|
3679
|
-
medium: `text-sm h-10 px-
|
|
3705
|
+
medium: `text-sm h-10 px-8`,
|
|
3680
3706
|
custom: ``
|
|
3681
3707
|
};
|
|
3682
3708
|
return /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -3804,7 +3830,7 @@ flowchart TD
|
|
|
3804
3830
|
function _objectWithoutProperties(source, excluded) {
|
|
3805
3831
|
if (source == null)
|
|
3806
3832
|
return {};
|
|
3807
|
-
var target = _objectWithoutPropertiesLoose
|
|
3833
|
+
var target = _objectWithoutPropertiesLoose(source, excluded);
|
|
3808
3834
|
var key, i;
|
|
3809
3835
|
if (Object.getOwnPropertySymbols) {
|
|
3810
3836
|
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
|
|
@@ -3819,7 +3845,7 @@ flowchart TD
|
|
|
3819
3845
|
}
|
|
3820
3846
|
return target;
|
|
3821
3847
|
}
|
|
3822
|
-
function _objectWithoutPropertiesLoose
|
|
3848
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
3823
3849
|
if (source == null)
|
|
3824
3850
|
return {};
|
|
3825
3851
|
var target = {};
|
|
@@ -4909,7 +4935,28 @@ flowchart TD
|
|
|
4909
4935
|
onChange,
|
|
4910
4936
|
value,
|
|
4911
4937
|
step
|
|
4912
|
-
}) => /* @__PURE__ */ React__namespace.createElement(
|
|
4938
|
+
}) => /* @__PURE__ */ React__namespace.createElement(
|
|
4939
|
+
Input,
|
|
4940
|
+
{
|
|
4941
|
+
type: "number",
|
|
4942
|
+
step,
|
|
4943
|
+
value,
|
|
4944
|
+
onChange: (event) => {
|
|
4945
|
+
const inputValue = event.target.value;
|
|
4946
|
+
const newValue = inputValue === "" ? void 0 : inputValue;
|
|
4947
|
+
if (onChange) {
|
|
4948
|
+
const syntheticEvent = {
|
|
4949
|
+
...event,
|
|
4950
|
+
target: {
|
|
4951
|
+
...event.target,
|
|
4952
|
+
value: newValue
|
|
4953
|
+
}
|
|
4954
|
+
};
|
|
4955
|
+
onChange(syntheticEvent);
|
|
4956
|
+
}
|
|
4957
|
+
}
|
|
4958
|
+
}
|
|
4959
|
+
);
|
|
4913
4960
|
function useCMS() {
|
|
4914
4961
|
return useCMS$1();
|
|
4915
4962
|
}
|
|
@@ -5150,7 +5197,7 @@ flowchart TD
|
|
|
5150
5197
|
side: "bottom",
|
|
5151
5198
|
className: cn(
|
|
5152
5199
|
"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",
|
|
5153
|
-
"max-h-[30vh] max-w-[
|
|
5200
|
+
"max-h-[30vh] max-w-[30vw] overflow-y-auto",
|
|
5154
5201
|
className
|
|
5155
5202
|
),
|
|
5156
5203
|
...props
|
|
@@ -5242,11 +5289,7 @@ flowchart TD
|
|
|
5242
5289
|
const node = nodes.find((node2) => node2.id === value);
|
|
5243
5290
|
return node ? node._internalSys.filename : null;
|
|
5244
5291
|
};
|
|
5245
|
-
const
|
|
5246
|
-
cms,
|
|
5247
|
-
input,
|
|
5248
|
-
field
|
|
5249
|
-
}) => {
|
|
5292
|
+
const Combobox = ({ cms, input, field }) => {
|
|
5250
5293
|
const [open2, setOpen] = React__namespace.useState(false);
|
|
5251
5294
|
const [value, setValue] = React__namespace.useState(input.value);
|
|
5252
5295
|
const [displayText, setDisplayText] = React__namespace.useState(null);
|
|
@@ -5262,7 +5305,9 @@ flowchart TD
|
|
|
5262
5305
|
}, [value, input, optionSets]);
|
|
5263
5306
|
React__namespace.useEffect(() => {
|
|
5264
5307
|
if (field.experimental___filter && optionSets.length > 0) {
|
|
5265
|
-
setFilteredOptionsList(
|
|
5308
|
+
setFilteredOptionsList(
|
|
5309
|
+
field.experimental___filter(optionSets, void 0)
|
|
5310
|
+
);
|
|
5266
5311
|
} else {
|
|
5267
5312
|
setFilteredOptionsList(optionSets);
|
|
5268
5313
|
}
|
|
@@ -5270,17 +5315,17 @@ flowchart TD
|
|
|
5270
5315
|
if (loading === true) {
|
|
5271
5316
|
return /* @__PURE__ */ React__namespace.createElement(LoadingDots, { color: "var(--tina-color-primary)" });
|
|
5272
5317
|
}
|
|
5273
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
5318
|
+
return /* @__PURE__ */ React__namespace.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React__namespace.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React__namespace.createElement(
|
|
5274
5319
|
Button,
|
|
5275
5320
|
{
|
|
5276
5321
|
variant: "outline",
|
|
5277
5322
|
role: "combobox",
|
|
5278
5323
|
"aria-expanded": open2,
|
|
5279
|
-
className: "w-
|
|
5324
|
+
className: "w-full justify-between"
|
|
5280
5325
|
},
|
|
5281
5326
|
/* @__PURE__ */ React__namespace.createElement("p", { className: "truncate" }, displayText ?? "Choose an option..."),
|
|
5282
5327
|
open2 ? /* @__PURE__ */ React__namespace.createElement(IoMdArrowDropup, { size: 20 }) : /* @__PURE__ */ React__namespace.createElement(IoMdArrowDropdown, { size: 20 })
|
|
5283
|
-
)), /* @__PURE__ */ React__namespace.createElement(PopoverContent, { className: "p-0 relative" }, /* @__PURE__ */ React__namespace.createElement(
|
|
5328
|
+
)), /* @__PURE__ */ React__namespace.createElement(PopoverContent, { className: "p-0 relative min-w-[var(--radix-popover-trigger-width)]" }, /* @__PURE__ */ React__namespace.createElement(
|
|
5284
5329
|
Command,
|
|
5285
5330
|
{
|
|
5286
5331
|
shouldFilter: !field.experimental___filter,
|
|
@@ -5304,32 +5349,25 @@ flowchart TD
|
|
|
5304
5349
|
}
|
|
5305
5350
|
),
|
|
5306
5351
|
/* @__PURE__ */ React__namespace.createElement(CommandEmpty, null, "No reference found"),
|
|
5307
|
-
/* @__PURE__ */ React__namespace.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React__namespace.createElement(
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
field,
|
|
5322
|
-
_values,
|
|
5323
|
-
node,
|
|
5324
|
-
onSelect: (currentValue) => {
|
|
5325
|
-
setValue(currentValue);
|
|
5326
|
-
setOpen(false);
|
|
5327
|
-
}
|
|
5352
|
+
/* @__PURE__ */ React__namespace.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React__namespace.createElement(CommandGroup, { key: `${collection}-group`, heading: collection }, /* @__PURE__ */ React__namespace.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
|
|
5353
|
+
const { id, _values } = node;
|
|
5354
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
5355
|
+
OptionComponent,
|
|
5356
|
+
{
|
|
5357
|
+
id,
|
|
5358
|
+
key: id,
|
|
5359
|
+
value,
|
|
5360
|
+
field,
|
|
5361
|
+
_values,
|
|
5362
|
+
node,
|
|
5363
|
+
onSelect: (currentValue) => {
|
|
5364
|
+
setValue(currentValue);
|
|
5365
|
+
setOpen(false);
|
|
5328
5366
|
}
|
|
5329
|
-
|
|
5330
|
-
|
|
5331
|
-
))))
|
|
5332
|
-
)))
|
|
5367
|
+
}
|
|
5368
|
+
);
|
|
5369
|
+
}))))))
|
|
5370
|
+
)));
|
|
5333
5371
|
};
|
|
5334
5372
|
const useGetNode = (cms, id) => {
|
|
5335
5373
|
const [document2, setDocument] = React__namespace.useState(
|
|
@@ -5402,7 +5440,7 @@ flowchart TD
|
|
|
5402
5440
|
};
|
|
5403
5441
|
const Reference = ({ input, field }) => {
|
|
5404
5442
|
const cms = useCMS();
|
|
5405
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
5443
|
+
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement("div", { className: "relative group" }, /* @__PURE__ */ React__namespace.createElement(Combobox, { cms, input, field })), /* @__PURE__ */ React__namespace.createElement(ReferenceLink, { cms, input }));
|
|
5406
5444
|
};
|
|
5407
5445
|
const ButtonToggle = ({
|
|
5408
5446
|
input,
|
|
@@ -5639,7 +5677,9 @@ flowchart TD
|
|
|
5639
5677
|
onClick: () => {
|
|
5640
5678
|
const state = tinaForm.finalForm.getState();
|
|
5641
5679
|
if (state.invalid === true) {
|
|
5642
|
-
cms.alerts.error(
|
|
5680
|
+
cms.alerts.error(
|
|
5681
|
+
"Cannot navigate away from an invalid form."
|
|
5682
|
+
);
|
|
5643
5683
|
return;
|
|
5644
5684
|
}
|
|
5645
5685
|
cms.dispatch({
|
|
@@ -5710,10 +5750,11 @@ flowchart TD
|
|
|
5710
5750
|
return /* @__PURE__ */ React.createElement(
|
|
5711
5751
|
"button",
|
|
5712
5752
|
{
|
|
5713
|
-
|
|
5753
|
+
type: "button",
|
|
5754
|
+
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"}`,
|
|
5714
5755
|
onClick
|
|
5715
5756
|
},
|
|
5716
|
-
/* @__PURE__ */ React.createElement(TrashIcon, { className: "fill-current transition-colors ease-out
|
|
5757
|
+
/* @__PURE__ */ React.createElement(TrashIcon, { className: "h-5 w-auto fill-current text-red-500 transition-colors duration-150 ease-out" })
|
|
5717
5758
|
);
|
|
5718
5759
|
};
|
|
5719
5760
|
const DragHandle = ({ isDragging }) => {
|
|
@@ -5791,27 +5832,35 @@ flowchart TD
|
|
|
5791
5832
|
))))
|
|
5792
5833
|
))));
|
|
5793
5834
|
};
|
|
5794
|
-
const Group =
|
|
5795
|
-
|
|
5796
|
-
|
|
5797
|
-
|
|
5798
|
-
|
|
5799
|
-
|
|
5800
|
-
|
|
5801
|
-
|
|
5802
|
-
|
|
5803
|
-
|
|
5804
|
-
|
|
5835
|
+
const Group = wrapFieldWithNoHeader(
|
|
5836
|
+
({ tinaForm, field }) => {
|
|
5837
|
+
const cms = useCMS$1();
|
|
5838
|
+
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(
|
|
5839
|
+
Header,
|
|
5840
|
+
{
|
|
5841
|
+
onClick: () => {
|
|
5842
|
+
const state = tinaForm.finalForm.getState();
|
|
5843
|
+
if (state.invalid === true) {
|
|
5844
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
5845
|
+
return;
|
|
5846
|
+
}
|
|
5847
|
+
cms.dispatch({
|
|
5848
|
+
type: "forms:set-active-field-name",
|
|
5849
|
+
value: { formId: tinaForm.id, fieldName: field.name }
|
|
5850
|
+
});
|
|
5805
5851
|
}
|
|
5806
|
-
|
|
5807
|
-
|
|
5808
|
-
|
|
5809
|
-
|
|
5810
|
-
|
|
5811
|
-
|
|
5812
|
-
|
|
5813
|
-
|
|
5814
|
-
|
|
5852
|
+
},
|
|
5853
|
+
field.label || field.name,
|
|
5854
|
+
field.description && /* @__PURE__ */ React__namespace.createElement(
|
|
5855
|
+
"span",
|
|
5856
|
+
{
|
|
5857
|
+
className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
|
|
5858
|
+
dangerouslySetInnerHTML: { __html: field.description }
|
|
5859
|
+
}
|
|
5860
|
+
)
|
|
5861
|
+
));
|
|
5862
|
+
}
|
|
5863
|
+
);
|
|
5815
5864
|
const Header = ({ onClick, children }) => {
|
|
5816
5865
|
return /* @__PURE__ */ React__namespace.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React__namespace.createElement(
|
|
5817
5866
|
"button",
|
|
@@ -6214,7 +6263,9 @@ flowchart TD
|
|
|
6214
6263
|
onClick: () => {
|
|
6215
6264
|
const state = tinaForm.finalForm.getState();
|
|
6216
6265
|
if (state.invalid === true) {
|
|
6217
|
-
cms.alerts.error(
|
|
6266
|
+
cms.alerts.error(
|
|
6267
|
+
"Cannot navigate away from an invalid form."
|
|
6268
|
+
);
|
|
6218
6269
|
return;
|
|
6219
6270
|
}
|
|
6220
6271
|
cms.dispatch({
|
|
@@ -6696,28 +6747,28 @@ flowchart TD
|
|
|
6696
6747
|
}
|
|
6697
6748
|
renderDayHeaders() {
|
|
6698
6749
|
const locale = this.props.viewDate.localeData();
|
|
6699
|
-
|
|
6750
|
+
const dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React.createElement("th", { key: day + index, className: "dow" }, day));
|
|
6700
6751
|
return /* @__PURE__ */ React.createElement("tr", null, dayItems);
|
|
6701
6752
|
}
|
|
6702
6753
|
renderDays() {
|
|
6703
6754
|
const date = this.props.viewDate;
|
|
6704
6755
|
const startOfMonth = date.clone().startOf("month");
|
|
6705
6756
|
const endOfMonth = date.clone().endOf("month");
|
|
6706
|
-
|
|
6707
|
-
|
|
6757
|
+
const rows = [[], [], [], [], [], []];
|
|
6758
|
+
const startDate = date.clone().subtract(1, "months");
|
|
6708
6759
|
startDate.date(startDate.daysInMonth()).startOf("week");
|
|
6709
|
-
|
|
6760
|
+
const endDate = startDate.clone().add(42, "d");
|
|
6710
6761
|
let i = 0;
|
|
6711
6762
|
while (startDate.isBefore(endDate)) {
|
|
6712
|
-
|
|
6763
|
+
const row = getRow$2(rows, i++);
|
|
6713
6764
|
row.push(this.renderDay(startDate, startOfMonth, endOfMonth));
|
|
6714
6765
|
startDate.add(1, "d");
|
|
6715
6766
|
}
|
|
6716
6767
|
return rows.map((r, i2) => /* @__PURE__ */ React.createElement("tr", { key: `${endDate.month()}_${i2}` }, r));
|
|
6717
6768
|
}
|
|
6718
6769
|
renderDay(date, startOfMonth, endOfMonth) {
|
|
6719
|
-
|
|
6720
|
-
|
|
6770
|
+
const selectedDate = this.props.selectedDate;
|
|
6771
|
+
const dayProps = {
|
|
6721
6772
|
key: date.format("M_D"),
|
|
6722
6773
|
"data-value": date.date(),
|
|
6723
6774
|
"data-month": date.month(),
|
|
@@ -6771,7 +6822,7 @@ flowchart TD
|
|
|
6771
6822
|
}
|
|
6772
6823
|
function getDaysOfWeek(locale) {
|
|
6773
6824
|
const first = locale.firstDayOfWeek();
|
|
6774
|
-
|
|
6825
|
+
const dow = [];
|
|
6775
6826
|
let i = 0;
|
|
6776
6827
|
locale._weekdaysMin.forEach(function(day) {
|
|
6777
6828
|
dow[(7 + i++ - first) % 7] = day;
|
|
@@ -6789,7 +6840,7 @@ flowchart TD
|
|
|
6789
6840
|
return /* @__PURE__ */ React.createElement("div", { className: "rdtMonths" }, /* @__PURE__ */ React.createElement("table", null, /* @__PURE__ */ React.createElement("thead", null, this.renderNavigation())), /* @__PURE__ */ React.createElement("table", null, /* @__PURE__ */ React.createElement("tbody", null, this.renderMonths())));
|
|
6790
6841
|
}
|
|
6791
6842
|
renderNavigation() {
|
|
6792
|
-
|
|
6843
|
+
const year = this.props.viewDate.year();
|
|
6793
6844
|
return /* @__PURE__ */ React.createElement(
|
|
6794
6845
|
ViewNavigation,
|
|
6795
6846
|
{
|
|
@@ -6802,9 +6853,9 @@ flowchart TD
|
|
|
6802
6853
|
);
|
|
6803
6854
|
}
|
|
6804
6855
|
renderMonths() {
|
|
6805
|
-
|
|
6856
|
+
const rows = [[], [], []];
|
|
6806
6857
|
for (let month = 0; month < 12; month++) {
|
|
6807
|
-
|
|
6858
|
+
const row = getRow$1(rows, month);
|
|
6808
6859
|
row.push(this.renderMonth(month));
|
|
6809
6860
|
}
|
|
6810
6861
|
return rows.map((months, i) => /* @__PURE__ */ React.createElement("tr", { key: i }, months));
|
|
@@ -6821,7 +6872,7 @@ flowchart TD
|
|
|
6821
6872
|
if (selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month) {
|
|
6822
6873
|
className += " rdtActive";
|
|
6823
6874
|
}
|
|
6824
|
-
|
|
6875
|
+
const props = { key: month, className, "data-value": month, onClick };
|
|
6825
6876
|
if (this.props.renderMonth) {
|
|
6826
6877
|
return this.props.renderMonth(
|
|
6827
6878
|
props,
|
|
@@ -6833,11 +6884,11 @@ flowchart TD
|
|
|
6833
6884
|
return /* @__PURE__ */ React.createElement("td", { ...props }, this.getMonthText(month));
|
|
6834
6885
|
}
|
|
6835
6886
|
isDisabledMonth(month) {
|
|
6836
|
-
|
|
6887
|
+
const isValidDate = this.props.isValidDate;
|
|
6837
6888
|
if (!isValidDate) {
|
|
6838
6889
|
return false;
|
|
6839
6890
|
}
|
|
6840
|
-
|
|
6891
|
+
const date = this.props.viewDate.clone().set({ month });
|
|
6841
6892
|
let day = date.endOf("month").date() + 1;
|
|
6842
6893
|
while (day-- > 1) {
|
|
6843
6894
|
if (isValidDate(date.date(day))) {
|
|
@@ -6889,9 +6940,9 @@ flowchart TD
|
|
|
6889
6940
|
}
|
|
6890
6941
|
renderYears() {
|
|
6891
6942
|
const viewYear = this.getViewYear();
|
|
6892
|
-
|
|
6943
|
+
const rows = [[], [], []];
|
|
6893
6944
|
for (let year = viewYear - 1; year < viewYear + 11; year++) {
|
|
6894
|
-
|
|
6945
|
+
const row = getRow(rows, year - viewYear);
|
|
6895
6946
|
row.push(this.renderYear(year));
|
|
6896
6947
|
}
|
|
6897
6948
|
return rows.map((years, i) => /* @__PURE__ */ React.createElement("tr", { key: i }, years));
|
|
@@ -6908,7 +6959,7 @@ flowchart TD
|
|
|
6908
6959
|
if (selectedYear === year) {
|
|
6909
6960
|
className += " rdtActive";
|
|
6910
6961
|
}
|
|
6911
|
-
|
|
6962
|
+
const props = { key: year, className, "data-value": year, onClick };
|
|
6912
6963
|
return this.props.renderYear(
|
|
6913
6964
|
props,
|
|
6914
6965
|
year,
|
|
@@ -6922,15 +6973,15 @@ flowchart TD
|
|
|
6922
6973
|
return this.props.selectedDate && this.props.selectedDate.year();
|
|
6923
6974
|
}
|
|
6924
6975
|
isDisabledYear(year) {
|
|
6925
|
-
|
|
6976
|
+
const cache = this.disabledYearsCache;
|
|
6926
6977
|
if (cache[year] !== void 0) {
|
|
6927
6978
|
return cache[year];
|
|
6928
6979
|
}
|
|
6929
|
-
|
|
6980
|
+
const isValidDate = this.props.isValidDate;
|
|
6930
6981
|
if (!isValidDate) {
|
|
6931
6982
|
return false;
|
|
6932
6983
|
}
|
|
6933
|
-
|
|
6984
|
+
const date = this.props.viewDate.clone().set({ year });
|
|
6934
6985
|
let day = date.endOf("year").dayOfYear() + 1;
|
|
6935
6986
|
while (day-- > 1) {
|
|
6936
6987
|
if (isValidDate(date.dayOfYear(day))) {
|
|
@@ -6977,7 +7028,7 @@ flowchart TD
|
|
|
6977
7028
|
}
|
|
6978
7029
|
};
|
|
6979
7030
|
function createConstraints(overrideTimeConstraints) {
|
|
6980
|
-
|
|
7031
|
+
const constraints = {};
|
|
6981
7032
|
Object.keys(timeConstraints).forEach((type) => {
|
|
6982
7033
|
constraints[type] = {
|
|
6983
7034
|
...timeConstraints[type],
|
|
@@ -6993,7 +7044,7 @@ flowchart TD
|
|
|
6993
7044
|
this.state = this.getTimeParts(props.selectedDate || props.viewDate);
|
|
6994
7045
|
}
|
|
6995
7046
|
render() {
|
|
6996
|
-
|
|
7047
|
+
const items2 = [];
|
|
6997
7048
|
const timeParts = this.state;
|
|
6998
7049
|
this.getCounters().forEach((c, i) => {
|
|
6999
7050
|
if (i && c !== "ampm") {
|
|
@@ -7055,8 +7106,8 @@ flowchart TD
|
|
|
7055
7106
|
}
|
|
7056
7107
|
if (type === "ampm")
|
|
7057
7108
|
return this.toggleDayPart();
|
|
7058
|
-
|
|
7059
|
-
|
|
7109
|
+
const update = {};
|
|
7110
|
+
const body = document.body;
|
|
7060
7111
|
update[type] = this[action](type);
|
|
7061
7112
|
this.setState(update);
|
|
7062
7113
|
this.timer = setTimeout(() => {
|
|
@@ -7099,8 +7150,8 @@ flowchart TD
|
|
|
7099
7150
|
return pad(type, value);
|
|
7100
7151
|
}
|
|
7101
7152
|
getCounters() {
|
|
7102
|
-
|
|
7103
|
-
|
|
7153
|
+
const counters = [];
|
|
7154
|
+
const format2 = this.props.timeFormat;
|
|
7104
7155
|
if (format2.toLowerCase().indexOf("h") !== -1) {
|
|
7105
7156
|
counters.push("hours");
|
|
7106
7157
|
if (format2.indexOf("m") !== -1) {
|
|
@@ -7153,244 +7204,65 @@ flowchart TD
|
|
|
7153
7204
|
str = "0" + str;
|
|
7154
7205
|
return str;
|
|
7155
7206
|
}
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
}
|
|
7168
|
-
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
7169
|
-
if (source == null)
|
|
7170
|
-
return {};
|
|
7171
|
-
var target = {};
|
|
7172
|
-
var sourceKeys = Object.keys(source);
|
|
7173
|
-
var key, i;
|
|
7174
|
-
for (i = 0; i < sourceKeys.length; i++) {
|
|
7175
|
-
key = sourceKeys[i];
|
|
7176
|
-
if (excluded.indexOf(key) >= 0)
|
|
7177
|
-
continue;
|
|
7178
|
-
target[key] = source[key];
|
|
7179
|
-
}
|
|
7180
|
-
return target;
|
|
7181
|
-
}
|
|
7182
|
-
function _assertThisInitialized(self2) {
|
|
7183
|
-
if (self2 === void 0) {
|
|
7184
|
-
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
7185
|
-
}
|
|
7186
|
-
return self2;
|
|
7187
|
-
}
|
|
7188
|
-
function isNodeFound(current, componentNode, ignoreClass) {
|
|
7189
|
-
if (current === componentNode) {
|
|
7190
|
-
return true;
|
|
7191
|
-
}
|
|
7192
|
-
if (current.correspondingElement) {
|
|
7193
|
-
return current.correspondingElement.classList.contains(ignoreClass);
|
|
7194
|
-
}
|
|
7195
|
-
return current.classList.contains(ignoreClass);
|
|
7196
|
-
}
|
|
7197
|
-
function findHighest(current, componentNode, ignoreClass) {
|
|
7198
|
-
if (current === componentNode) {
|
|
7199
|
-
return true;
|
|
7207
|
+
var useClickAway$1 = {};
|
|
7208
|
+
var util = {};
|
|
7209
|
+
Object.defineProperty(util, "__esModule", { value: true });
|
|
7210
|
+
util.isNavigator = util.isBrowser = util.off = util.on = util.noop = void 0;
|
|
7211
|
+
var noop = function() {
|
|
7212
|
+
};
|
|
7213
|
+
util.noop = noop;
|
|
7214
|
+
function on(obj) {
|
|
7215
|
+
var args = [];
|
|
7216
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7217
|
+
args[_i - 1] = arguments[_i];
|
|
7200
7218
|
}
|
|
7201
|
-
|
|
7202
|
-
|
|
7203
|
-
return true;
|
|
7204
|
-
}
|
|
7205
|
-
current = current.parentNode || current.host;
|
|
7219
|
+
if (obj && obj.addEventListener) {
|
|
7220
|
+
obj.addEventListener.apply(obj, args);
|
|
7206
7221
|
}
|
|
7207
|
-
return current;
|
|
7208
|
-
}
|
|
7209
|
-
function clickedScrollbar(evt) {
|
|
7210
|
-
return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;
|
|
7211
7222
|
}
|
|
7212
|
-
|
|
7213
|
-
|
|
7214
|
-
|
|
7223
|
+
util.on = on;
|
|
7224
|
+
function off(obj) {
|
|
7225
|
+
var args = [];
|
|
7226
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
7227
|
+
args[_i - 1] = arguments[_i];
|
|
7215
7228
|
}
|
|
7216
|
-
|
|
7217
|
-
|
|
7218
|
-
get: function get2() {
|
|
7219
|
-
passive = true;
|
|
7220
|
-
}
|
|
7221
|
-
});
|
|
7222
|
-
var noop = function noop2() {
|
|
7223
|
-
};
|
|
7224
|
-
window.addEventListener("testPassiveEventSupport", noop, options);
|
|
7225
|
-
window.removeEventListener("testPassiveEventSupport", noop, options);
|
|
7226
|
-
return passive;
|
|
7227
|
-
};
|
|
7228
|
-
function autoInc(seed) {
|
|
7229
|
-
if (seed === void 0) {
|
|
7230
|
-
seed = 0;
|
|
7229
|
+
if (obj && obj.removeEventListener) {
|
|
7230
|
+
obj.removeEventListener.apply(obj, args);
|
|
7231
7231
|
}
|
|
7232
|
-
return function() {
|
|
7233
|
-
return ++seed;
|
|
7234
|
-
};
|
|
7235
|
-
}
|
|
7236
|
-
var uid = autoInc();
|
|
7237
|
-
var passiveEventSupport;
|
|
7238
|
-
var handlersMap = {};
|
|
7239
|
-
var enabledInstances = {};
|
|
7240
|
-
var touchEvents = ["touchstart", "touchmove"];
|
|
7241
|
-
var IGNORE_CLASS_NAME = "ignore-react-onclickoutside";
|
|
7242
|
-
function getEventHandlerOptions(instance, eventName) {
|
|
7243
|
-
var handlerOptions = {};
|
|
7244
|
-
var isTouchEvent = touchEvents.indexOf(eventName) !== -1;
|
|
7245
|
-
if (isTouchEvent && passiveEventSupport) {
|
|
7246
|
-
handlerOptions.passive = !instance.props.preventDefault;
|
|
7247
|
-
}
|
|
7248
|
-
return handlerOptions;
|
|
7249
7232
|
}
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
|
|
7253
|
-
|
|
7254
|
-
|
|
7255
|
-
|
|
7256
|
-
|
|
7257
|
-
|
|
7258
|
-
|
|
7259
|
-
|
|
7260
|
-
|
|
7261
|
-
|
|
7262
|
-
|
|
7263
|
-
|
|
7264
|
-
|
|
7265
|
-
|
|
7266
|
-
|
|
7267
|
-
|
|
7268
|
-
|
|
7269
|
-
instance.handleClickOutside(event);
|
|
7270
|
-
return;
|
|
7271
|
-
}
|
|
7272
|
-
throw new Error("WrappedComponent: " + componentName + " lacks a handleClickOutside(event) function for processing outside click events.");
|
|
7273
|
-
};
|
|
7274
|
-
_this.__getComponentNode = function() {
|
|
7275
|
-
var instance = _this.getInstance();
|
|
7276
|
-
if (config && typeof config.setClickOutsideRef === "function") {
|
|
7277
|
-
return config.setClickOutsideRef()(instance);
|
|
7278
|
-
}
|
|
7279
|
-
if (typeof instance.setClickOutsideRef === "function") {
|
|
7280
|
-
return instance.setClickOutsideRef();
|
|
7281
|
-
}
|
|
7282
|
-
return reactDom.findDOMNode(instance);
|
|
7283
|
-
};
|
|
7284
|
-
_this.enableOnClickOutside = function() {
|
|
7285
|
-
if (typeof document === "undefined" || enabledInstances[_this._uid]) {
|
|
7286
|
-
return;
|
|
7287
|
-
}
|
|
7288
|
-
if (typeof passiveEventSupport === "undefined") {
|
|
7289
|
-
passiveEventSupport = testPassiveEventSupport();
|
|
7290
|
-
}
|
|
7291
|
-
enabledInstances[_this._uid] = true;
|
|
7292
|
-
var events = _this.props.eventTypes;
|
|
7293
|
-
if (!events.forEach) {
|
|
7294
|
-
events = [events];
|
|
7295
|
-
}
|
|
7296
|
-
handlersMap[_this._uid] = function(event) {
|
|
7297
|
-
if (_this.componentNode === null)
|
|
7298
|
-
return;
|
|
7299
|
-
if (_this.initTimeStamp > event.timeStamp)
|
|
7300
|
-
return;
|
|
7301
|
-
if (_this.props.preventDefault) {
|
|
7302
|
-
event.preventDefault();
|
|
7303
|
-
}
|
|
7304
|
-
if (_this.props.stopPropagation) {
|
|
7305
|
-
event.stopPropagation();
|
|
7306
|
-
}
|
|
7307
|
-
if (_this.props.excludeScrollbar && clickedScrollbar(event))
|
|
7308
|
-
return;
|
|
7309
|
-
var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;
|
|
7310
|
-
if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {
|
|
7311
|
-
return;
|
|
7312
|
-
}
|
|
7313
|
-
_this.__outsideClickHandler(event);
|
|
7314
|
-
};
|
|
7315
|
-
events.forEach(function(eventName) {
|
|
7316
|
-
document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));
|
|
7317
|
-
});
|
|
7318
|
-
};
|
|
7319
|
-
_this.disableOnClickOutside = function() {
|
|
7320
|
-
delete enabledInstances[_this._uid];
|
|
7321
|
-
var fn = handlersMap[_this._uid];
|
|
7322
|
-
if (fn && typeof document !== "undefined") {
|
|
7323
|
-
var events = _this.props.eventTypes;
|
|
7324
|
-
if (!events.forEach) {
|
|
7325
|
-
events = [events];
|
|
7326
|
-
}
|
|
7327
|
-
events.forEach(function(eventName) {
|
|
7328
|
-
return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));
|
|
7329
|
-
});
|
|
7330
|
-
delete handlersMap[_this._uid];
|
|
7331
|
-
}
|
|
7332
|
-
};
|
|
7333
|
-
_this.getRef = function(ref) {
|
|
7334
|
-
return _this.instanceRef = ref;
|
|
7335
|
-
};
|
|
7336
|
-
_this._uid = uid();
|
|
7337
|
-
_this.initTimeStamp = performance.now();
|
|
7338
|
-
return _this;
|
|
7339
|
-
}
|
|
7340
|
-
var _proto = onClickOutside.prototype;
|
|
7341
|
-
_proto.getInstance = function getInstance() {
|
|
7342
|
-
if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {
|
|
7343
|
-
return this;
|
|
7344
|
-
}
|
|
7345
|
-
var ref = this.instanceRef;
|
|
7346
|
-
return ref.getInstance ? ref.getInstance() : ref;
|
|
7233
|
+
util.off = off;
|
|
7234
|
+
util.isBrowser = typeof window !== "undefined";
|
|
7235
|
+
util.isNavigator = typeof navigator !== "undefined";
|
|
7236
|
+
Object.defineProperty(useClickAway$1, "__esModule", { value: true });
|
|
7237
|
+
var react_1 = React;
|
|
7238
|
+
var util_1 = util;
|
|
7239
|
+
var defaultEvents = ["mousedown", "touchstart"];
|
|
7240
|
+
var useClickAway = function(ref, onClickAway, events) {
|
|
7241
|
+
if (events === void 0) {
|
|
7242
|
+
events = defaultEvents;
|
|
7243
|
+
}
|
|
7244
|
+
var savedCallback = react_1.useRef(onClickAway);
|
|
7245
|
+
react_1.useEffect(function() {
|
|
7246
|
+
savedCallback.current = onClickAway;
|
|
7247
|
+
}, [onClickAway]);
|
|
7248
|
+
react_1.useEffect(function() {
|
|
7249
|
+
var handler = function(event) {
|
|
7250
|
+
var el = ref.current;
|
|
7251
|
+
el && !el.contains(event.target) && savedCallback.current(event);
|
|
7347
7252
|
};
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7354
|
-
|
|
7355
|
-
|
|
7356
|
-
throw new Error("WrappedComponent: " + componentName + " lacks a function for processing outside click events specified by the handleClickOutside config option.");
|
|
7357
|
-
}
|
|
7358
|
-
}
|
|
7359
|
-
this.componentNode = this.__getComponentNode();
|
|
7360
|
-
if (this.props.disableOnClickOutside)
|
|
7361
|
-
return;
|
|
7362
|
-
this.enableOnClickOutside();
|
|
7363
|
-
};
|
|
7364
|
-
_proto.componentDidUpdate = function componentDidUpdate() {
|
|
7365
|
-
this.componentNode = this.__getComponentNode();
|
|
7366
|
-
};
|
|
7367
|
-
_proto.componentWillUnmount = function componentWillUnmount() {
|
|
7368
|
-
this.disableOnClickOutside();
|
|
7369
|
-
};
|
|
7370
|
-
_proto.render = function render() {
|
|
7371
|
-
var _this$props = this.props;
|
|
7372
|
-
_this$props.excludeScrollbar;
|
|
7373
|
-
var props = _objectWithoutPropertiesLoose(_this$props, ["excludeScrollbar"]);
|
|
7374
|
-
if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {
|
|
7375
|
-
props.ref = this.getRef;
|
|
7376
|
-
} else {
|
|
7377
|
-
props.wrappedRef = this.getRef;
|
|
7253
|
+
for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {
|
|
7254
|
+
var eventName = events_1[_i];
|
|
7255
|
+
util_1.on(document, eventName, handler);
|
|
7256
|
+
}
|
|
7257
|
+
return function() {
|
|
7258
|
+
for (var _i2 = 0, events_2 = events; _i2 < events_2.length; _i2++) {
|
|
7259
|
+
var eventName2 = events_2[_i2];
|
|
7260
|
+
util_1.off(document, eventName2, handler);
|
|
7378
7261
|
}
|
|
7379
|
-
props.disableOnClickOutside = this.disableOnClickOutside;
|
|
7380
|
-
props.enableOnClickOutside = this.enableOnClickOutside;
|
|
7381
|
-
return React.createElement(WrappedComponent, props);
|
|
7382
7262
|
};
|
|
7383
|
-
|
|
7384
|
-
|
|
7385
|
-
|
|
7386
|
-
excludeScrollbar: config && config.excludeScrollbar || false,
|
|
7387
|
-
outsideClickIgnoreClass: IGNORE_CLASS_NAME,
|
|
7388
|
-
preventDefault: false,
|
|
7389
|
-
stopPropagation: false
|
|
7390
|
-
}, _class.getClass = function() {
|
|
7391
|
-
return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;
|
|
7392
|
-
}, _temp;
|
|
7393
|
-
}
|
|
7263
|
+
}, [events, ref]);
|
|
7264
|
+
};
|
|
7265
|
+
var _default = useClickAway$1.default = useClickAway;
|
|
7394
7266
|
const viewModes = {
|
|
7395
7267
|
YEARS: "years",
|
|
7396
7268
|
MONTHS: "months",
|
|
@@ -7411,7 +7283,7 @@ flowchart TD
|
|
|
7411
7283
|
__publicField(this, "_renderCalendar", () => {
|
|
7412
7284
|
const props = this.props;
|
|
7413
7285
|
const state = this.state;
|
|
7414
|
-
|
|
7286
|
+
const viewProps = {
|
|
7415
7287
|
viewDate: state.viewDate.clone(),
|
|
7416
7288
|
selectedDate: this.getSelectedDate(),
|
|
7417
7289
|
isValidDate: props.isValidDate,
|
|
@@ -7454,10 +7326,10 @@ flowchart TD
|
|
|
7454
7326
|
__publicField(this, "viewToMethod", { days: "date", months: "month", years: "year" });
|
|
7455
7327
|
__publicField(this, "nextView", { days: "time", months: "days", years: "months" });
|
|
7456
7328
|
__publicField(this, "_updateDate", (e) => {
|
|
7457
|
-
|
|
7458
|
-
|
|
7459
|
-
|
|
7460
|
-
|
|
7329
|
+
const state = this.state;
|
|
7330
|
+
const currentView = state.currentView;
|
|
7331
|
+
const updateOnView = this.getUpdateOn(this.getFormat("date"));
|
|
7332
|
+
const viewDate = this.state.viewDate.clone();
|
|
7461
7333
|
viewDate[this.viewToMethod[currentView]](
|
|
7462
7334
|
parseInt(e.target.getAttribute("data-value"), 10)
|
|
7463
7335
|
);
|
|
@@ -7465,7 +7337,7 @@ flowchart TD
|
|
|
7465
7337
|
viewDate.month(parseInt(e.target.getAttribute("data-month"), 10));
|
|
7466
7338
|
viewDate.year(parseInt(e.target.getAttribute("data-year"), 10));
|
|
7467
7339
|
}
|
|
7468
|
-
|
|
7340
|
+
const update = { viewDate };
|
|
7469
7341
|
if (currentView === updateOnView) {
|
|
7470
7342
|
update.selectedDate = viewDate.clone();
|
|
7471
7343
|
update.inputValue = viewDate.format(this.getFormat("datetime"));
|
|
@@ -7479,7 +7351,7 @@ flowchart TD
|
|
|
7479
7351
|
this.setState(update);
|
|
7480
7352
|
});
|
|
7481
7353
|
__publicField(this, "_viewNavigate", (modifier, unit) => {
|
|
7482
|
-
|
|
7354
|
+
const viewDate = this.state.viewDate.clone();
|
|
7483
7355
|
viewDate.add(modifier, unit);
|
|
7484
7356
|
if (modifier > 0) {
|
|
7485
7357
|
this.props.onNavigateForward(modifier, unit);
|
|
@@ -7489,7 +7361,7 @@ flowchart TD
|
|
|
7489
7361
|
this.setState({ viewDate });
|
|
7490
7362
|
});
|
|
7491
7363
|
__publicField(this, "_setTime", (type, value) => {
|
|
7492
|
-
|
|
7364
|
+
const date = (this.getSelectedDate() || this.state.viewDate).clone();
|
|
7493
7365
|
date[type](value);
|
|
7494
7366
|
if (!this.props.value) {
|
|
7495
7367
|
this.setState({
|
|
@@ -7513,7 +7385,7 @@ flowchart TD
|
|
|
7513
7385
|
});
|
|
7514
7386
|
});
|
|
7515
7387
|
__publicField(this, "_handleClickOutside", () => {
|
|
7516
|
-
|
|
7388
|
+
const props = this.props;
|
|
7517
7389
|
if (props.input && this.state.open && props.open === void 0 && props.closeOnClickOutside) {
|
|
7518
7390
|
this._closeCalendar();
|
|
7519
7391
|
}
|
|
@@ -7528,7 +7400,7 @@ flowchart TD
|
|
|
7528
7400
|
return;
|
|
7529
7401
|
const value = e.target ? e.target.value : e;
|
|
7530
7402
|
const localMoment = this.localMoment(value, this.getFormat("datetime"));
|
|
7531
|
-
|
|
7403
|
+
const update = { inputValue: value };
|
|
7532
7404
|
if (localMoment.isValid()) {
|
|
7533
7405
|
update.selectedDate = localMoment;
|
|
7534
7406
|
update.viewDate = localMoment.clone().startOf("month");
|
|
@@ -7592,9 +7464,9 @@ flowchart TD
|
|
|
7592
7464
|
return this.props.renderView(this.state.currentView, this._renderCalendar);
|
|
7593
7465
|
}
|
|
7594
7466
|
getInitialState() {
|
|
7595
|
-
|
|
7596
|
-
|
|
7597
|
-
|
|
7467
|
+
const props = this.props;
|
|
7468
|
+
const inputFormat = this.getFormat("datetime");
|
|
7469
|
+
const selectedDate = this.parseDate(
|
|
7598
7470
|
props.value || props.initialValue,
|
|
7599
7471
|
inputFormat
|
|
7600
7472
|
);
|
|
@@ -7625,7 +7497,7 @@ flowchart TD
|
|
|
7625
7497
|
return this.getInitialDate();
|
|
7626
7498
|
}
|
|
7627
7499
|
getInitialDate() {
|
|
7628
|
-
|
|
7500
|
+
const m = this.localMoment();
|
|
7629
7501
|
m.hour(0).minute(0).second(0).millisecond(0);
|
|
7630
7502
|
return m;
|
|
7631
7503
|
}
|
|
@@ -7645,8 +7517,8 @@ flowchart TD
|
|
|
7645
7517
|
}
|
|
7646
7518
|
getClassName() {
|
|
7647
7519
|
let cn2 = "rdt";
|
|
7648
|
-
|
|
7649
|
-
|
|
7520
|
+
const props = this.props;
|
|
7521
|
+
const propCn = props.className;
|
|
7650
7522
|
if (Array.isArray(propCn)) {
|
|
7651
7523
|
cn2 += " " + propCn.join(" ");
|
|
7652
7524
|
} else if (propCn) {
|
|
@@ -7679,14 +7551,14 @@ flowchart TD
|
|
|
7679
7551
|
return viewModes.DAYS;
|
|
7680
7552
|
}
|
|
7681
7553
|
getLocaleData() {
|
|
7682
|
-
|
|
7554
|
+
const p = this.props;
|
|
7683
7555
|
return this.localMoment(
|
|
7684
7556
|
p.value || p.defaultValue || /* @__PURE__ */ new Date()
|
|
7685
7557
|
).localeData();
|
|
7686
7558
|
}
|
|
7687
7559
|
getDateFormat() {
|
|
7688
7560
|
const locale = this.getLocaleData();
|
|
7689
|
-
|
|
7561
|
+
const format2 = this.props.dateFormat;
|
|
7690
7562
|
if (format2 === true)
|
|
7691
7563
|
return locale.longDateFormat("L");
|
|
7692
7564
|
if (format2)
|
|
@@ -7695,7 +7567,7 @@ flowchart TD
|
|
|
7695
7567
|
}
|
|
7696
7568
|
getTimeFormat() {
|
|
7697
7569
|
const locale = this.getLocaleData();
|
|
7698
|
-
|
|
7570
|
+
const format2 = this.props.timeFormat;
|
|
7699
7571
|
if (format2 === true) {
|
|
7700
7572
|
return locale.longDateFormat("LT");
|
|
7701
7573
|
}
|
|
@@ -7707,12 +7579,12 @@ flowchart TD
|
|
|
7707
7579
|
} else if (type === "time") {
|
|
7708
7580
|
return this.getTimeFormat();
|
|
7709
7581
|
}
|
|
7710
|
-
|
|
7711
|
-
|
|
7582
|
+
const dateFormat = this.getDateFormat();
|
|
7583
|
+
const timeFormat = this.getTimeFormat();
|
|
7712
7584
|
return dateFormat && timeFormat ? dateFormat + " " + timeFormat : dateFormat || timeFormat;
|
|
7713
7585
|
}
|
|
7714
7586
|
updateTime(op, amount, type, toSelected) {
|
|
7715
|
-
|
|
7587
|
+
const update = {};
|
|
7716
7588
|
const date = toSelected ? "selectedDate" : "viewDate";
|
|
7717
7589
|
update[date] = this.state[date].clone()[op](amount, type);
|
|
7718
7590
|
this.setState(update);
|
|
@@ -7745,7 +7617,7 @@ flowchart TD
|
|
|
7745
7617
|
if (prevProps === this.props)
|
|
7746
7618
|
return;
|
|
7747
7619
|
let needsUpdate = false;
|
|
7748
|
-
|
|
7620
|
+
const thisProps = this.props;
|
|
7749
7621
|
["locale", "utc", "displayZone", "dateFormat", "timeFormat"].forEach(
|
|
7750
7622
|
function(p) {
|
|
7751
7623
|
prevProps[p] !== thisProps[p] && (needsUpdate = true);
|
|
@@ -7761,8 +7633,8 @@ flowchart TD
|
|
|
7761
7633
|
}
|
|
7762
7634
|
regenerateDates() {
|
|
7763
7635
|
const props = this.props;
|
|
7764
|
-
|
|
7765
|
-
|
|
7636
|
+
const viewDate = this.state.viewDate.clone();
|
|
7637
|
+
const selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
|
|
7766
7638
|
if (props.locale) {
|
|
7767
7639
|
viewDate.locale(props.locale);
|
|
7768
7640
|
selectedDate && selectedDate.locale(props.locale);
|
|
@@ -7777,7 +7649,7 @@ flowchart TD
|
|
|
7777
7649
|
viewDate.locale();
|
|
7778
7650
|
selectedDate && selectedDate.locale();
|
|
7779
7651
|
}
|
|
7780
|
-
|
|
7652
|
+
const update = { viewDate, selectedDate };
|
|
7781
7653
|
if (selectedDate && selectedDate.isValid()) {
|
|
7782
7654
|
update.inputValue = selectedDate.format(this.getFormat("datetime"));
|
|
7783
7655
|
}
|
|
@@ -7786,7 +7658,7 @@ flowchart TD
|
|
|
7786
7658
|
getSelectedDate() {
|
|
7787
7659
|
if (this.props.value === void 0)
|
|
7788
7660
|
return this.state.selectedDate;
|
|
7789
|
-
|
|
7661
|
+
const selectedDate = this.parseDate(
|
|
7790
7662
|
this.props.value,
|
|
7791
7663
|
this.getFormat("datetime")
|
|
7792
7664
|
);
|
|
@@ -7805,7 +7677,7 @@ flowchart TD
|
|
|
7805
7677
|
return "";
|
|
7806
7678
|
}
|
|
7807
7679
|
getInputValue() {
|
|
7808
|
-
|
|
7680
|
+
const selectedDate = this.getSelectedDate();
|
|
7809
7681
|
return selectedDate ? selectedDate.format(this.getFormat("datetime")) : this.state.inputValue;
|
|
7810
7682
|
}
|
|
7811
7683
|
/**
|
|
@@ -7815,7 +7687,7 @@ flowchart TD
|
|
|
7815
7687
|
* @public
|
|
7816
7688
|
*/
|
|
7817
7689
|
setViewDate(date) {
|
|
7818
|
-
|
|
7690
|
+
const logError = function() {
|
|
7819
7691
|
return log("Invalid date passed to the `setViewDate` method: " + date);
|
|
7820
7692
|
};
|
|
7821
7693
|
if (!date)
|
|
@@ -7911,7 +7783,7 @@ flowchart TD
|
|
|
7911
7783
|
// Make moment accessible through the Datetime class
|
|
7912
7784
|
__publicField(Datetime, "moment", moment);
|
|
7913
7785
|
function log(message, method) {
|
|
7914
|
-
|
|
7786
|
+
const con = typeof window !== "undefined" && window.console;
|
|
7915
7787
|
if (!con)
|
|
7916
7788
|
return;
|
|
7917
7789
|
if (!method) {
|
|
@@ -7919,22 +7791,13 @@ flowchart TD
|
|
|
7919
7791
|
}
|
|
7920
7792
|
con[method]("***react-datetime:" + message);
|
|
7921
7793
|
}
|
|
7922
|
-
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
}
|
|
7927
|
-
|
|
7928
|
-
return /* @__PURE__ */ React.createElement("div", { className: this.props.className, ref: this.container }, this.props.children);
|
|
7929
|
-
}
|
|
7930
|
-
handleClickOutside(e) {
|
|
7931
|
-
this.props.onClickOut(e);
|
|
7932
|
-
}
|
|
7933
|
-
setClickOutsideRef() {
|
|
7934
|
-
return this.container.current;
|
|
7935
|
-
}
|
|
7794
|
+
function ClickableWrapper({ className, onClickOut, children }) {
|
|
7795
|
+
const containerRef = React.useRef(null);
|
|
7796
|
+
_default(containerRef, (event) => {
|
|
7797
|
+
onClickOut(event);
|
|
7798
|
+
});
|
|
7799
|
+
return /* @__PURE__ */ React.createElement("div", { className, ref: containerRef }, children);
|
|
7936
7800
|
}
|
|
7937
|
-
const ClickableWrapper = onClickOutsideHOC(ClickOutBase);
|
|
7938
7801
|
const DEFAULT_DATE_DISPLAY_FORMAT = "MMM DD, YYYY";
|
|
7939
7802
|
const DEFAULT_TIME_DISPLAY_FORMAT = "h:mm A";
|
|
7940
7803
|
const format$1 = (val, _name, field) => {
|
|
@@ -7977,7 +7840,10 @@ flowchart TD
|
|
|
7977
7840
|
ReactDateTimeWithStyles,
|
|
7978
7841
|
{
|
|
7979
7842
|
value: input.value,
|
|
7980
|
-
onChange:
|
|
7843
|
+
onChange: (value) => {
|
|
7844
|
+
const newValue = value === "" ? void 0 : value;
|
|
7845
|
+
input.onChange(newValue);
|
|
7846
|
+
},
|
|
7981
7847
|
dateFormat: dateFormat || DEFAULT_DATE_DISPLAY_FORMAT,
|
|
7982
7848
|
timeFormat: timeFormat || false,
|
|
7983
7849
|
inputProps: { className: textFieldClasses },
|
|
@@ -8740,7 +8606,10 @@ flowchart TD
|
|
|
8740
8606
|
label: "View in GitHub",
|
|
8741
8607
|
Icon: /* @__PURE__ */ React__namespace.createElement(BiLinkExternal, { className: "w-5 h-auto text-blue-500 opacity-70" }),
|
|
8742
8608
|
onMouseDown: () => {
|
|
8743
|
-
window.open(
|
|
8609
|
+
window.open(
|
|
8610
|
+
branch.githubPullRequestUrl,
|
|
8611
|
+
"_blank"
|
|
8612
|
+
);
|
|
8744
8613
|
}
|
|
8745
8614
|
},
|
|
8746
8615
|
typeof previewFunction === "function" && ((_b2 = previewFunction({ branch: branch.name })) == null ? void 0 : _b2.url) && {
|
|
@@ -9046,7 +8915,9 @@ flowchart TD
|
|
|
9046
8915
|
} else {
|
|
9047
8916
|
events = event;
|
|
9048
8917
|
}
|
|
9049
|
-
const newListeners = events.map(
|
|
8918
|
+
const newListeners = events.map(
|
|
8919
|
+
(event2) => new Listener(event2, callback)
|
|
8920
|
+
);
|
|
9050
8921
|
newListeners.forEach((newListener) => this.listeners.add(newListener));
|
|
9051
8922
|
return () => {
|
|
9052
8923
|
newListeners.forEach((listener) => this.listeners.delete(listener));
|
|
@@ -9402,9 +9273,7 @@ flowchart TD
|
|
|
9402
9273
|
const deleteStartTime = Date.now();
|
|
9403
9274
|
while (true) {
|
|
9404
9275
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
9405
|
-
const { error, message } = await this.api.getRequestStatus(
|
|
9406
|
-
requestId
|
|
9407
|
-
);
|
|
9276
|
+
const { error, message } = await this.api.getRequestStatus(requestId);
|
|
9408
9277
|
if (error !== void 0) {
|
|
9409
9278
|
if (error) {
|
|
9410
9279
|
throw new Error(message);
|
|
@@ -9429,6 +9298,17 @@ flowchart TD
|
|
|
9429
9298
|
}
|
|
9430
9299
|
}
|
|
9431
9300
|
}
|
|
9301
|
+
const encodeUrlIfNeeded = (url) => {
|
|
9302
|
+
if (url) {
|
|
9303
|
+
try {
|
|
9304
|
+
return new URL(url).toString();
|
|
9305
|
+
} catch (e) {
|
|
9306
|
+
return url;
|
|
9307
|
+
}
|
|
9308
|
+
} else {
|
|
9309
|
+
return url;
|
|
9310
|
+
}
|
|
9311
|
+
};
|
|
9432
9312
|
let MediaManager$1 = class MediaManager {
|
|
9433
9313
|
constructor(store, events) {
|
|
9434
9314
|
this.store = store;
|
|
@@ -9501,6 +9381,20 @@ flowchart TD
|
|
|
9501
9381
|
try {
|
|
9502
9382
|
this.events.dispatch({ type: "media:list:start", ...options });
|
|
9503
9383
|
const media = await this.store.list(options);
|
|
9384
|
+
media.items = media.items.map((item) => {
|
|
9385
|
+
if (item.type === "dir") {
|
|
9386
|
+
return item;
|
|
9387
|
+
}
|
|
9388
|
+
if (item.thumbnails) {
|
|
9389
|
+
for (const [size, src] of Object.entries(item.thumbnails)) {
|
|
9390
|
+
item.thumbnails[size] = encodeUrlIfNeeded(src);
|
|
9391
|
+
}
|
|
9392
|
+
}
|
|
9393
|
+
return {
|
|
9394
|
+
...item,
|
|
9395
|
+
src: encodeUrlIfNeeded(item.src)
|
|
9396
|
+
};
|
|
9397
|
+
});
|
|
9504
9398
|
this.events.dispatch({ type: "media:list:success", ...options, media });
|
|
9505
9399
|
return media;
|
|
9506
9400
|
} catch (error) {
|
|
@@ -9714,7 +9608,7 @@ flowchart TD
|
|
|
9714
9608
|
return this.add("error", message, timeout);
|
|
9715
9609
|
}
|
|
9716
9610
|
};
|
|
9717
|
-
const
|
|
9611
|
+
const SidebarLoadingPlaceholder = () => /* @__PURE__ */ React__namespace.createElement(
|
|
9718
9612
|
"div",
|
|
9719
9613
|
{
|
|
9720
9614
|
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
@@ -9727,25 +9621,8 @@ flowchart TD
|
|
|
9727
9621
|
animationDuration: "150ms"
|
|
9728
9622
|
}
|
|
9729
9623
|
},
|
|
9730
|
-
/* @__PURE__ */ React__namespace.createElement(
|
|
9731
|
-
/* @__PURE__ */ React__namespace.createElement(
|
|
9732
|
-
/* @__PURE__ */ React__namespace.createElement("p", { className: "block" }, /* @__PURE__ */ React__namespace.createElement(
|
|
9733
|
-
Button$1,
|
|
9734
|
-
{
|
|
9735
|
-
href: "https://tina.io/docs/tinacms-context/",
|
|
9736
|
-
target: "_blank",
|
|
9737
|
-
as: "a"
|
|
9738
|
-
},
|
|
9739
|
-
/* @__PURE__ */ React__namespace.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
9740
|
-
" Contextual Editing"
|
|
9741
|
-
))
|
|
9742
|
-
);
|
|
9743
|
-
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React__namespace.createElement(
|
|
9744
|
-
"span",
|
|
9745
|
-
{
|
|
9746
|
-
className: `text-[24px] leading-none inline-block ${className}`,
|
|
9747
|
-
...props
|
|
9748
|
-
}
|
|
9624
|
+
/* @__PURE__ */ React__namespace.createElement("p", { className: "block pb-5" }, "Please wait while TinaCMS", /* @__PURE__ */ React__namespace.createElement("br", null), "loads your content"),
|
|
9625
|
+
/* @__PURE__ */ React__namespace.createElement(LoadingDots, { color: "var(--tina-color-primary)" })
|
|
9749
9626
|
);
|
|
9750
9627
|
class SidebarState {
|
|
9751
9628
|
constructor(events, options = {}) {
|
|
@@ -9760,7 +9637,7 @@ flowchart TD
|
|
|
9760
9637
|
};
|
|
9761
9638
|
this.position = options.position || "displace";
|
|
9762
9639
|
this.renderNav = options.renderNav || true;
|
|
9763
|
-
this.
|
|
9640
|
+
this.loadingPlaceholder = options.placeholder || SidebarLoadingPlaceholder;
|
|
9764
9641
|
if ((_a = options.buttons) == null ? void 0 : _a.save) {
|
|
9765
9642
|
this.buttons.save = options.buttons.save;
|
|
9766
9643
|
}
|
|
@@ -9834,238 +9711,6 @@ flowchart TD
|
|
|
9834
9711
|
children
|
|
9835
9712
|
)));
|
|
9836
9713
|
};
|
|
9837
|
-
const Item = ({
|
|
9838
|
-
item,
|
|
9839
|
-
depth,
|
|
9840
|
-
setActiveFormId
|
|
9841
|
-
}) => {
|
|
9842
|
-
const cms = useCMS();
|
|
9843
|
-
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
9844
|
-
const form = React__namespace.useMemo(
|
|
9845
|
-
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
9846
|
-
[item.formId]
|
|
9847
|
-
);
|
|
9848
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
9849
|
-
"button",
|
|
9850
|
-
{
|
|
9851
|
-
type: "button",
|
|
9852
|
-
key: item.path,
|
|
9853
|
-
onClick: () => setActiveFormId(item.formId),
|
|
9854
|
-
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`
|
|
9855
|
-
},
|
|
9856
|
-
/* @__PURE__ */ React__namespace.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
9857
|
-
/* @__PURE__ */ React__namespace.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
9858
|
-
);
|
|
9859
|
-
};
|
|
9860
|
-
const FormListItem = ({
|
|
9861
|
-
item,
|
|
9862
|
-
depth,
|
|
9863
|
-
setActiveFormId
|
|
9864
|
-
}) => {
|
|
9865
|
-
var _a;
|
|
9866
|
-
return /* @__PURE__ */ React__namespace.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React__namespace.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React__namespace.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
9867
|
-
if (subItem.type === "document") {
|
|
9868
|
-
return /* @__PURE__ */ React__namespace.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React__namespace.createElement(
|
|
9869
|
-
Item,
|
|
9870
|
-
{
|
|
9871
|
-
setActiveFormId,
|
|
9872
|
-
depth: depth + 1,
|
|
9873
|
-
item: subItem
|
|
9874
|
-
}
|
|
9875
|
-
));
|
|
9876
|
-
}
|
|
9877
|
-
})));
|
|
9878
|
-
};
|
|
9879
|
-
const FormLists = (props) => {
|
|
9880
|
-
const cms = useCMS();
|
|
9881
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
9882
|
-
react.Transition,
|
|
9883
|
-
{
|
|
9884
|
-
appear: true,
|
|
9885
|
-
show: true,
|
|
9886
|
-
as: "div",
|
|
9887
|
-
enter: "transition-all ease-out duration-150",
|
|
9888
|
-
enterFrom: "opacity-0 -translate-x-1/2",
|
|
9889
|
-
enterTo: "opacity-100",
|
|
9890
|
-
leave: "transition-all ease-out duration-150",
|
|
9891
|
-
leaveFrom: "opacity-100",
|
|
9892
|
-
leaveTo: "opacity-0 -translate-x-1/2"
|
|
9893
|
-
},
|
|
9894
|
-
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React__namespace.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React__namespace.createElement(
|
|
9895
|
-
FormList,
|
|
9896
|
-
{
|
|
9897
|
-
isEditing: props.isEditing,
|
|
9898
|
-
setActiveFormId: (id) => {
|
|
9899
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
9900
|
-
},
|
|
9901
|
-
formList
|
|
9902
|
-
}
|
|
9903
|
-
)))
|
|
9904
|
-
);
|
|
9905
|
-
};
|
|
9906
|
-
const FormList = (props) => {
|
|
9907
|
-
const cms = useCMS();
|
|
9908
|
-
const listItems = React__namespace.useMemo(() => {
|
|
9909
|
-
var _a;
|
|
9910
|
-
const orderedListItems = [];
|
|
9911
|
-
const globalItems = [];
|
|
9912
|
-
const topItems = [];
|
|
9913
|
-
props.formList.items.forEach((item) => {
|
|
9914
|
-
if (item.type === "document") {
|
|
9915
|
-
const form = cms.state.forms.find(
|
|
9916
|
-
({ tinaForm }) => tinaForm.id === item.formId
|
|
9917
|
-
);
|
|
9918
|
-
if (form.tinaForm.global) {
|
|
9919
|
-
globalItems.push(item);
|
|
9920
|
-
} else {
|
|
9921
|
-
orderedListItems.push(item);
|
|
9922
|
-
}
|
|
9923
|
-
} else {
|
|
9924
|
-
orderedListItems.push(item);
|
|
9925
|
-
}
|
|
9926
|
-
});
|
|
9927
|
-
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
9928
|
-
topItems.push({ type: "list", label: "Documents" });
|
|
9929
|
-
}
|
|
9930
|
-
let extra = [];
|
|
9931
|
-
if (globalItems.length) {
|
|
9932
|
-
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
9933
|
-
}
|
|
9934
|
-
return [...topItems, ...orderedListItems, ...extra];
|
|
9935
|
-
}, [JSON.stringify(props.formList.items)]);
|
|
9936
|
-
return /* @__PURE__ */ React__namespace.createElement("ul", null, /* @__PURE__ */ React__namespace.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
9937
|
-
if (item.type === "list") {
|
|
9938
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
9939
|
-
"div",
|
|
9940
|
-
{
|
|
9941
|
-
key: item.label,
|
|
9942
|
-
className: `relative group text-left w-full bg-white shadow-sm
|
|
9943
|
-
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"}`
|
|
9944
|
-
},
|
|
9945
|
-
/* @__PURE__ */ React__namespace.createElement(
|
|
9946
|
-
"span",
|
|
9947
|
-
{
|
|
9948
|
-
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
9949
|
-
},
|
|
9950
|
-
item.label
|
|
9951
|
-
)
|
|
9952
|
-
);
|
|
9953
|
-
}
|
|
9954
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
9955
|
-
FormListItem,
|
|
9956
|
-
{
|
|
9957
|
-
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
9958
|
-
key: item.formId,
|
|
9959
|
-
item,
|
|
9960
|
-
depth: 0
|
|
9961
|
-
}
|
|
9962
|
-
);
|
|
9963
|
-
})));
|
|
9964
|
-
};
|
|
9965
|
-
const FormsView = ({
|
|
9966
|
-
children
|
|
9967
|
-
}) => {
|
|
9968
|
-
const cms = useCMS$1();
|
|
9969
|
-
const { setFormIsPristine } = React__namespace.useContext(SidebarContext);
|
|
9970
|
-
const isMultiform = cms.state.forms.length > 1;
|
|
9971
|
-
const activeForm = cms.state.forms.find(
|
|
9972
|
-
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
9973
|
-
);
|
|
9974
|
-
const isEditing = !!activeForm;
|
|
9975
|
-
if (!cms.state.formLists.length) {
|
|
9976
|
-
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, " ", children, " ");
|
|
9977
|
-
}
|
|
9978
|
-
if (isMultiform && !activeForm) {
|
|
9979
|
-
return /* @__PURE__ */ React__namespace.createElement(FormLists, { isEditing });
|
|
9980
|
-
}
|
|
9981
|
-
const formMetas = cms.plugins.all("form:meta");
|
|
9982
|
-
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, activeForm && /* @__PURE__ */ React__namespace.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React__namespace.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React__namespace.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, { key: meta.name }, /* @__PURE__ */ React__namespace.createElement(meta.Component, null))), /* @__PURE__ */ React__namespace.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
9983
|
-
};
|
|
9984
|
-
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
9985
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
9986
|
-
"div",
|
|
9987
|
-
{
|
|
9988
|
-
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
9989
|
-
style: isEditing ? {
|
|
9990
|
-
transform: "none",
|
|
9991
|
-
animationName: "fly-in-left",
|
|
9992
|
-
animationDuration: "150ms",
|
|
9993
|
-
animationDelay: "0",
|
|
9994
|
-
animationIterationCount: 1,
|
|
9995
|
-
animationTimingFunction: "ease-out"
|
|
9996
|
-
} : {
|
|
9997
|
-
transform: "translate3d(100%, 0, 0)"
|
|
9998
|
-
}
|
|
9999
|
-
},
|
|
10000
|
-
children
|
|
10001
|
-
);
|
|
10002
|
-
};
|
|
10003
|
-
const MultiformFormHeader = ({
|
|
10004
|
-
activeForm
|
|
10005
|
-
}) => {
|
|
10006
|
-
const cms = useCMS$1();
|
|
10007
|
-
const { formIsPristine } = React__namespace.useContext(SidebarContext);
|
|
10008
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
10009
|
-
"div",
|
|
10010
|
-
{
|
|
10011
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10012
|
-
},
|
|
10013
|
-
/* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10014
|
-
"button",
|
|
10015
|
-
{
|
|
10016
|
-
type: "button",
|
|
10017
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10018
|
-
onClick: () => {
|
|
10019
|
-
const state = activeForm.tinaForm.finalForm.getState();
|
|
10020
|
-
if (state.invalid === true) {
|
|
10021
|
-
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
10022
|
-
} else {
|
|
10023
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
10024
|
-
}
|
|
10025
|
-
}
|
|
10026
|
-
},
|
|
10027
|
-
/* @__PURE__ */ React__namespace.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10028
|
-
), /* @__PURE__ */ React__namespace.createElement(
|
|
10029
|
-
"button",
|
|
10030
|
-
{
|
|
10031
|
-
type: "button",
|
|
10032
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10033
|
-
onClick: () => {
|
|
10034
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10035
|
-
cms.state.activeFormId
|
|
10036
|
-
).name;
|
|
10037
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10038
|
-
}
|
|
10039
|
-
},
|
|
10040
|
-
/* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10041
|
-
), /* @__PURE__ */ React__namespace.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10042
|
-
);
|
|
10043
|
-
};
|
|
10044
|
-
const FormHeader = ({ activeForm }) => {
|
|
10045
|
-
const { formIsPristine } = React__namespace.useContext(SidebarContext);
|
|
10046
|
-
const cms = useCMS$1();
|
|
10047
|
-
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
10048
|
-
return /* @__PURE__ */ React__namespace.createElement(
|
|
10049
|
-
"div",
|
|
10050
|
-
{
|
|
10051
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10052
|
-
},
|
|
10053
|
-
/* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10054
|
-
"button",
|
|
10055
|
-
{
|
|
10056
|
-
type: "button",
|
|
10057
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10058
|
-
onClick: () => {
|
|
10059
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10060
|
-
cms.state.activeFormId
|
|
10061
|
-
).name;
|
|
10062
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10063
|
-
}
|
|
10064
|
-
},
|
|
10065
|
-
/* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10066
|
-
), shortFormLabel && /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10067
|
-
);
|
|
10068
|
-
};
|
|
10069
9714
|
function ImFilesEmpty(props) {
|
|
10070
9715
|
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);
|
|
10071
9716
|
}
|
|
@@ -10308,7 +9953,7 @@ flowchart TD
|
|
|
10308
9953
|
"Event Log"
|
|
10309
9954
|
));
|
|
10310
9955
|
};
|
|
10311
|
-
const version = "2.
|
|
9956
|
+
const version = "2.7.4";
|
|
10312
9957
|
const Nav = ({
|
|
10313
9958
|
isLocalMode,
|
|
10314
9959
|
className = "",
|
|
@@ -10550,6 +10195,293 @@ flowchart TD
|
|
|
10550
10195
|
/* @__PURE__ */ React__namespace.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" })
|
|
10551
10196
|
);
|
|
10552
10197
|
};
|
|
10198
|
+
const Item = ({
|
|
10199
|
+
item,
|
|
10200
|
+
depth,
|
|
10201
|
+
setActiveFormId
|
|
10202
|
+
}) => {
|
|
10203
|
+
const cms = useCMS();
|
|
10204
|
+
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
10205
|
+
const form = React__namespace.useMemo(
|
|
10206
|
+
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
10207
|
+
[item.formId]
|
|
10208
|
+
);
|
|
10209
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10210
|
+
"button",
|
|
10211
|
+
{
|
|
10212
|
+
type: "button",
|
|
10213
|
+
key: item.path,
|
|
10214
|
+
onClick: () => setActiveFormId(item.formId),
|
|
10215
|
+
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`
|
|
10216
|
+
},
|
|
10217
|
+
/* @__PURE__ */ React__namespace.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
10218
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
10219
|
+
);
|
|
10220
|
+
};
|
|
10221
|
+
const FormListItem = ({
|
|
10222
|
+
item,
|
|
10223
|
+
depth,
|
|
10224
|
+
setActiveFormId
|
|
10225
|
+
}) => {
|
|
10226
|
+
var _a;
|
|
10227
|
+
return /* @__PURE__ */ React__namespace.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React__namespace.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React__namespace.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
10228
|
+
if (subItem.type === "document") {
|
|
10229
|
+
return /* @__PURE__ */ React__namespace.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React__namespace.createElement(
|
|
10230
|
+
Item,
|
|
10231
|
+
{
|
|
10232
|
+
setActiveFormId,
|
|
10233
|
+
depth: depth + 1,
|
|
10234
|
+
item: subItem
|
|
10235
|
+
}
|
|
10236
|
+
));
|
|
10237
|
+
}
|
|
10238
|
+
})));
|
|
10239
|
+
};
|
|
10240
|
+
const FormLists = (props) => {
|
|
10241
|
+
const cms = useCMS();
|
|
10242
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10243
|
+
react.Transition,
|
|
10244
|
+
{
|
|
10245
|
+
appear: true,
|
|
10246
|
+
show: true,
|
|
10247
|
+
as: "div",
|
|
10248
|
+
enter: "transition-all ease-out duration-150",
|
|
10249
|
+
enterFrom: "opacity-0 -translate-x-1/2",
|
|
10250
|
+
enterTo: "opacity-100",
|
|
10251
|
+
leave: "transition-all ease-out duration-150",
|
|
10252
|
+
leaveFrom: "opacity-100",
|
|
10253
|
+
leaveTo: "opacity-0 -translate-x-1/2"
|
|
10254
|
+
},
|
|
10255
|
+
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React__namespace.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10256
|
+
FormList,
|
|
10257
|
+
{
|
|
10258
|
+
isEditing: props.isEditing,
|
|
10259
|
+
setActiveFormId: (id) => {
|
|
10260
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
10261
|
+
},
|
|
10262
|
+
formList
|
|
10263
|
+
}
|
|
10264
|
+
)))
|
|
10265
|
+
);
|
|
10266
|
+
};
|
|
10267
|
+
const FormList = (props) => {
|
|
10268
|
+
const cms = useCMS();
|
|
10269
|
+
const listItems = React__namespace.useMemo(() => {
|
|
10270
|
+
var _a;
|
|
10271
|
+
const orderedListItems = [];
|
|
10272
|
+
const globalItems = [];
|
|
10273
|
+
const topItems = [];
|
|
10274
|
+
props.formList.items.forEach((item) => {
|
|
10275
|
+
if (item.type === "document") {
|
|
10276
|
+
const form = cms.state.forms.find(
|
|
10277
|
+
({ tinaForm }) => tinaForm.id === item.formId
|
|
10278
|
+
);
|
|
10279
|
+
if (form.tinaForm.global) {
|
|
10280
|
+
globalItems.push(item);
|
|
10281
|
+
} else {
|
|
10282
|
+
orderedListItems.push(item);
|
|
10283
|
+
}
|
|
10284
|
+
} else {
|
|
10285
|
+
orderedListItems.push(item);
|
|
10286
|
+
}
|
|
10287
|
+
});
|
|
10288
|
+
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
10289
|
+
topItems.push({ type: "list", label: "Documents" });
|
|
10290
|
+
}
|
|
10291
|
+
let extra = [];
|
|
10292
|
+
if (globalItems.length) {
|
|
10293
|
+
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
10294
|
+
}
|
|
10295
|
+
return [...topItems, ...orderedListItems, ...extra];
|
|
10296
|
+
}, [JSON.stringify(props.formList.items)]);
|
|
10297
|
+
return /* @__PURE__ */ React__namespace.createElement("ul", null, /* @__PURE__ */ React__namespace.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
10298
|
+
if (item.type === "list") {
|
|
10299
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10300
|
+
"div",
|
|
10301
|
+
{
|
|
10302
|
+
key: item.label,
|
|
10303
|
+
className: `relative group text-left w-full bg-white shadow-sm
|
|
10304
|
+
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"}`
|
|
10305
|
+
},
|
|
10306
|
+
/* @__PURE__ */ React__namespace.createElement(
|
|
10307
|
+
"span",
|
|
10308
|
+
{
|
|
10309
|
+
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
10310
|
+
},
|
|
10311
|
+
item.label
|
|
10312
|
+
)
|
|
10313
|
+
);
|
|
10314
|
+
}
|
|
10315
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10316
|
+
FormListItem,
|
|
10317
|
+
{
|
|
10318
|
+
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
10319
|
+
key: item.formId,
|
|
10320
|
+
item,
|
|
10321
|
+
depth: 0
|
|
10322
|
+
}
|
|
10323
|
+
);
|
|
10324
|
+
})));
|
|
10325
|
+
};
|
|
10326
|
+
const SidebarNoFormsPlaceholder = () => /* @__PURE__ */ React__namespace.createElement(
|
|
10327
|
+
"div",
|
|
10328
|
+
{
|
|
10329
|
+
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
10330
|
+
style: {
|
|
10331
|
+
animationName: "fade-in",
|
|
10332
|
+
animationDelay: "300ms",
|
|
10333
|
+
animationTimingFunction: "ease-out",
|
|
10334
|
+
animationIterationCount: 1,
|
|
10335
|
+
animationFillMode: "both",
|
|
10336
|
+
animationDuration: "150ms"
|
|
10337
|
+
}
|
|
10338
|
+
},
|
|
10339
|
+
/* @__PURE__ */ React__namespace.createElement("p", { className: "block pb-5" }, "Looks like there's ", /* @__PURE__ */ React__namespace.createElement("br", null), "nothing to edit on ", /* @__PURE__ */ React__namespace.createElement("br", null), "this page."),
|
|
10340
|
+
/* @__PURE__ */ React__namespace.createElement("p", { className: "block pt-5" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10341
|
+
Button$1,
|
|
10342
|
+
{
|
|
10343
|
+
href: "https://tina.io/docs/contextual-editing/overview",
|
|
10344
|
+
target: "_blank",
|
|
10345
|
+
as: "a"
|
|
10346
|
+
},
|
|
10347
|
+
/* @__PURE__ */ React__namespace.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
10348
|
+
" Contextual Editing Docs"
|
|
10349
|
+
))
|
|
10350
|
+
);
|
|
10351
|
+
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React__namespace.createElement(
|
|
10352
|
+
"span",
|
|
10353
|
+
{
|
|
10354
|
+
className: `text-[24px] leading-none inline-block ${className}`,
|
|
10355
|
+
...props
|
|
10356
|
+
}
|
|
10357
|
+
);
|
|
10358
|
+
const minimumTimeToShowLoadingIndicator = 1e3;
|
|
10359
|
+
const FormsView = ({ loadingPlaceholder } = {}) => {
|
|
10360
|
+
const cms = useCMS$1();
|
|
10361
|
+
const { setFormIsPristine } = React__namespace.useContext(SidebarContext);
|
|
10362
|
+
const [isShowingLoading, setIsShowingLoading] = React__namespace.useState(true);
|
|
10363
|
+
const [initialLoadComplete, setInitialLoadComplete] = React__namespace.useState(false);
|
|
10364
|
+
React__namespace.useEffect(() => {
|
|
10365
|
+
if (cms.state.isLoadingContent) {
|
|
10366
|
+
setIsShowingLoading(true);
|
|
10367
|
+
const timer = setTimeout(() => {
|
|
10368
|
+
if (!cms.state.isLoadingContent) {
|
|
10369
|
+
setIsShowingLoading(false);
|
|
10370
|
+
setInitialLoadComplete(true);
|
|
10371
|
+
}
|
|
10372
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10373
|
+
return () => clearTimeout(timer);
|
|
10374
|
+
} else {
|
|
10375
|
+
const timer = setTimeout(() => {
|
|
10376
|
+
setIsShowingLoading(false);
|
|
10377
|
+
setInitialLoadComplete(true);
|
|
10378
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10379
|
+
return () => clearTimeout(timer);
|
|
10380
|
+
}
|
|
10381
|
+
}, [cms.state.isLoadingContent]);
|
|
10382
|
+
if (isShowingLoading || !initialLoadComplete) {
|
|
10383
|
+
const LoadingPlaceholder = loadingPlaceholder || SidebarLoadingPlaceholder;
|
|
10384
|
+
return /* @__PURE__ */ React__namespace.createElement(LoadingPlaceholder, null);
|
|
10385
|
+
}
|
|
10386
|
+
if (!cms.state.formLists.length) {
|
|
10387
|
+
return /* @__PURE__ */ React__namespace.createElement(SidebarNoFormsPlaceholder, null);
|
|
10388
|
+
}
|
|
10389
|
+
const isMultiform = cms.state.forms.length > 1;
|
|
10390
|
+
const activeForm = cms.state.forms.find(
|
|
10391
|
+
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
10392
|
+
);
|
|
10393
|
+
const isEditing = !!activeForm;
|
|
10394
|
+
if (isMultiform && !activeForm) {
|
|
10395
|
+
return /* @__PURE__ */ React__namespace.createElement(FormLists, { isEditing });
|
|
10396
|
+
}
|
|
10397
|
+
const formMetas = cms.plugins.all("form:meta");
|
|
10398
|
+
return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, activeForm && /* @__PURE__ */ React__namespace.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React__namespace.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React__namespace.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, { key: meta.name }, /* @__PURE__ */ React__namespace.createElement(meta.Component, null))), /* @__PURE__ */ React__namespace.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
10399
|
+
};
|
|
10400
|
+
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
10401
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10402
|
+
"div",
|
|
10403
|
+
{
|
|
10404
|
+
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
10405
|
+
style: isEditing ? {
|
|
10406
|
+
transform: "none",
|
|
10407
|
+
animationName: "fly-in-left",
|
|
10408
|
+
animationDuration: "150ms",
|
|
10409
|
+
animationDelay: "0",
|
|
10410
|
+
animationIterationCount: 1,
|
|
10411
|
+
animationTimingFunction: "ease-out"
|
|
10412
|
+
} : {
|
|
10413
|
+
transform: "translate3d(100%, 0, 0)"
|
|
10414
|
+
}
|
|
10415
|
+
},
|
|
10416
|
+
children
|
|
10417
|
+
);
|
|
10418
|
+
};
|
|
10419
|
+
const MultiformFormHeader = ({
|
|
10420
|
+
activeForm
|
|
10421
|
+
}) => {
|
|
10422
|
+
const cms = useCMS$1();
|
|
10423
|
+
const { formIsPristine } = React__namespace.useContext(SidebarContext);
|
|
10424
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10425
|
+
"div",
|
|
10426
|
+
{
|
|
10427
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10428
|
+
},
|
|
10429
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10430
|
+
"button",
|
|
10431
|
+
{
|
|
10432
|
+
type: "button",
|
|
10433
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10434
|
+
onClick: () => {
|
|
10435
|
+
const state = activeForm.tinaForm.finalForm.getState();
|
|
10436
|
+
if (state.invalid === true) {
|
|
10437
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
10438
|
+
} else {
|
|
10439
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
10440
|
+
}
|
|
10441
|
+
}
|
|
10442
|
+
},
|
|
10443
|
+
/* @__PURE__ */ React__namespace.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10444
|
+
), /* @__PURE__ */ React__namespace.createElement(
|
|
10445
|
+
"button",
|
|
10446
|
+
{
|
|
10447
|
+
type: "button",
|
|
10448
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10449
|
+
onClick: () => {
|
|
10450
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10451
|
+
cms.state.activeFormId
|
|
10452
|
+
).name;
|
|
10453
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10454
|
+
}
|
|
10455
|
+
},
|
|
10456
|
+
/* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10457
|
+
), /* @__PURE__ */ React__namespace.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10458
|
+
);
|
|
10459
|
+
};
|
|
10460
|
+
const FormHeader = ({ activeForm }) => {
|
|
10461
|
+
const { formIsPristine } = React__namespace.useContext(SidebarContext);
|
|
10462
|
+
const cms = useCMS$1();
|
|
10463
|
+
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
10464
|
+
return /* @__PURE__ */ React__namespace.createElement(
|
|
10465
|
+
"div",
|
|
10466
|
+
{
|
|
10467
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10468
|
+
},
|
|
10469
|
+
/* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
|
|
10470
|
+
"button",
|
|
10471
|
+
{
|
|
10472
|
+
type: "button",
|
|
10473
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10474
|
+
onClick: () => {
|
|
10475
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10476
|
+
cms.state.activeFormId
|
|
10477
|
+
).name;
|
|
10478
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10479
|
+
}
|
|
10480
|
+
},
|
|
10481
|
+
/* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10482
|
+
), shortFormLabel && /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10483
|
+
);
|
|
10484
|
+
};
|
|
10553
10485
|
const SidebarContext = React__namespace.createContext(null);
|
|
10554
10486
|
const minPreviewWidth = 440;
|
|
10555
10487
|
const minSidebarWidth = 360;
|
|
@@ -10768,7 +10700,7 @@ flowchart TD
|
|
|
10768
10700
|
isLocalMode: (_d = (_c = cms.api) == null ? void 0 : _c.tina) == null ? void 0 : _d.isLocalMode,
|
|
10769
10701
|
branchingEnabled
|
|
10770
10702
|
}
|
|
10771
|
-
), /* @__PURE__ */ React__namespace.createElement(FormsView,
|
|
10703
|
+
), /* @__PURE__ */ React__namespace.createElement(FormsView, { loadingPlaceholder: sidebar.loadingPlaceholder }), activeScreen && /* @__PURE__ */ React__namespace.createElement(
|
|
10772
10704
|
ScreenPluginModal,
|
|
10773
10705
|
{
|
|
10774
10706
|
screen: activeScreen,
|
|
@@ -10944,7 +10876,7 @@ flowchart TD
|
|
|
10944
10876
|
className: "h-5 w-auto -mx-1 text-blue-500",
|
|
10945
10877
|
stroke: "currentColor",
|
|
10946
10878
|
fill: "currentColor",
|
|
10947
|
-
|
|
10879
|
+
strokeWidth: "0",
|
|
10948
10880
|
viewBox: "0 0 24 24",
|
|
10949
10881
|
xmlns: "http://www.w3.org/2000/svg"
|
|
10950
10882
|
},
|
|
@@ -11534,7 +11466,10 @@ flowchart TD
|
|
|
11534
11466
|
const observer = new IntersectionObserver((entries) => {
|
|
11535
11467
|
const target = entries[0];
|
|
11536
11468
|
if (target.isIntersecting && list.nextOffset) {
|
|
11537
|
-
setOffsetHistory((offsetHistory2) => [
|
|
11469
|
+
setOffsetHistory((offsetHistory2) => [
|
|
11470
|
+
...offsetHistory2,
|
|
11471
|
+
list.nextOffset
|
|
11472
|
+
]);
|
|
11538
11473
|
}
|
|
11539
11474
|
});
|
|
11540
11475
|
if (loaderRef.current) {
|
|
@@ -12129,6 +12064,7 @@ flowchart TD
|
|
|
12129
12064
|
forms: [],
|
|
12130
12065
|
formLists: [],
|
|
12131
12066
|
editingMode: "basic",
|
|
12067
|
+
isLoadingContent: false,
|
|
12132
12068
|
quickEditSupported: false,
|
|
12133
12069
|
sidebarDisplayState: ((_a = cms == null ? void 0 : cms.sidebar) == null ? void 0 : _a.defaultState) || "open"
|
|
12134
12070
|
};
|
|
@@ -12188,7 +12124,12 @@ flowchart TD
|
|
|
12188
12124
|
}
|
|
12189
12125
|
});
|
|
12190
12126
|
}
|
|
12191
|
-
return {
|
|
12127
|
+
return {
|
|
12128
|
+
...state,
|
|
12129
|
+
activeFormId,
|
|
12130
|
+
formLists: nextFormLists,
|
|
12131
|
+
isLoadingContent: false
|
|
12132
|
+
};
|
|
12192
12133
|
}
|
|
12193
12134
|
case "form-lists:remove": {
|
|
12194
12135
|
const nextFormLists = state.formLists.filter(
|
|
@@ -12257,6 +12198,9 @@ flowchart TD
|
|
|
12257
12198
|
}
|
|
12258
12199
|
return { ...state, sidebarDisplayState: action.value };
|
|
12259
12200
|
}
|
|
12201
|
+
case "sidebar:set-loading-state": {
|
|
12202
|
+
return { ...state, isLoadingContent: action.value };
|
|
12203
|
+
}
|
|
12260
12204
|
default:
|
|
12261
12205
|
throw new Error(`Unhandled action ${action.type}`);
|
|
12262
12206
|
}
|
|
@@ -12498,7 +12442,9 @@ flowchart TD
|
|
|
12498
12442
|
if (activeEle) {
|
|
12499
12443
|
setDisplay(true);
|
|
12500
12444
|
setPosition(activeEle.getBoundingClientRect());
|
|
12501
|
-
const iframe = document.getElementById(
|
|
12445
|
+
const iframe = document.getElementById(
|
|
12446
|
+
"tina-iframe"
|
|
12447
|
+
);
|
|
12502
12448
|
if (iframe) {
|
|
12503
12449
|
setIframePosition(iframe.getBoundingClientRect());
|
|
12504
12450
|
}
|
|
@@ -12839,15 +12785,14 @@ flowchart TD
|
|
|
12839
12785
|
fields: fieldGroup.fields
|
|
12840
12786
|
}
|
|
12841
12787
|
) : /* @__PURE__ */ React__namespace.createElement(NoFieldsPlaceholder, null)
|
|
12842
|
-
)), !hideFooter && /* @__PURE__ */ React__namespace.createElement("div", { className: "relative flex-none w-full h-16 px-
|
|
12788
|
+
)), !hideFooter && /* @__PURE__ */ React__namespace.createElement("div", { className: "relative flex-none w-full h-16 px-12 bg-white border-t border-gray-100 flex items-center justify-end" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "flex-1 w-full justify-end gap-2 flex items-center max-w-form" }, tinaForm.reset && /* @__PURE__ */ React__namespace.createElement(
|
|
12843
12789
|
ResetForm,
|
|
12844
12790
|
{
|
|
12845
12791
|
pristine,
|
|
12846
12792
|
reset: async () => {
|
|
12847
12793
|
finalForm2.reset();
|
|
12848
12794
|
await tinaForm.reset();
|
|
12849
|
-
}
|
|
12850
|
-
style: { flexGrow: 1 }
|
|
12795
|
+
}
|
|
12851
12796
|
},
|
|
12852
12797
|
tinaForm.buttons.reset
|
|
12853
12798
|
), /* @__PURE__ */ React__namespace.createElement(
|
|
@@ -12856,8 +12801,7 @@ flowchart TD
|
|
|
12856
12801
|
onClick: safeHandleSubmit,
|
|
12857
12802
|
disabled: !canSubmit,
|
|
12858
12803
|
busy: submitting,
|
|
12859
|
-
variant: "primary"
|
|
12860
|
-
style: { flexGrow: 3 }
|
|
12804
|
+
variant: "primary"
|
|
12861
12805
|
},
|
|
12862
12806
|
submitting && /* @__PURE__ */ React__namespace.createElement(LoadingDots, null),
|
|
12863
12807
|
!submitting && tinaForm.buttons.save
|
|
@@ -12942,7 +12886,6 @@ flowchart TD
|
|
|
12942
12886
|
}) => {
|
|
12943
12887
|
const cms = useCMS$1();
|
|
12944
12888
|
const tinaApi = cms.api.tina;
|
|
12945
|
-
tinaApi.branch;
|
|
12946
12889
|
const [disabled, setDisabled] = React__namespace.useState(false);
|
|
12947
12890
|
const [newBranchName, setNewBranchName] = React__namespace.useState("");
|
|
12948
12891
|
const [error, setError] = React__namespace.useState("");
|
|
@@ -12968,10 +12911,10 @@ flowchart TD
|
|
|
12968
12911
|
const newUrl = window.location.href.replace(hash, newHash);
|
|
12969
12912
|
window.location.href = newUrl;
|
|
12970
12913
|
};
|
|
12971
|
-
return /* @__PURE__ */ React__namespace.createElement(Modal, null, /* @__PURE__ */ React__namespace.createElement(PopupModal, null, /* @__PURE__ */ React__namespace.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React__namespace.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React__namespace.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__namespace.createElement("p", { className: "text-
|
|
12914
|
+
return /* @__PURE__ */ React__namespace.createElement(Modal, null, /* @__PURE__ */ React__namespace.createElement(PopupModal, null, /* @__PURE__ */ React__namespace.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React__namespace.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React__namespace.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__namespace.createElement("p", { className: "text-lg text-gray-700 font-bold mb-2" }, "This content is protected 🚧"), /* @__PURE__ */ React__namespace.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__namespace.createElement(
|
|
12972
12915
|
PrefixedTextField,
|
|
12973
12916
|
{
|
|
12974
|
-
placeholder: "
|
|
12917
|
+
placeholder: "e.g. {{PAGE-NAME}}-updates",
|
|
12975
12918
|
value: newBranchName,
|
|
12976
12919
|
onChange: (e) => {
|
|
12977
12920
|
setError("");
|
|
@@ -13118,7 +13061,9 @@ flowchart TD
|
|
|
13118
13061
|
const { fieldName } = useTemplates();
|
|
13119
13062
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13120
13063
|
useHotkey("enter", () => {
|
|
13121
|
-
plateCommon.insertNodes(editor, [
|
|
13064
|
+
plateCommon.insertNodes(editor, [
|
|
13065
|
+
{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13066
|
+
]);
|
|
13122
13067
|
});
|
|
13123
13068
|
return /* @__PURE__ */ React.createElement("span", { ...attributes, className: "" }, children, element.url ? /* @__PURE__ */ React.createElement(
|
|
13124
13069
|
"div",
|
|
@@ -13261,7 +13206,9 @@ flowchart TD
|
|
|
13261
13206
|
const { templates, fieldName } = useTemplates();
|
|
13262
13207
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13263
13208
|
useHotkey("enter", () => {
|
|
13264
|
-
plateCommon.insertNodes(editor, [
|
|
13209
|
+
plateCommon.insertNodes(editor, [
|
|
13210
|
+
{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13211
|
+
]);
|
|
13265
13212
|
});
|
|
13266
13213
|
useHotkey("space", () => {
|
|
13267
13214
|
plateCommon.insertNodes(editor, [{ text: " " }], {
|
|
@@ -13317,7 +13264,9 @@ flowchart TD
|
|
|
13317
13264
|
const { templates, fieldName } = useTemplates();
|
|
13318
13265
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13319
13266
|
useHotkey("enter", () => {
|
|
13320
|
-
plateCommon.insertNodes(editor, [
|
|
13267
|
+
plateCommon.insertNodes(editor, [
|
|
13268
|
+
{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13269
|
+
]);
|
|
13321
13270
|
});
|
|
13322
13271
|
const activeTemplate = templates.find(
|
|
13323
13272
|
(template) => template.name === element.name
|
|
@@ -13663,6 +13612,11 @@ flowchart TD
|
|
|
13663
13612
|
mode: "mark",
|
|
13664
13613
|
type: plate.MARK_CODE,
|
|
13665
13614
|
match: "`"
|
|
13615
|
+
},
|
|
13616
|
+
{
|
|
13617
|
+
mode: "mark",
|
|
13618
|
+
type: plate.MARK_STRIKETHROUGH,
|
|
13619
|
+
match: ["~~", "~"]
|
|
13666
13620
|
}
|
|
13667
13621
|
];
|
|
13668
13622
|
const autoformatRules = [
|
|
@@ -13804,16 +13758,14 @@ flowchart TD
|
|
|
13804
13758
|
})
|
|
13805
13759
|
];
|
|
13806
13760
|
const plugins = [
|
|
13761
|
+
plate.createBasicMarksPlugin(),
|
|
13807
13762
|
plate.createHeadingPlugin(),
|
|
13808
13763
|
plate.createParagraphPlugin(),
|
|
13809
13764
|
createCodeBlockPlugin(),
|
|
13810
13765
|
createHTMLBlockPlugin(),
|
|
13811
13766
|
createHTMLInlinePlugin(),
|
|
13812
13767
|
plate.createBlockquotePlugin(),
|
|
13813
|
-
plate.createBoldPlugin(),
|
|
13814
|
-
plate.createItalicPlugin(),
|
|
13815
13768
|
plate.createUnderlinePlugin(),
|
|
13816
|
-
plate.createCodePlugin(),
|
|
13817
13769
|
plate.createListPlugin(),
|
|
13818
13770
|
plate.createIndentListPlugin(),
|
|
13819
13771
|
plate.createHorizontalRulePlugin(),
|
|
@@ -14173,7 +14125,9 @@ flowchart TD
|
|
|
14173
14125
|
const CONTAINER_MD_BREAKPOINT = 448;
|
|
14174
14126
|
const FLOAT_BUTTON_WIDTH = 25;
|
|
14175
14127
|
const HEADING_LABEL = "Headings";
|
|
14176
|
-
const ToolbarContext = React.createContext(
|
|
14128
|
+
const ToolbarContext = React.createContext(
|
|
14129
|
+
void 0
|
|
14130
|
+
);
|
|
14177
14131
|
const ToolbarProvider = ({
|
|
14178
14132
|
tinaForm,
|
|
14179
14133
|
templates,
|
|
@@ -14323,7 +14277,7 @@ flowchart TD
|
|
|
14323
14277
|
const CodeBlockToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
|
|
14324
14278
|
const state = useCodeBlockToolbarButtonState();
|
|
14325
14279
|
const { props } = useCodeBlockToolbarButton(state);
|
|
14326
|
-
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "
|
|
14280
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Code Block", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.codeBlock, null));
|
|
14327
14281
|
});
|
|
14328
14282
|
const useImageToolbarButtonState = () => {
|
|
14329
14283
|
const editor = plateCommon.useEditorState();
|
|
@@ -14355,36 +14309,54 @@ flowchart TD
|
|
|
14355
14309
|
const ImageToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
|
|
14356
14310
|
const state = useImageToolbarButtonState();
|
|
14357
14311
|
const { props } = useImageToolbarButton(state);
|
|
14358
|
-
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "
|
|
14359
|
-
});
|
|
14360
|
-
const IndentListToolbarButton = cn$1.withRef(({ nodeType = plate.ELEMENT_UL }, ref) => {
|
|
14361
|
-
const editor = plateCommon.useEditorState();
|
|
14362
|
-
const state = plate.useListToolbarButtonState({ nodeType });
|
|
14363
|
-
const { props } = plate.useListToolbarButton(state);
|
|
14364
|
-
return /* @__PURE__ */ React.createElement(
|
|
14365
|
-
ToolbarButton,
|
|
14366
|
-
{
|
|
14367
|
-
ref,
|
|
14368
|
-
tooltip: nodeType === plate.ELEMENT_UL ? "Bulleted List" : "Numbered List",
|
|
14369
|
-
...props,
|
|
14370
|
-
onClick: (e) => {
|
|
14371
|
-
e.preventDefault();
|
|
14372
|
-
e.stopPropagation();
|
|
14373
|
-
plate.toggleList(editor, { type: nodeType });
|
|
14374
|
-
}
|
|
14375
|
-
},
|
|
14376
|
-
nodeType === plate.ELEMENT_UL ? /* @__PURE__ */ React.createElement(Icons.ul, null) : /* @__PURE__ */ React.createElement(Icons.ol, null)
|
|
14377
|
-
);
|
|
14312
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Image", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.image, null));
|
|
14378
14313
|
});
|
|
14314
|
+
const UnorderedListToolbarButton = cn$1.withRef(
|
|
14315
|
+
(props, ref) => {
|
|
14316
|
+
const editor = plateCommon.useEditorState();
|
|
14317
|
+
const state = plate.useListToolbarButtonState({ nodeType: plate.ELEMENT_UL });
|
|
14318
|
+
const { props: buttonProps } = plate.useListToolbarButton(state);
|
|
14319
|
+
return /* @__PURE__ */ React.createElement(
|
|
14320
|
+
ToolbarButton,
|
|
14321
|
+
{
|
|
14322
|
+
ref,
|
|
14323
|
+
tooltip: "Bulleted List",
|
|
14324
|
+
...buttonProps,
|
|
14325
|
+
onClick: (e) => {
|
|
14326
|
+
e.preventDefault();
|
|
14327
|
+
e.stopPropagation();
|
|
14328
|
+
plate.toggleList(editor, { type: plate.ELEMENT_UL });
|
|
14329
|
+
}
|
|
14330
|
+
},
|
|
14331
|
+
/* @__PURE__ */ React.createElement(Icons.ul, null)
|
|
14332
|
+
);
|
|
14333
|
+
}
|
|
14334
|
+
);
|
|
14335
|
+
const OrderedListToolbarButton = cn$1.withRef(
|
|
14336
|
+
(props, ref) => {
|
|
14337
|
+
const editor = plateCommon.useEditorState();
|
|
14338
|
+
const state = plate.useListToolbarButtonState({ nodeType: plate.ELEMENT_OL });
|
|
14339
|
+
const { props: buttonProps } = plate.useListToolbarButton(state);
|
|
14340
|
+
return /* @__PURE__ */ React.createElement(
|
|
14341
|
+
ToolbarButton,
|
|
14342
|
+
{
|
|
14343
|
+
ref,
|
|
14344
|
+
tooltip: "Numbered List",
|
|
14345
|
+
...buttonProps,
|
|
14346
|
+
onClick: (e) => {
|
|
14347
|
+
e.preventDefault();
|
|
14348
|
+
e.stopPropagation();
|
|
14349
|
+
plate.toggleList(editor, { type: plate.ELEMENT_OL });
|
|
14350
|
+
}
|
|
14351
|
+
},
|
|
14352
|
+
/* @__PURE__ */ React.createElement(Icons.ol, null)
|
|
14353
|
+
);
|
|
14354
|
+
}
|
|
14355
|
+
);
|
|
14379
14356
|
const LinkToolbarButton = cn$1.withRef((rest, ref) => {
|
|
14380
14357
|
const state = plateLink.useLinkToolbarButtonState();
|
|
14381
14358
|
const { props } = plateLink.useLinkToolbarButton(state);
|
|
14382
|
-
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Link"
|
|
14383
|
-
});
|
|
14384
|
-
const MarkToolbarButton = cn$1.withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14385
|
-
const state = plateCommon.useMarkToolbarButtonState({ clear, nodeType });
|
|
14386
|
-
const { props } = plateCommon.useMarkToolbarButton(state);
|
|
14387
|
-
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14359
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest, tooltip: "Link" }, /* @__PURE__ */ React.createElement(Icons.link, null));
|
|
14388
14360
|
});
|
|
14389
14361
|
const useMermaidToolbarButtonState = () => {
|
|
14390
14362
|
const editor = plateCommon.useEditorState();
|
|
@@ -14427,6 +14399,7 @@ flowchart TD
|
|
|
14427
14399
|
ToolbarButton,
|
|
14428
14400
|
{
|
|
14429
14401
|
showArrow: false,
|
|
14402
|
+
"data-testid": "rich-text-editor-overflow-menu-button",
|
|
14430
14403
|
className: "lg:min-w-[130px]",
|
|
14431
14404
|
isDropdown: true,
|
|
14432
14405
|
pressed: openState.open,
|
|
@@ -14464,7 +14437,7 @@ flowchart TD
|
|
|
14464
14437
|
const QuoteToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
|
|
14465
14438
|
const state = useBlockQuoteToolbarButtonState();
|
|
14466
14439
|
const { props } = useBlockQuoteToolbarButton(state);
|
|
14467
|
-
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "
|
|
14440
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Quote (⌘+⇧+.)", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.quote, null));
|
|
14468
14441
|
});
|
|
14469
14442
|
const useRawMarkdownToolbarButton = () => {
|
|
14470
14443
|
const { setRawMode } = useEditorContext();
|
|
@@ -14480,7 +14453,17 @@ flowchart TD
|
|
|
14480
14453
|
};
|
|
14481
14454
|
const RawMarkdownToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
|
|
14482
14455
|
const { props } = useRawMarkdownToolbarButton();
|
|
14483
|
-
return /* @__PURE__ */ React.createElement(
|
|
14456
|
+
return /* @__PURE__ */ React.createElement(
|
|
14457
|
+
ToolbarButton,
|
|
14458
|
+
{
|
|
14459
|
+
ref,
|
|
14460
|
+
tooltip: "Raw Markdown",
|
|
14461
|
+
...rest,
|
|
14462
|
+
...props,
|
|
14463
|
+
"data-testid": "markdown-button"
|
|
14464
|
+
},
|
|
14465
|
+
/* @__PURE__ */ React.createElement(Icons.raw, null)
|
|
14466
|
+
);
|
|
14484
14467
|
});
|
|
14485
14468
|
function TableDropdownMenu(props) {
|
|
14486
14469
|
const tableSelected = plateCommon.useEditorSelector(
|
|
@@ -14619,7 +14602,7 @@ flowchart TD
|
|
|
14619
14602
|
key: template.name,
|
|
14620
14603
|
onMouseDown: (e) => {
|
|
14621
14604
|
e.preventDefault();
|
|
14622
|
-
|
|
14605
|
+
setOpen(false);
|
|
14623
14606
|
insertMDX(editor, template);
|
|
14624
14607
|
},
|
|
14625
14608
|
className: ""
|
|
@@ -14627,6 +14610,15 @@ flowchart TD
|
|
|
14627
14610
|
template.label || template.name
|
|
14628
14611
|
))));
|
|
14629
14612
|
};
|
|
14613
|
+
const MarkToolbarButton = cn$1.withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14614
|
+
const state = plateCommon.useMarkToolbarButtonState({ clear, nodeType });
|
|
14615
|
+
const { props } = plateCommon.useMarkToolbarButton(state);
|
|
14616
|
+
return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14617
|
+
});
|
|
14618
|
+
const BoldToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: plate.MARK_BOLD }, /* @__PURE__ */ React.createElement(Icons.bold, null));
|
|
14619
|
+
const StrikethroughToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Strikethrough", nodeType: plate.MARK_STRIKETHROUGH }, /* @__PURE__ */ React.createElement(Icons.strikethrough, null));
|
|
14620
|
+
const ItalicToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: plate.MARK_ITALIC }, /* @__PURE__ */ React.createElement(Icons.italic, null));
|
|
14621
|
+
const CodeToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: plate.MARK_CODE }, /* @__PURE__ */ React.createElement(Icons.code, null));
|
|
14630
14622
|
const toolbarItems = {
|
|
14631
14623
|
heading: {
|
|
14632
14624
|
label: HEADING_LABEL,
|
|
@@ -14647,32 +14639,37 @@ flowchart TD
|
|
|
14647
14639
|
quote: {
|
|
14648
14640
|
label: "Quote",
|
|
14649
14641
|
width: () => STANDARD_ICON_WIDTH,
|
|
14650
|
-
Component: /* @__PURE__ */ React.createElement(QuoteToolbarButton,
|
|
14642
|
+
Component: /* @__PURE__ */ React.createElement(QuoteToolbarButton, null)
|
|
14651
14643
|
},
|
|
14652
14644
|
ul: {
|
|
14653
14645
|
label: "Unordered List",
|
|
14654
14646
|
width: () => STANDARD_ICON_WIDTH,
|
|
14655
|
-
Component: /* @__PURE__ */ React.createElement(
|
|
14647
|
+
Component: /* @__PURE__ */ React.createElement(UnorderedListToolbarButton, null)
|
|
14656
14648
|
},
|
|
14657
14649
|
ol: {
|
|
14658
14650
|
label: "Ordered List",
|
|
14659
14651
|
width: () => STANDARD_ICON_WIDTH,
|
|
14660
|
-
Component: /* @__PURE__ */ React.createElement(
|
|
14652
|
+
Component: /* @__PURE__ */ React.createElement(OrderedListToolbarButton, null)
|
|
14661
14653
|
},
|
|
14662
14654
|
bold: {
|
|
14663
14655
|
label: "Bold",
|
|
14664
14656
|
width: () => STANDARD_ICON_WIDTH,
|
|
14665
|
-
Component: /* @__PURE__ */ React.createElement(
|
|
14657
|
+
Component: /* @__PURE__ */ React.createElement(BoldToolbarButton, null)
|
|
14658
|
+
},
|
|
14659
|
+
strikethrough: {
|
|
14660
|
+
label: "Strikethrough",
|
|
14661
|
+
width: () => STANDARD_ICON_WIDTH,
|
|
14662
|
+
Component: /* @__PURE__ */ React.createElement(StrikethroughToolbarButton, null)
|
|
14666
14663
|
},
|
|
14667
14664
|
italic: {
|
|
14668
14665
|
label: "Italic",
|
|
14669
14666
|
width: () => STANDARD_ICON_WIDTH,
|
|
14670
|
-
Component: /* @__PURE__ */ React.createElement(
|
|
14667
|
+
Component: /* @__PURE__ */ React.createElement(ItalicToolbarButton, null)
|
|
14671
14668
|
},
|
|
14672
14669
|
code: {
|
|
14673
14670
|
label: "Code",
|
|
14674
14671
|
width: () => STANDARD_ICON_WIDTH,
|
|
14675
|
-
Component: /* @__PURE__ */ React.createElement(
|
|
14672
|
+
Component: /* @__PURE__ */ React.createElement(CodeToolbarButton, null)
|
|
14676
14673
|
},
|
|
14677
14674
|
codeBlock: {
|
|
14678
14675
|
label: "Code Block",
|
|
@@ -14705,7 +14702,12 @@ flowchart TD
|
|
|
14705
14702
|
const [itemsShown, setItemsShown] = React.useState(11);
|
|
14706
14703
|
const { overrides, templates } = useToolbarContext();
|
|
14707
14704
|
const showEmbedButton = templates.length > 0;
|
|
14708
|
-
let items2 =
|
|
14705
|
+
let items2 = [];
|
|
14706
|
+
if (Array.isArray(overrides)) {
|
|
14707
|
+
items2 = overrides === void 0 ? Object.values(toolbarItems) : overrides.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14708
|
+
} else {
|
|
14709
|
+
items2 = (overrides == null ? void 0 : overrides.toolbar) === void 0 ? Object.values(toolbarItems) : overrides.toolbar.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14710
|
+
}
|
|
14709
14711
|
if (!showEmbedButton) {
|
|
14710
14712
|
items2 = items2.filter((item) => item.label !== toolbarItems.embed.label);
|
|
14711
14713
|
}
|
|
@@ -15033,6 +15035,9 @@ flowchart TD
|
|
|
15033
15035
|
if (typeof string !== "string") {
|
|
15034
15036
|
return false;
|
|
15035
15037
|
}
|
|
15038
|
+
if (string.startsWith("#")) {
|
|
15039
|
+
return true;
|
|
15040
|
+
}
|
|
15036
15041
|
const generalMatch = string.match(protocolAndDomainRE);
|
|
15037
15042
|
const emailLinkMatch = string.match(emailLintRE);
|
|
15038
15043
|
const localUrlMatch = string.match(localUrlRE);
|
|
@@ -15054,12 +15059,12 @@ flowchart TD
|
|
|
15054
15059
|
}
|
|
15055
15060
|
return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);
|
|
15056
15061
|
};
|
|
15057
|
-
const RichEditor = (
|
|
15062
|
+
const RichEditor = ({ input, tinaForm, field }) => {
|
|
15058
15063
|
var _a;
|
|
15059
15064
|
const initialValue = React.useMemo(
|
|
15060
15065
|
() => {
|
|
15061
15066
|
var _a2, _b;
|
|
15062
|
-
return ((_b = (_a2 =
|
|
15067
|
+
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: "" }] }];
|
|
15063
15068
|
},
|
|
15064
15069
|
[]
|
|
15065
15070
|
);
|
|
@@ -15087,7 +15092,7 @@ flowchart TD
|
|
|
15087
15092
|
),
|
|
15088
15093
|
[]
|
|
15089
15094
|
);
|
|
15090
|
-
const tempId = [
|
|
15095
|
+
const tempId = [tinaForm.id, input.name].join(".");
|
|
15091
15096
|
const id = React.useMemo(() => uuid() + tempId, [tempId]);
|
|
15092
15097
|
const ref = React.useRef(null);
|
|
15093
15098
|
React.useEffect(() => {
|
|
@@ -15097,13 +15102,13 @@ flowchart TD
|
|
|
15097
15102
|
const plateElement = (_a2 = ref.current) == null ? void 0 : _a2.querySelector(
|
|
15098
15103
|
'[role="textbox"]'
|
|
15099
15104
|
);
|
|
15100
|
-
if (
|
|
15105
|
+
if (field.experimental_focusIntent && plateElement) {
|
|
15101
15106
|
if (plateElement)
|
|
15102
15107
|
plateElement.focus();
|
|
15103
15108
|
}
|
|
15104
15109
|
}, 100);
|
|
15105
15110
|
}
|
|
15106
|
-
}, [
|
|
15111
|
+
}, [field.experimental_focusIntent, ref]);
|
|
15107
15112
|
return /* @__PURE__ */ React.createElement("div", { ref }, /* @__PURE__ */ React.createElement(
|
|
15108
15113
|
plateCommon.Plate,
|
|
15109
15114
|
{
|
|
@@ -15111,7 +15116,7 @@ flowchart TD
|
|
|
15111
15116
|
initialValue,
|
|
15112
15117
|
plugins: plugins$2,
|
|
15113
15118
|
onChange: (value) => {
|
|
15114
|
-
|
|
15119
|
+
input.onChange({
|
|
15115
15120
|
type: "root",
|
|
15116
15121
|
children: value
|
|
15117
15122
|
});
|
|
@@ -15120,12 +15125,12 @@ flowchart TD
|
|
|
15120
15125
|
/* @__PURE__ */ React.createElement(TooltipProvider, null, /* @__PURE__ */ React.createElement(
|
|
15121
15126
|
ToolbarProvider,
|
|
15122
15127
|
{
|
|
15123
|
-
tinaForm
|
|
15124
|
-
templates:
|
|
15125
|
-
overrides: (
|
|
15128
|
+
tinaForm,
|
|
15129
|
+
templates: field.templates,
|
|
15130
|
+
overrides: (field == null ? void 0 : field.toolbarOverride) ? field.toolbarOverride : field.overrides
|
|
15126
15131
|
},
|
|
15127
15132
|
/* @__PURE__ */ React.createElement(FixedToolbar, null, /* @__PURE__ */ React.createElement(FixedToolbarButtons, null)),
|
|
15128
|
-
/* @__PURE__ */ React.createElement(FloatingToolbar, null, /* @__PURE__ */ React.createElement(FloatingToolbarButtons, null))
|
|
15133
|
+
((_a = field == null ? void 0 : field.overrides) == null ? void 0 : _a.showFloatingToolbar) !== false ? /* @__PURE__ */ React.createElement(FloatingToolbar, null, /* @__PURE__ */ React.createElement(FloatingToolbarButtons, null)) : null
|
|
15129
15134
|
), /* @__PURE__ */ React.createElement(Editor, null))
|
|
15130
15135
|
));
|
|
15131
15136
|
};
|
|
@@ -16313,132 +16318,1209 @@ flowchart TD
|
|
|
16313
16318
|
"হয়"
|
|
16314
16319
|
];
|
|
16315
16320
|
const bre = [
|
|
16321
|
+
"'blam",
|
|
16322
|
+
"'d",
|
|
16323
|
+
"'m",
|
|
16324
|
+
"'r",
|
|
16325
|
+
"'ta",
|
|
16326
|
+
"'vat",
|
|
16327
|
+
"'z",
|
|
16328
|
+
"'zo",
|
|
16316
16329
|
"a",
|
|
16317
|
-
"
|
|
16318
|
-
"
|
|
16319
|
-
"
|
|
16320
|
-
"
|
|
16321
|
-
"
|
|
16322
|
-
"
|
|
16323
|
-
"
|
|
16324
|
-
"
|
|
16325
|
-
"
|
|
16326
|
-
"
|
|
16327
|
-
"
|
|
16328
|
-
"
|
|
16329
|
-
"
|
|
16330
|
-
"
|
|
16331
|
-
"
|
|
16332
|
-
"
|
|
16333
|
-
"
|
|
16334
|
-
"
|
|
16335
|
-
"
|
|
16336
|
-
"
|
|
16337
|
-
"
|
|
16330
|
+
"a:",
|
|
16331
|
+
"aba",
|
|
16332
|
+
"abalamour",
|
|
16333
|
+
"abaoe",
|
|
16334
|
+
"ac'hane",
|
|
16335
|
+
"ac'hanoc'h",
|
|
16336
|
+
"ac'hanomp",
|
|
16337
|
+
"ac'hanon",
|
|
16338
|
+
"ac'hanout",
|
|
16339
|
+
"adal",
|
|
16340
|
+
"adalek",
|
|
16341
|
+
"adarre",
|
|
16342
|
+
"ae",
|
|
16343
|
+
"aec'h",
|
|
16344
|
+
"aed",
|
|
16345
|
+
"aemp",
|
|
16346
|
+
"aen",
|
|
16347
|
+
"aent",
|
|
16348
|
+
"aes",
|
|
16349
|
+
"afe",
|
|
16350
|
+
"afec'h",
|
|
16351
|
+
"afed",
|
|
16352
|
+
"afemp",
|
|
16353
|
+
"afen",
|
|
16354
|
+
"afent",
|
|
16355
|
+
"afes",
|
|
16356
|
+
"ag",
|
|
16357
|
+
"ah",
|
|
16358
|
+
"aimp",
|
|
16359
|
+
"aint",
|
|
16360
|
+
"aio",
|
|
16361
|
+
"aiou",
|
|
16362
|
+
"aje",
|
|
16363
|
+
"ajec'h",
|
|
16364
|
+
"ajed",
|
|
16365
|
+
"ajemp",
|
|
16366
|
+
"ajen",
|
|
16367
|
+
"ajent",
|
|
16368
|
+
"ajes",
|
|
16369
|
+
"al",
|
|
16370
|
+
"alato",
|
|
16371
|
+
"alies",
|
|
16372
|
+
"aliesañ",
|
|
16373
|
+
"alkent",
|
|
16374
|
+
"all",
|
|
16375
|
+
"allas",
|
|
16376
|
+
"allo",
|
|
16377
|
+
"allô",
|
|
16378
|
+
"am",
|
|
16379
|
+
"amañ",
|
|
16380
|
+
"amzer",
|
|
16381
|
+
"an",
|
|
16382
|
+
"anezhañ",
|
|
16383
|
+
"anezhe",
|
|
16384
|
+
"anezhi",
|
|
16385
|
+
"anezho",
|
|
16386
|
+
"anvet",
|
|
16387
|
+
"aon",
|
|
16388
|
+
"aotren",
|
|
16389
|
+
"ar",
|
|
16390
|
+
"arall",
|
|
16391
|
+
"araok",
|
|
16392
|
+
"araoki",
|
|
16393
|
+
"araozañ",
|
|
16394
|
+
"araozo",
|
|
16395
|
+
"araozoc'h",
|
|
16396
|
+
"araozomp",
|
|
16397
|
+
"araozon",
|
|
16398
|
+
"araozor",
|
|
16399
|
+
"araozout",
|
|
16400
|
+
"arbenn",
|
|
16401
|
+
"arre",
|
|
16402
|
+
"atalek",
|
|
16403
|
+
"atav",
|
|
16404
|
+
"az",
|
|
16405
|
+
"azalek",
|
|
16406
|
+
"azirazañ",
|
|
16407
|
+
"azirazi",
|
|
16408
|
+
"azirazo",
|
|
16409
|
+
"azirazoc'h",
|
|
16410
|
+
"azirazomp",
|
|
16411
|
+
"azirazon",
|
|
16412
|
+
"azirazor",
|
|
16413
|
+
"azirazout",
|
|
16414
|
+
"b:",
|
|
16415
|
+
"ba",
|
|
16416
|
+
"ba'l",
|
|
16417
|
+
"ba'n",
|
|
16418
|
+
"ba'r",
|
|
16419
|
+
"bad",
|
|
16420
|
+
"bah",
|
|
16421
|
+
"bal",
|
|
16422
|
+
"ban",
|
|
16423
|
+
"bar",
|
|
16424
|
+
"bastañ",
|
|
16425
|
+
"befe",
|
|
16426
|
+
"bell",
|
|
16427
|
+
"benaos",
|
|
16428
|
+
"benn",
|
|
16429
|
+
"bennag",
|
|
16430
|
+
"bennak",
|
|
16431
|
+
"bennozh",
|
|
16432
|
+
"bep",
|
|
16433
|
+
"bepred",
|
|
16434
|
+
"berr",
|
|
16435
|
+
"berzh",
|
|
16436
|
+
"bet",
|
|
16437
|
+
"betek",
|
|
16438
|
+
"betra",
|
|
16439
|
+
"bev",
|
|
16440
|
+
"bevet",
|
|
16441
|
+
"bez",
|
|
16442
|
+
"bezañ",
|
|
16443
|
+
"beze",
|
|
16444
|
+
"bezent",
|
|
16445
|
+
"bezet",
|
|
16446
|
+
"bezh",
|
|
16447
|
+
"bezit",
|
|
16448
|
+
"bezomp",
|
|
16449
|
+
"bihan",
|
|
16450
|
+
"bije",
|
|
16451
|
+
"biou",
|
|
16452
|
+
"biskoazh",
|
|
16453
|
+
"blam",
|
|
16454
|
+
"bo",
|
|
16455
|
+
"boa",
|
|
16456
|
+
"bominapl",
|
|
16457
|
+
"boudoudom",
|
|
16458
|
+
"bouez",
|
|
16459
|
+
"boull",
|
|
16460
|
+
"boum",
|
|
16461
|
+
"bout",
|
|
16462
|
+
"bras",
|
|
16463
|
+
"brasañ",
|
|
16464
|
+
"brav",
|
|
16465
|
+
"bravo",
|
|
16466
|
+
"bremañ",
|
|
16467
|
+
"bres",
|
|
16468
|
+
"brokenn",
|
|
16469
|
+
"bronn",
|
|
16470
|
+
"brrr",
|
|
16471
|
+
"brutal",
|
|
16472
|
+
"buhezek",
|
|
16473
|
+
"c'h:",
|
|
16474
|
+
"c'haout",
|
|
16475
|
+
"c'he",
|
|
16476
|
+
"c'hem",
|
|
16477
|
+
"c'herz",
|
|
16478
|
+
"c'heñver",
|
|
16479
|
+
"c'hichen",
|
|
16480
|
+
"c'hiz",
|
|
16481
|
+
"c'hoazh",
|
|
16482
|
+
"c'horre",
|
|
16483
|
+
"c'houde",
|
|
16484
|
+
"c'houst",
|
|
16485
|
+
"c'hreiz",
|
|
16486
|
+
"c'hwec'h",
|
|
16487
|
+
"c'hwec'hvet",
|
|
16488
|
+
"c'hwezek",
|
|
16489
|
+
"c'hwi",
|
|
16490
|
+
"ch:",
|
|
16491
|
+
"chaous",
|
|
16492
|
+
"chik",
|
|
16493
|
+
"chit",
|
|
16494
|
+
"chom",
|
|
16495
|
+
"chut",
|
|
16496
|
+
"d'",
|
|
16497
|
+
"d'al",
|
|
16498
|
+
"d'an",
|
|
16499
|
+
"d'ar",
|
|
16500
|
+
"d'az",
|
|
16501
|
+
"d'e",
|
|
16502
|
+
"d'he",
|
|
16503
|
+
"d'ho",
|
|
16504
|
+
"d'hol",
|
|
16505
|
+
"d'hon",
|
|
16506
|
+
"d'hor",
|
|
16507
|
+
"d'o",
|
|
16508
|
+
"d'ober",
|
|
16509
|
+
"d'ul",
|
|
16510
|
+
"d'un",
|
|
16511
|
+
"d'ur",
|
|
16512
|
+
"d:",
|
|
16338
16513
|
"da",
|
|
16339
|
-
"
|
|
16340
|
-
"
|
|
16341
|
-
"
|
|
16342
|
-
"
|
|
16343
|
-
"
|
|
16344
|
-
"
|
|
16345
|
-
"
|
|
16346
|
-
"
|
|
16347
|
-
"
|
|
16348
|
-
"
|
|
16349
|
-
"
|
|
16350
|
-
"
|
|
16351
|
-
"
|
|
16352
|
-
"
|
|
16353
|
-
"
|
|
16514
|
+
"dak",
|
|
16515
|
+
"daka",
|
|
16516
|
+
"dal",
|
|
16517
|
+
"dalbezh",
|
|
16518
|
+
"dalc'hmat",
|
|
16519
|
+
"dalit",
|
|
16520
|
+
"damdost",
|
|
16521
|
+
"damheñvel",
|
|
16522
|
+
"damm",
|
|
16523
|
+
"dan",
|
|
16524
|
+
"danvez",
|
|
16525
|
+
"dao",
|
|
16526
|
+
"daol",
|
|
16527
|
+
"daonet",
|
|
16528
|
+
"daou",
|
|
16529
|
+
"daoust",
|
|
16530
|
+
"daouzek",
|
|
16531
|
+
"daouzekvet",
|
|
16532
|
+
"darn",
|
|
16533
|
+
"dastrewiñ",
|
|
16534
|
+
"dav",
|
|
16535
|
+
"davedoc'h",
|
|
16536
|
+
"davedomp",
|
|
16537
|
+
"davedon",
|
|
16538
|
+
"davedor",
|
|
16539
|
+
"davedout",
|
|
16540
|
+
"davet",
|
|
16541
|
+
"davetañ",
|
|
16542
|
+
"davete",
|
|
16543
|
+
"daveti",
|
|
16544
|
+
"daveto",
|
|
16545
|
+
"defe",
|
|
16546
|
+
"dehou",
|
|
16547
|
+
"dek",
|
|
16548
|
+
"dekvet",
|
|
16549
|
+
"den",
|
|
16550
|
+
"deoc'h",
|
|
16551
|
+
"deomp",
|
|
16552
|
+
"deor",
|
|
16553
|
+
"derc'hel",
|
|
16554
|
+
"deus",
|
|
16555
|
+
"dez",
|
|
16556
|
+
"deze",
|
|
16557
|
+
"dezhañ",
|
|
16558
|
+
"dezhe",
|
|
16559
|
+
"dezhi",
|
|
16560
|
+
"dezho",
|
|
16561
|
+
"di",
|
|
16562
|
+
"diabarzh",
|
|
16563
|
+
"diagent",
|
|
16564
|
+
"diar",
|
|
16565
|
+
"diaraok",
|
|
16566
|
+
"diavaez",
|
|
16567
|
+
"dibaoe",
|
|
16568
|
+
"dibaot",
|
|
16569
|
+
"dibar",
|
|
16570
|
+
"dic'halañ",
|
|
16571
|
+
"didiac'h",
|
|
16572
|
+
"dienn",
|
|
16573
|
+
"difer",
|
|
16574
|
+
"diganeoc'h",
|
|
16575
|
+
"diganeomp",
|
|
16576
|
+
"diganeor",
|
|
16577
|
+
"diganimp",
|
|
16578
|
+
"diganin",
|
|
16579
|
+
"diganit",
|
|
16580
|
+
"digant",
|
|
16581
|
+
"digantañ",
|
|
16582
|
+
"digante",
|
|
16583
|
+
"diganti",
|
|
16584
|
+
"diganto",
|
|
16585
|
+
"digemmesk",
|
|
16586
|
+
"diget",
|
|
16587
|
+
"digor",
|
|
16588
|
+
"digoret",
|
|
16589
|
+
"dija",
|
|
16590
|
+
"dije",
|
|
16591
|
+
"dimp",
|
|
16592
|
+
"din",
|
|
16593
|
+
"dinaou",
|
|
16594
|
+
"dindan",
|
|
16595
|
+
"dindanañ",
|
|
16596
|
+
"dindani",
|
|
16597
|
+
"dindano",
|
|
16598
|
+
"dindanoc'h",
|
|
16599
|
+
"dindanomp",
|
|
16600
|
+
"dindanon",
|
|
16601
|
+
"dindanor",
|
|
16602
|
+
"dindanout",
|
|
16603
|
+
"dioutañ",
|
|
16604
|
+
"dioute",
|
|
16605
|
+
"diouti",
|
|
16606
|
+
"diouto",
|
|
16607
|
+
"diouzh",
|
|
16608
|
+
"diouzhin",
|
|
16609
|
+
"diouzhit",
|
|
16610
|
+
"diouzhoc'h",
|
|
16611
|
+
"diouzhomp",
|
|
16612
|
+
"diouzhor",
|
|
16613
|
+
"dirak",
|
|
16614
|
+
"dirazañ",
|
|
16615
|
+
"dirazi",
|
|
16616
|
+
"dirazo",
|
|
16617
|
+
"dirazoc'h",
|
|
16618
|
+
"dirazomp",
|
|
16619
|
+
"dirazon",
|
|
16620
|
+
"dirazor",
|
|
16621
|
+
"dirazout",
|
|
16622
|
+
"disheñvel",
|
|
16623
|
+
"dispar",
|
|
16624
|
+
"distank",
|
|
16625
|
+
"dister",
|
|
16626
|
+
"disterañ",
|
|
16627
|
+
"disterig",
|
|
16628
|
+
"distro",
|
|
16629
|
+
"dit",
|
|
16630
|
+
"divaez",
|
|
16631
|
+
"diwar",
|
|
16632
|
+
"diwezhat",
|
|
16633
|
+
"diwezhañ",
|
|
16354
16634
|
"do",
|
|
16355
|
-
"
|
|
16356
|
-
"
|
|
16635
|
+
"doa",
|
|
16636
|
+
"doare",
|
|
16637
|
+
"dont",
|
|
16638
|
+
"dost",
|
|
16639
|
+
"doue",
|
|
16640
|
+
"douetus",
|
|
16641
|
+
"douez",
|
|
16642
|
+
"doug",
|
|
16643
|
+
"draou",
|
|
16644
|
+
"draoñ",
|
|
16645
|
+
"dre",
|
|
16646
|
+
"drede",
|
|
16647
|
+
"dreist",
|
|
16648
|
+
"dreistañ",
|
|
16649
|
+
"dreisti",
|
|
16650
|
+
"dreisto",
|
|
16651
|
+
"dreistoc'h",
|
|
16652
|
+
"dreistomp",
|
|
16653
|
+
"dreiston",
|
|
16654
|
+
"dreistor",
|
|
16655
|
+
"dreistout",
|
|
16656
|
+
"drek",
|
|
16657
|
+
"dreñv",
|
|
16658
|
+
"dring",
|
|
16659
|
+
"dro",
|
|
16660
|
+
"du",
|
|
16357
16661
|
"e",
|
|
16358
|
-
"
|
|
16359
|
-
"
|
|
16360
|
-
"
|
|
16361
|
-
"
|
|
16662
|
+
"e:",
|
|
16663
|
+
"eas",
|
|
16664
|
+
"ebet",
|
|
16665
|
+
"ec'h",
|
|
16666
|
+
"edo",
|
|
16667
|
+
"edoc'h",
|
|
16668
|
+
"edod",
|
|
16669
|
+
"edomp",
|
|
16670
|
+
"edon",
|
|
16671
|
+
"edont",
|
|
16672
|
+
"edos",
|
|
16673
|
+
"eer",
|
|
16674
|
+
"eeun",
|
|
16675
|
+
"efed",
|
|
16676
|
+
"egedoc'h",
|
|
16677
|
+
"egedomp",
|
|
16678
|
+
"egedon",
|
|
16679
|
+
"egedor",
|
|
16680
|
+
"egedout",
|
|
16681
|
+
"eget",
|
|
16682
|
+
"egetañ",
|
|
16683
|
+
"egete",
|
|
16684
|
+
"egeti",
|
|
16685
|
+
"egeto",
|
|
16686
|
+
"eh",
|
|
16687
|
+
"eil",
|
|
16688
|
+
"eilvet",
|
|
16689
|
+
"eizh",
|
|
16690
|
+
"eizhvet",
|
|
16691
|
+
"ejoc'h",
|
|
16692
|
+
"ejod",
|
|
16693
|
+
"ejomp",
|
|
16694
|
+
"ejont",
|
|
16695
|
+
"ejout",
|
|
16696
|
+
"el",
|
|
16362
16697
|
"em",
|
|
16363
|
-
"
|
|
16364
|
-
"
|
|
16365
|
-
"
|
|
16366
|
-
"
|
|
16367
|
-
"
|
|
16368
|
-
"
|
|
16369
|
-
"
|
|
16370
|
-
"
|
|
16371
|
-
"
|
|
16372
|
-
"
|
|
16698
|
+
"emaint",
|
|
16699
|
+
"emaoc'h",
|
|
16700
|
+
"emaomp",
|
|
16701
|
+
"emaon",
|
|
16702
|
+
"emaout",
|
|
16703
|
+
"emañ",
|
|
16704
|
+
"eme",
|
|
16705
|
+
"emeur",
|
|
16706
|
+
"emezañ",
|
|
16707
|
+
"emezi",
|
|
16708
|
+
"emezo",
|
|
16709
|
+
"emezoc'h",
|
|
16710
|
+
"emezomp",
|
|
16711
|
+
"emezon",
|
|
16712
|
+
"emezout",
|
|
16713
|
+
"emporzhiañ",
|
|
16714
|
+
"en",
|
|
16715
|
+
"end",
|
|
16716
|
+
"endan",
|
|
16717
|
+
"endra",
|
|
16718
|
+
"enep",
|
|
16719
|
+
"ennañ",
|
|
16720
|
+
"enni",
|
|
16721
|
+
"enno",
|
|
16722
|
+
"ennoc'h",
|
|
16723
|
+
"ennomp",
|
|
16724
|
+
"ennon",
|
|
16725
|
+
"ennor",
|
|
16726
|
+
"ennout",
|
|
16727
|
+
"enta",
|
|
16728
|
+
"eo",
|
|
16729
|
+
"eomp",
|
|
16730
|
+
"eont",
|
|
16731
|
+
"eor",
|
|
16732
|
+
"eot",
|
|
16733
|
+
"er",
|
|
16734
|
+
"erbet",
|
|
16735
|
+
"erfin",
|
|
16736
|
+
"esa",
|
|
16737
|
+
"esae",
|
|
16738
|
+
"espar",
|
|
16739
|
+
"estlamm",
|
|
16740
|
+
"estrañj",
|
|
16741
|
+
"eta",
|
|
16742
|
+
"etre",
|
|
16743
|
+
"etreoc'h",
|
|
16744
|
+
"etrezo",
|
|
16745
|
+
"etrezoc'h",
|
|
16746
|
+
"etrezomp",
|
|
16747
|
+
"etrezor",
|
|
16748
|
+
"euh",
|
|
16749
|
+
"eur",
|
|
16750
|
+
"eus",
|
|
16751
|
+
"evel",
|
|
16752
|
+
"evelato",
|
|
16753
|
+
"eveldoc'h",
|
|
16754
|
+
"eveldomp",
|
|
16755
|
+
"eveldon",
|
|
16756
|
+
"eveldor",
|
|
16757
|
+
"eveldout",
|
|
16758
|
+
"evelkent",
|
|
16759
|
+
"eveltañ",
|
|
16760
|
+
"evelte",
|
|
16761
|
+
"evelti",
|
|
16762
|
+
"evelto",
|
|
16763
|
+
"evidoc'h",
|
|
16764
|
+
"evidomp",
|
|
16765
|
+
"evidon",
|
|
16766
|
+
"evidor",
|
|
16767
|
+
"evidout",
|
|
16768
|
+
"evit",
|
|
16769
|
+
"evitañ",
|
|
16770
|
+
"evite",
|
|
16771
|
+
"eviti",
|
|
16772
|
+
"evito",
|
|
16773
|
+
"ez",
|
|
16774
|
+
"eñ",
|
|
16775
|
+
"f:",
|
|
16776
|
+
"fac'h",
|
|
16777
|
+
"fall",
|
|
16778
|
+
"fed",
|
|
16779
|
+
"feiz",
|
|
16780
|
+
"fenn",
|
|
16781
|
+
"fezh",
|
|
16782
|
+
"fin",
|
|
16783
|
+
"finsalvet",
|
|
16784
|
+
"foei",
|
|
16785
|
+
"fouilhezañ",
|
|
16786
|
+
"g:",
|
|
16787
|
+
"gallout",
|
|
16788
|
+
"ganeoc'h",
|
|
16789
|
+
"ganeomp",
|
|
16790
|
+
"ganin",
|
|
16791
|
+
"ganit",
|
|
16792
|
+
"gant",
|
|
16793
|
+
"gantañ",
|
|
16794
|
+
"ganti",
|
|
16795
|
+
"ganto",
|
|
16796
|
+
"gaout",
|
|
16797
|
+
"gast",
|
|
16798
|
+
"gein",
|
|
16799
|
+
"gellout",
|
|
16800
|
+
"genndost",
|
|
16801
|
+
"gentañ",
|
|
16802
|
+
"ger",
|
|
16803
|
+
"gerz",
|
|
16804
|
+
"get",
|
|
16805
|
+
"geñver",
|
|
16806
|
+
"gichen",
|
|
16807
|
+
"gin",
|
|
16808
|
+
"giz",
|
|
16809
|
+
"glan",
|
|
16810
|
+
"gloev",
|
|
16811
|
+
"goll",
|
|
16812
|
+
"gorre",
|
|
16813
|
+
"goude",
|
|
16814
|
+
"gouez",
|
|
16815
|
+
"gouezit",
|
|
16816
|
+
"gouezomp",
|
|
16817
|
+
"goulz",
|
|
16818
|
+
"gounnar",
|
|
16819
|
+
"gour",
|
|
16820
|
+
"goust",
|
|
16821
|
+
"gouze",
|
|
16822
|
+
"gouzout",
|
|
16823
|
+
"gra",
|
|
16824
|
+
"grak",
|
|
16825
|
+
"grec'h",
|
|
16826
|
+
"greiz",
|
|
16827
|
+
"grenn",
|
|
16828
|
+
"greomp",
|
|
16829
|
+
"grit",
|
|
16830
|
+
"groñs",
|
|
16831
|
+
"gutez",
|
|
16832
|
+
"gwall",
|
|
16833
|
+
"gwashoc'h",
|
|
16834
|
+
"gwazh",
|
|
16835
|
+
"gwech",
|
|
16836
|
+
"gwechall",
|
|
16837
|
+
"gwechoù",
|
|
16838
|
+
"gwell",
|
|
16839
|
+
"gwezh",
|
|
16840
|
+
"gwezhall",
|
|
16841
|
+
"gwezharall",
|
|
16842
|
+
"gwezhoù",
|
|
16843
|
+
"gwig",
|
|
16844
|
+
"gwirionez",
|
|
16845
|
+
"gwitibunan",
|
|
16846
|
+
"gêr",
|
|
16847
|
+
"h:",
|
|
16373
16848
|
"ha",
|
|
16374
|
-
"
|
|
16375
|
-
"
|
|
16376
|
-
"
|
|
16377
|
-
"
|
|
16378
|
-
"
|
|
16379
|
-
"
|
|
16380
|
-
"
|
|
16381
|
-
"
|
|
16382
|
-
"
|
|
16383
|
-
"
|
|
16384
|
-
"
|
|
16849
|
+
"hag",
|
|
16850
|
+
"han",
|
|
16851
|
+
"hanter",
|
|
16852
|
+
"hanterc'hantad",
|
|
16853
|
+
"hanterkantved",
|
|
16854
|
+
"harz",
|
|
16855
|
+
"hañ",
|
|
16856
|
+
"hañval",
|
|
16857
|
+
"he",
|
|
16858
|
+
"hebioù",
|
|
16859
|
+
"hec'h",
|
|
16860
|
+
"hei",
|
|
16861
|
+
"hein",
|
|
16862
|
+
"hem",
|
|
16863
|
+
"hemañ",
|
|
16864
|
+
"hen",
|
|
16865
|
+
"hend",
|
|
16866
|
+
"henhont",
|
|
16867
|
+
"henn",
|
|
16868
|
+
"hennezh",
|
|
16869
|
+
"hent",
|
|
16870
|
+
"hep",
|
|
16871
|
+
"hervez",
|
|
16872
|
+
"hervezañ",
|
|
16873
|
+
"hervezi",
|
|
16874
|
+
"hervezo",
|
|
16875
|
+
"hervezoc'h",
|
|
16876
|
+
"hervezomp",
|
|
16877
|
+
"hervezon",
|
|
16878
|
+
"hervezor",
|
|
16879
|
+
"hervezout",
|
|
16880
|
+
"heul",
|
|
16881
|
+
"heuliañ",
|
|
16882
|
+
"hevelep",
|
|
16883
|
+
"heverk",
|
|
16884
|
+
"heñvel",
|
|
16885
|
+
"heñvelat",
|
|
16886
|
+
"heñvelañ",
|
|
16887
|
+
"heñveliñ",
|
|
16888
|
+
"heñveloc'h",
|
|
16889
|
+
"heñvelout",
|
|
16890
|
+
"hi",
|
|
16891
|
+
"hilh",
|
|
16892
|
+
"hini",
|
|
16893
|
+
"hirie",
|
|
16894
|
+
"hirio",
|
|
16895
|
+
"hiziv",
|
|
16896
|
+
"hiziviken",
|
|
16897
|
+
"ho",
|
|
16898
|
+
"hoaliñ",
|
|
16899
|
+
"hoc'h",
|
|
16900
|
+
"hogen",
|
|
16901
|
+
"hogos",
|
|
16902
|
+
"hogozik",
|
|
16903
|
+
"hol",
|
|
16904
|
+
"holl",
|
|
16905
|
+
"holà",
|
|
16906
|
+
"homañ",
|
|
16907
|
+
"hon",
|
|
16908
|
+
"honhont",
|
|
16909
|
+
"honnezh",
|
|
16910
|
+
"hont",
|
|
16911
|
+
"hop",
|
|
16912
|
+
"hopala",
|
|
16913
|
+
"hor",
|
|
16914
|
+
"hou",
|
|
16915
|
+
"houp",
|
|
16916
|
+
"hudu",
|
|
16917
|
+
"hue",
|
|
16918
|
+
"hui",
|
|
16919
|
+
"hum",
|
|
16920
|
+
"hurrah",
|
|
16921
|
+
"i",
|
|
16922
|
+
"i:",
|
|
16923
|
+
"in",
|
|
16924
|
+
"int",
|
|
16925
|
+
"is",
|
|
16926
|
+
"ispisial",
|
|
16927
|
+
"isurzhiet",
|
|
16928
|
+
"it",
|
|
16929
|
+
"ivez",
|
|
16930
|
+
"izelañ",
|
|
16931
|
+
"j:",
|
|
16932
|
+
"just",
|
|
16933
|
+
"k:",
|
|
16934
|
+
"kae",
|
|
16935
|
+
"kaer",
|
|
16936
|
+
"kalon",
|
|
16937
|
+
"kalz",
|
|
16938
|
+
"kant",
|
|
16939
|
+
"kaout",
|
|
16940
|
+
"kar",
|
|
16941
|
+
"kazi",
|
|
16942
|
+
"keid",
|
|
16943
|
+
"kein",
|
|
16944
|
+
"keit",
|
|
16945
|
+
"kel",
|
|
16946
|
+
"kellies",
|
|
16947
|
+
"keloù",
|
|
16948
|
+
"kement",
|
|
16949
|
+
"ken",
|
|
16950
|
+
"kenkent",
|
|
16951
|
+
"kenkoulz",
|
|
16952
|
+
"kenment",
|
|
16953
|
+
"kent",
|
|
16954
|
+
"kentañ",
|
|
16955
|
+
"kentizh",
|
|
16956
|
+
"kentoc'h",
|
|
16957
|
+
"kentre",
|
|
16958
|
+
"ker",
|
|
16959
|
+
"kerkent",
|
|
16960
|
+
"kerz",
|
|
16961
|
+
"kerzh",
|
|
16962
|
+
"ket",
|
|
16963
|
+
"keta",
|
|
16964
|
+
"keñver",
|
|
16965
|
+
"keñverel",
|
|
16966
|
+
"keñverius",
|
|
16967
|
+
"kichen",
|
|
16968
|
+
"kichenik",
|
|
16969
|
+
"kit",
|
|
16970
|
+
"kiz",
|
|
16971
|
+
"klak",
|
|
16972
|
+
"klek",
|
|
16973
|
+
"klik",
|
|
16974
|
+
"komprenet",
|
|
16975
|
+
"komz",
|
|
16976
|
+
"kont",
|
|
16977
|
+
"korf",
|
|
16978
|
+
"korre",
|
|
16979
|
+
"koulskoude",
|
|
16980
|
+
"koulz",
|
|
16981
|
+
"koust",
|
|
16982
|
+
"krak",
|
|
16983
|
+
"krampouezh",
|
|
16984
|
+
"krec'h",
|
|
16985
|
+
"kreiz",
|
|
16986
|
+
"kuit",
|
|
16987
|
+
"kwir",
|
|
16988
|
+
"l:",
|
|
16989
|
+
"la",
|
|
16990
|
+
"laez",
|
|
16991
|
+
"laoskel",
|
|
16992
|
+
"laouen",
|
|
16993
|
+
"lavar",
|
|
16994
|
+
"lavaret",
|
|
16995
|
+
"lavarout",
|
|
16996
|
+
"lec'h",
|
|
16997
|
+
"lein",
|
|
16998
|
+
"leizh",
|
|
16999
|
+
"lerc'h",
|
|
17000
|
+
"leun",
|
|
17001
|
+
"leuskel",
|
|
17002
|
+
"lew",
|
|
17003
|
+
"lies",
|
|
17004
|
+
"liesañ",
|
|
17005
|
+
"lod",
|
|
17006
|
+
"lusk",
|
|
17007
|
+
"lâr",
|
|
17008
|
+
"lârout",
|
|
17009
|
+
"m:",
|
|
17010
|
+
"ma",
|
|
17011
|
+
"ma'z",
|
|
17012
|
+
"mac'h",
|
|
17013
|
+
"mac'hat",
|
|
17014
|
+
"mac'hañ",
|
|
17015
|
+
"mac'hoc'h",
|
|
17016
|
+
"mad",
|
|
17017
|
+
"maez",
|
|
17018
|
+
"maksimal",
|
|
17019
|
+
"mann",
|
|
17020
|
+
"mar",
|
|
17021
|
+
"mard",
|
|
17022
|
+
"marg",
|
|
17023
|
+
"marzh",
|
|
17024
|
+
"mat",
|
|
17025
|
+
"mañ",
|
|
17026
|
+
"me",
|
|
17027
|
+
"memes",
|
|
17028
|
+
"memestra",
|
|
17029
|
+
"merkapl",
|
|
17030
|
+
"mersi",
|
|
17031
|
+
"mes",
|
|
17032
|
+
"mesk",
|
|
17033
|
+
"met",
|
|
17034
|
+
"meur",
|
|
17035
|
+
"mil",
|
|
17036
|
+
"minimal",
|
|
17037
|
+
"moan",
|
|
17038
|
+
"moaniaat",
|
|
17039
|
+
"mod",
|
|
17040
|
+
"mont",
|
|
17041
|
+
"mout",
|
|
17042
|
+
"mui",
|
|
17043
|
+
"muiañ",
|
|
17044
|
+
"muioc'h",
|
|
17045
|
+
"n",
|
|
17046
|
+
"n'",
|
|
17047
|
+
"n:",
|
|
16385
17048
|
"na",
|
|
16386
|
-
"
|
|
16387
|
-
"
|
|
16388
|
-
"
|
|
16389
|
-
"
|
|
16390
|
-
"
|
|
16391
|
-
"
|
|
17049
|
+
"nag",
|
|
17050
|
+
"naontek",
|
|
17051
|
+
"naturel",
|
|
17052
|
+
"nav",
|
|
17053
|
+
"navet",
|
|
17054
|
+
"ne",
|
|
17055
|
+
"nebeudig",
|
|
17056
|
+
"nebeut",
|
|
17057
|
+
"nebeutañ",
|
|
17058
|
+
"nebeutoc'h",
|
|
17059
|
+
"neketa",
|
|
17060
|
+
"nemedoc'h",
|
|
17061
|
+
"nemedomp",
|
|
17062
|
+
"nemedon",
|
|
17063
|
+
"nemedor",
|
|
17064
|
+
"nemedout",
|
|
17065
|
+
"nemet",
|
|
17066
|
+
"nemetañ",
|
|
17067
|
+
"nemete",
|
|
17068
|
+
"nemeti",
|
|
17069
|
+
"nemeto",
|
|
17070
|
+
"nemeur",
|
|
17071
|
+
"neoac'h",
|
|
17072
|
+
"nepell",
|
|
17073
|
+
"nerzh",
|
|
17074
|
+
"nes",
|
|
17075
|
+
"neseser",
|
|
17076
|
+
"netra",
|
|
17077
|
+
"neubeudoù",
|
|
17078
|
+
"neuhe",
|
|
17079
|
+
"neuze",
|
|
17080
|
+
"nevez",
|
|
17081
|
+
"newazh",
|
|
17082
|
+
"nez",
|
|
17083
|
+
"ni",
|
|
17084
|
+
"nikun",
|
|
17085
|
+
"niverus",
|
|
17086
|
+
"nul",
|
|
16392
17087
|
"o",
|
|
16393
|
-
"
|
|
16394
|
-
"
|
|
16395
|
-
"
|
|
16396
|
-
"
|
|
16397
|
-
"
|
|
16398
|
-
"
|
|
16399
|
-
"
|
|
16400
|
-
"
|
|
16401
|
-
"
|
|
16402
|
-
"
|
|
16403
|
-
"
|
|
16404
|
-
"
|
|
16405
|
-
"
|
|
16406
|
-
"
|
|
16407
|
-
"
|
|
16408
|
-
"
|
|
16409
|
-
"
|
|
16410
|
-
"
|
|
16411
|
-
"
|
|
16412
|
-
"
|
|
16413
|
-
"
|
|
16414
|
-
"
|
|
16415
|
-
"
|
|
16416
|
-
"
|
|
17088
|
+
"o:",
|
|
17089
|
+
"oa",
|
|
17090
|
+
"oac'h",
|
|
17091
|
+
"oad",
|
|
17092
|
+
"oamp",
|
|
17093
|
+
"oan",
|
|
17094
|
+
"oant",
|
|
17095
|
+
"oar",
|
|
17096
|
+
"oas",
|
|
17097
|
+
"ober",
|
|
17098
|
+
"oc'h",
|
|
17099
|
+
"oc'ho",
|
|
17100
|
+
"oc'hola",
|
|
17101
|
+
"oc'hpenn",
|
|
17102
|
+
"oh",
|
|
17103
|
+
"ohe",
|
|
17104
|
+
"ollé",
|
|
17105
|
+
"olole",
|
|
17106
|
+
"olé",
|
|
17107
|
+
"omp",
|
|
17108
|
+
"on",
|
|
17109
|
+
"ordin",
|
|
17110
|
+
"ordinal",
|
|
17111
|
+
"ouejoc'h",
|
|
17112
|
+
"ouejod",
|
|
17113
|
+
"ouejomp",
|
|
17114
|
+
"ouejont",
|
|
17115
|
+
"ouejout",
|
|
17116
|
+
"ouek",
|
|
17117
|
+
"ouezas",
|
|
17118
|
+
"ouezi",
|
|
17119
|
+
"ouezimp",
|
|
17120
|
+
"ouezin",
|
|
17121
|
+
"ouezint",
|
|
17122
|
+
"ouezis",
|
|
17123
|
+
"ouezo",
|
|
17124
|
+
"ouezoc'h",
|
|
17125
|
+
"ouezor",
|
|
17126
|
+
"ouf",
|
|
17127
|
+
"oufe",
|
|
17128
|
+
"oufec'h",
|
|
17129
|
+
"oufed",
|
|
17130
|
+
"oufemp",
|
|
17131
|
+
"oufen",
|
|
17132
|
+
"oufent",
|
|
17133
|
+
"oufes",
|
|
17134
|
+
"ouie",
|
|
17135
|
+
"ouiec'h",
|
|
17136
|
+
"ouied",
|
|
17137
|
+
"ouiemp",
|
|
17138
|
+
"ouien",
|
|
17139
|
+
"ouient",
|
|
17140
|
+
"ouies",
|
|
17141
|
+
"ouije",
|
|
17142
|
+
"ouijec'h",
|
|
17143
|
+
"ouijed",
|
|
17144
|
+
"ouijemp",
|
|
17145
|
+
"ouijen",
|
|
17146
|
+
"ouijent",
|
|
17147
|
+
"ouijes",
|
|
17148
|
+
"out",
|
|
17149
|
+
"outañ",
|
|
17150
|
+
"outi",
|
|
17151
|
+
"outo",
|
|
17152
|
+
"ouzer",
|
|
17153
|
+
"ouzh",
|
|
17154
|
+
"ouzhin",
|
|
17155
|
+
"ouzhit",
|
|
17156
|
+
"ouzhoc'h",
|
|
17157
|
+
"ouzhomp",
|
|
17158
|
+
"ouzhor",
|
|
17159
|
+
"ouzhpenn",
|
|
17160
|
+
"ouzhpennik",
|
|
17161
|
+
"ouzoc'h",
|
|
17162
|
+
"ouzomp",
|
|
17163
|
+
"ouzon",
|
|
17164
|
+
"ouzont",
|
|
17165
|
+
"ouzout",
|
|
17166
|
+
"p'",
|
|
17167
|
+
"p:",
|
|
17168
|
+
"pa",
|
|
17169
|
+
"pad",
|
|
17170
|
+
"padal",
|
|
17171
|
+
"paf",
|
|
17172
|
+
"pan",
|
|
17173
|
+
"panevedeoc'h",
|
|
17174
|
+
"panevedo",
|
|
17175
|
+
"panevedomp",
|
|
17176
|
+
"panevedon",
|
|
17177
|
+
"panevedout",
|
|
17178
|
+
"panevet",
|
|
17179
|
+
"panevetañ",
|
|
17180
|
+
"paneveti",
|
|
17181
|
+
"pas",
|
|
17182
|
+
"paseet",
|
|
17183
|
+
"pe",
|
|
17184
|
+
"peadra",
|
|
17185
|
+
"peder",
|
|
17186
|
+
"pedervet",
|
|
17187
|
+
"pedervetvet",
|
|
17188
|
+
"pefe",
|
|
17189
|
+
"pegeit",
|
|
17190
|
+
"pegement",
|
|
17191
|
+
"pegen",
|
|
17192
|
+
"pegiz",
|
|
17193
|
+
"pegoulz",
|
|
17194
|
+
"pehini",
|
|
17195
|
+
"pelec'h",
|
|
17196
|
+
"pell",
|
|
17197
|
+
"pemod",
|
|
17198
|
+
"pemp",
|
|
17199
|
+
"pempved",
|
|
17200
|
+
"pemzek",
|
|
17201
|
+
"penaos",
|
|
17202
|
+
"penn",
|
|
17203
|
+
"peogwir",
|
|
17204
|
+
"peotramant",
|
|
17205
|
+
"pep",
|
|
17206
|
+
"perak",
|
|
17207
|
+
"perc'hennañ",
|
|
17208
|
+
"pergen",
|
|
17209
|
+
"permetiñ",
|
|
17210
|
+
"peseurt",
|
|
17211
|
+
"pet",
|
|
17212
|
+
"petiaoul",
|
|
17213
|
+
"petoare",
|
|
17214
|
+
"petra",
|
|
17215
|
+
"peur",
|
|
17216
|
+
"peurgetket",
|
|
17217
|
+
"peurheñvel",
|
|
17218
|
+
"peurliesañ",
|
|
17219
|
+
"peurvuiañ",
|
|
17220
|
+
"peus",
|
|
17221
|
+
"peustost",
|
|
17222
|
+
"peuz",
|
|
17223
|
+
"pevar",
|
|
17224
|
+
"pevare",
|
|
17225
|
+
"pevarevet",
|
|
17226
|
+
"pevarzek",
|
|
17227
|
+
"pez",
|
|
17228
|
+
"peze",
|
|
17229
|
+
"pezh",
|
|
17230
|
+
"pff",
|
|
17231
|
+
"pfft",
|
|
17232
|
+
"pfut",
|
|
17233
|
+
"picher",
|
|
17234
|
+
"pif",
|
|
17235
|
+
"pife",
|
|
17236
|
+
"pign",
|
|
17237
|
+
"pije",
|
|
17238
|
+
"pikol",
|
|
17239
|
+
"pitiaoul",
|
|
17240
|
+
"piv",
|
|
17241
|
+
"plaouf",
|
|
17242
|
+
"plok",
|
|
17243
|
+
"plouf",
|
|
17244
|
+
"po",
|
|
17245
|
+
"poa",
|
|
17246
|
+
"poelladus",
|
|
17247
|
+
"pof",
|
|
17248
|
+
"pok",
|
|
17249
|
+
"posupl",
|
|
17250
|
+
"pouah",
|
|
17251
|
+
"pourc'henn",
|
|
17252
|
+
"prest",
|
|
17253
|
+
"prestik",
|
|
17254
|
+
"prim",
|
|
17255
|
+
"prin",
|
|
17256
|
+
"provostapl",
|
|
17257
|
+
"pst",
|
|
17258
|
+
"pu",
|
|
17259
|
+
"pur",
|
|
17260
|
+
"r:",
|
|
17261
|
+
"ra",
|
|
17262
|
+
"rae",
|
|
17263
|
+
"raec'h",
|
|
17264
|
+
"raed",
|
|
17265
|
+
"raemp",
|
|
17266
|
+
"raen",
|
|
17267
|
+
"raent",
|
|
17268
|
+
"raes",
|
|
17269
|
+
"rafe",
|
|
17270
|
+
"rafec'h",
|
|
17271
|
+
"rafed",
|
|
17272
|
+
"rafemp",
|
|
17273
|
+
"rafen",
|
|
17274
|
+
"rafent",
|
|
17275
|
+
"rafes",
|
|
17276
|
+
"rag",
|
|
17277
|
+
"raimp",
|
|
17278
|
+
"raint",
|
|
17279
|
+
"raio",
|
|
17280
|
+
"raje",
|
|
17281
|
+
"rajec'h",
|
|
17282
|
+
"rajed",
|
|
17283
|
+
"rajemp",
|
|
17284
|
+
"rajen",
|
|
17285
|
+
"rajent",
|
|
17286
|
+
"rajes",
|
|
17287
|
+
"rak",
|
|
17288
|
+
"ral",
|
|
17289
|
+
"ran",
|
|
17290
|
+
"rankout",
|
|
17291
|
+
"raok",
|
|
17292
|
+
"razh",
|
|
17293
|
+
"re",
|
|
17294
|
+
"reas",
|
|
17295
|
+
"reer",
|
|
17296
|
+
"regennoù",
|
|
17297
|
+
"reiñ",
|
|
17298
|
+
"rejoc'h",
|
|
17299
|
+
"rejod",
|
|
17300
|
+
"rejomp",
|
|
17301
|
+
"rejont",
|
|
17302
|
+
"rejout",
|
|
17303
|
+
"rener",
|
|
17304
|
+
"rentañ",
|
|
17305
|
+
"reoc'h",
|
|
17306
|
+
"reomp",
|
|
17307
|
+
"reont",
|
|
17308
|
+
"reor",
|
|
17309
|
+
"reot",
|
|
17310
|
+
"resis",
|
|
17311
|
+
"ret",
|
|
17312
|
+
"reve",
|
|
17313
|
+
"rez",
|
|
17314
|
+
"ri",
|
|
17315
|
+
"rik",
|
|
17316
|
+
"rin",
|
|
17317
|
+
"ris",
|
|
17318
|
+
"rit",
|
|
17319
|
+
"rouez",
|
|
17320
|
+
"s:",
|
|
17321
|
+
"sac'h",
|
|
17322
|
+
"sant",
|
|
17323
|
+
"sav",
|
|
17324
|
+
"sañset",
|
|
16417
17325
|
"se",
|
|
16418
|
-
"
|
|
16419
|
-
"
|
|
16420
|
-
"
|
|
16421
|
-
"
|
|
16422
|
-
"
|
|
16423
|
-
"
|
|
16424
|
-
"
|
|
16425
|
-
"
|
|
16426
|
-
"
|
|
17326
|
+
"sed",
|
|
17327
|
+
"seitek",
|
|
17328
|
+
"seizh",
|
|
17329
|
+
"seizhvet",
|
|
17330
|
+
"sell",
|
|
17331
|
+
"sellit",
|
|
17332
|
+
"ser",
|
|
17333
|
+
"setu",
|
|
17334
|
+
"seul",
|
|
17335
|
+
"seurt",
|
|
17336
|
+
"siwazh",
|
|
17337
|
+
"skignañ",
|
|
17338
|
+
"skoaz",
|
|
17339
|
+
"skouer",
|
|
17340
|
+
"sort",
|
|
17341
|
+
"souden",
|
|
17342
|
+
"souvitañ",
|
|
17343
|
+
"soñj",
|
|
17344
|
+
"speriañ",
|
|
17345
|
+
"spririñ",
|
|
17346
|
+
"stad",
|
|
17347
|
+
"stlabezañ",
|
|
17348
|
+
"stop",
|
|
17349
|
+
"stranañ",
|
|
17350
|
+
"strewiñ",
|
|
17351
|
+
"strishaat",
|
|
17352
|
+
"stumm",
|
|
17353
|
+
"sujed",
|
|
17354
|
+
"surtoud",
|
|
17355
|
+
"t:",
|
|
17356
|
+
"ta",
|
|
17357
|
+
"taer",
|
|
17358
|
+
"tailh",
|
|
17359
|
+
"tak",
|
|
16427
17360
|
"tal",
|
|
16428
|
-
"
|
|
16429
|
-
"
|
|
17361
|
+
"talvoudegezh",
|
|
17362
|
+
"tamm",
|
|
17363
|
+
"tanav",
|
|
17364
|
+
"taol",
|
|
17365
|
+
"te",
|
|
17366
|
+
"techet",
|
|
17367
|
+
"teir",
|
|
17368
|
+
"teirvet",
|
|
17369
|
+
"telt",
|
|
17370
|
+
"teltenn",
|
|
16430
17371
|
"teus",
|
|
16431
|
-
"
|
|
16432
|
-
"
|
|
16433
|
-
"
|
|
16434
|
-
"
|
|
16435
|
-
"
|
|
16436
|
-
"
|
|
16437
|
-
"
|
|
16438
|
-
"
|
|
16439
|
-
"
|
|
16440
|
-
"
|
|
16441
|
-
"
|
|
17372
|
+
"teut",
|
|
17373
|
+
"teuteu",
|
|
17374
|
+
"ti",
|
|
17375
|
+
"tik",
|
|
17376
|
+
"toa",
|
|
17377
|
+
"tok",
|
|
17378
|
+
"tost",
|
|
17379
|
+
"tostig",
|
|
17380
|
+
"toud",
|
|
17381
|
+
"touesk",
|
|
17382
|
+
"touez",
|
|
17383
|
+
"toull",
|
|
17384
|
+
"tra",
|
|
17385
|
+
"trantenn",
|
|
17386
|
+
"traoñ",
|
|
17387
|
+
"trawalc'h",
|
|
17388
|
+
"tre",
|
|
17389
|
+
"trede",
|
|
17390
|
+
"tregont",
|
|
17391
|
+
"tremenet",
|
|
17392
|
+
"tri",
|
|
17393
|
+
"trivet",
|
|
17394
|
+
"triwec'h",
|
|
17395
|
+
"trizek",
|
|
17396
|
+
"tro",
|
|
17397
|
+
"trugarez",
|
|
17398
|
+
"trumm",
|
|
17399
|
+
"tsoin",
|
|
17400
|
+
"tsouin",
|
|
17401
|
+
"tu",
|
|
17402
|
+
"tud",
|
|
17403
|
+
"u:",
|
|
17404
|
+
"ugent",
|
|
17405
|
+
"uhel",
|
|
17406
|
+
"uhelañ",
|
|
17407
|
+
"ul",
|
|
17408
|
+
"un",
|
|
17409
|
+
"unan",
|
|
17410
|
+
"unanez",
|
|
17411
|
+
"unanig",
|
|
17412
|
+
"unnek",
|
|
17413
|
+
"unnekvet",
|
|
17414
|
+
"ur",
|
|
17415
|
+
"urzh",
|
|
17416
|
+
"us",
|
|
17417
|
+
"v:",
|
|
17418
|
+
"va",
|
|
17419
|
+
"vale",
|
|
17420
|
+
"van",
|
|
17421
|
+
"vare",
|
|
17422
|
+
"vat",
|
|
17423
|
+
"vefe",
|
|
17424
|
+
"vefec'h",
|
|
17425
|
+
"vefed",
|
|
17426
|
+
"vefemp",
|
|
17427
|
+
"vefen",
|
|
17428
|
+
"vefent",
|
|
17429
|
+
"vefes",
|
|
17430
|
+
"vesk",
|
|
17431
|
+
"vete",
|
|
17432
|
+
"vez",
|
|
17433
|
+
"vezan",
|
|
17434
|
+
"vezañ",
|
|
17435
|
+
"veze",
|
|
17436
|
+
"vezec'h",
|
|
17437
|
+
"vezed",
|
|
17438
|
+
"vezemp",
|
|
17439
|
+
"vezen",
|
|
17440
|
+
"vezent",
|
|
17441
|
+
"vezer",
|
|
17442
|
+
"vezes",
|
|
17443
|
+
"vezez",
|
|
17444
|
+
"vezit",
|
|
17445
|
+
"vezomp",
|
|
17446
|
+
"vezont",
|
|
17447
|
+
"vi",
|
|
17448
|
+
"vihan",
|
|
17449
|
+
"vihanañ",
|
|
17450
|
+
"vije",
|
|
17451
|
+
"vijec'h",
|
|
17452
|
+
"vijed",
|
|
17453
|
+
"vijemp",
|
|
17454
|
+
"vijen",
|
|
17455
|
+
"vijent",
|
|
17456
|
+
"vijes",
|
|
17457
|
+
"viken",
|
|
17458
|
+
"vimp",
|
|
17459
|
+
"vin",
|
|
17460
|
+
"vint",
|
|
17461
|
+
"vior",
|
|
17462
|
+
"viot",
|
|
17463
|
+
"virviken",
|
|
17464
|
+
"viskoazh",
|
|
17465
|
+
"vlan",
|
|
17466
|
+
"vlaou",
|
|
17467
|
+
"vo",
|
|
17468
|
+
"vod",
|
|
17469
|
+
"voe",
|
|
17470
|
+
"voec'h",
|
|
17471
|
+
"voed",
|
|
17472
|
+
"voemp",
|
|
17473
|
+
"voen",
|
|
17474
|
+
"voent",
|
|
17475
|
+
"voes",
|
|
17476
|
+
"vont",
|
|
17477
|
+
"vostapl",
|
|
17478
|
+
"vrac'h",
|
|
17479
|
+
"vrasañ",
|
|
17480
|
+
"vremañ",
|
|
17481
|
+
"w:",
|
|
17482
|
+
"walc'h",
|
|
17483
|
+
"war",
|
|
17484
|
+
"warnañ",
|
|
17485
|
+
"warni",
|
|
17486
|
+
"warno",
|
|
17487
|
+
"warnoc'h",
|
|
17488
|
+
"warnomp",
|
|
17489
|
+
"warnon",
|
|
17490
|
+
"warnor",
|
|
17491
|
+
"warnout",
|
|
17492
|
+
"wazh",
|
|
17493
|
+
"wech",
|
|
17494
|
+
"wechoù",
|
|
17495
|
+
"well",
|
|
17496
|
+
"y:",
|
|
17497
|
+
"you",
|
|
17498
|
+
"youadenn",
|
|
17499
|
+
"youc'hadenn",
|
|
17500
|
+
"youc'hou",
|
|
17501
|
+
"z:",
|
|
17502
|
+
"za",
|
|
17503
|
+
"zan",
|
|
17504
|
+
"zaw",
|
|
17505
|
+
"zeu",
|
|
17506
|
+
"zi",
|
|
17507
|
+
"ziar",
|
|
17508
|
+
"zigarez",
|
|
17509
|
+
"ziget",
|
|
17510
|
+
"zindan",
|
|
17511
|
+
"zioc'h",
|
|
17512
|
+
"ziouzh",
|
|
17513
|
+
"zirak",
|
|
17514
|
+
"zivout",
|
|
17515
|
+
"ziwar",
|
|
17516
|
+
"ziwezhañ",
|
|
17517
|
+
"zo",
|
|
17518
|
+
"zoken",
|
|
17519
|
+
"zokenoc'h",
|
|
17520
|
+
"zouesk",
|
|
17521
|
+
"zouez",
|
|
17522
|
+
"zro",
|
|
17523
|
+
"zu"
|
|
16442
17524
|
];
|
|
16443
17525
|
const bul = [
|
|
16444
17526
|
"а",
|
|
@@ -28094,22 +29176,32 @@ flowchart TD
|
|
|
28094
29176
|
"şöyle"
|
|
28095
29177
|
];
|
|
28096
29178
|
const ukr = [
|
|
29179
|
+
"а",
|
|
29180
|
+
"або",
|
|
28097
29181
|
"авжеж",
|
|
28098
29182
|
"адже",
|
|
29183
|
+
"аж",
|
|
28099
29184
|
"але",
|
|
29185
|
+
"ані",
|
|
28100
29186
|
"б",
|
|
28101
29187
|
"без",
|
|
29188
|
+
"би",
|
|
29189
|
+
"бо",
|
|
28102
29190
|
"був",
|
|
28103
29191
|
"була",
|
|
28104
29192
|
"були",
|
|
28105
29193
|
"було",
|
|
28106
29194
|
"бути",
|
|
28107
29195
|
"більш",
|
|
29196
|
+
"в",
|
|
28108
29197
|
"вам",
|
|
29198
|
+
"вами",
|
|
28109
29199
|
"вас",
|
|
28110
29200
|
"весь",
|
|
29201
|
+
"вже",
|
|
28111
29202
|
"вздовж",
|
|
28112
29203
|
"ви",
|
|
29204
|
+
"від",
|
|
28113
29205
|
"вниз",
|
|
28114
29206
|
"внизу",
|
|
28115
29207
|
"вона",
|
|
@@ -28118,55 +29210,138 @@ flowchart TD
|
|
|
28118
29210
|
"все",
|
|
28119
29211
|
"всередині",
|
|
28120
29212
|
"всіх",
|
|
29213
|
+
"вся",
|
|
28121
29214
|
"від",
|
|
28122
29215
|
"він",
|
|
28123
29216
|
"да",
|
|
28124
29217
|
"давай",
|
|
28125
29218
|
"давати",
|
|
28126
29219
|
"де",
|
|
29220
|
+
"десь",
|
|
28127
29221
|
"дещо",
|
|
28128
29222
|
"для",
|
|
28129
29223
|
"до",
|
|
29224
|
+
"є",
|
|
29225
|
+
"ж",
|
|
29226
|
+
"же",
|
|
28130
29227
|
"з",
|
|
29228
|
+
"за",
|
|
28131
29229
|
"завжди",
|
|
28132
29230
|
"замість",
|
|
29231
|
+
"зі",
|
|
29232
|
+
"і",
|
|
29233
|
+
"із",
|
|
29234
|
+
"інших",
|
|
29235
|
+
"її",
|
|
29236
|
+
"їй",
|
|
29237
|
+
"їм",
|
|
29238
|
+
"їх",
|
|
28133
29239
|
"й",
|
|
29240
|
+
"його",
|
|
29241
|
+
"йому",
|
|
28134
29242
|
"коли",
|
|
28135
29243
|
"ледве",
|
|
29244
|
+
"лиш",
|
|
28136
29245
|
"майже",
|
|
29246
|
+
"мене",
|
|
29247
|
+
"мені",
|
|
28137
29248
|
"ми",
|
|
29249
|
+
"між",
|
|
29250
|
+
"мій",
|
|
29251
|
+
"мною",
|
|
29252
|
+
"мов",
|
|
29253
|
+
"мого",
|
|
29254
|
+
"моєї",
|
|
29255
|
+
"моє",
|
|
29256
|
+
"може",
|
|
29257
|
+
"мої",
|
|
29258
|
+
"моїх",
|
|
29259
|
+
"моя",
|
|
29260
|
+
"на",
|
|
29261
|
+
"над",
|
|
28138
29262
|
"навколо",
|
|
28139
29263
|
"навіть",
|
|
28140
29264
|
"нам",
|
|
29265
|
+
"нами",
|
|
29266
|
+
"нас",
|
|
29267
|
+
"наче",
|
|
29268
|
+
"наш",
|
|
29269
|
+
"не",
|
|
29270
|
+
"нє",
|
|
29271
|
+
"неї",
|
|
29272
|
+
"нема",
|
|
29273
|
+
"немов",
|
|
29274
|
+
"неначе",
|
|
29275
|
+
"нею",
|
|
29276
|
+
"ним",
|
|
29277
|
+
"ними",
|
|
29278
|
+
"них",
|
|
29279
|
+
"ні",
|
|
29280
|
+
"ніби",
|
|
29281
|
+
"ніщо",
|
|
29282
|
+
"нього",
|
|
29283
|
+
"о",
|
|
29284
|
+
"ось",
|
|
28141
29285
|
"от",
|
|
28142
29286
|
"отже",
|
|
28143
29287
|
"отож",
|
|
29288
|
+
"під",
|
|
29289
|
+
"по",
|
|
28144
29290
|
"поза",
|
|
28145
29291
|
"про",
|
|
28146
29292
|
"під",
|
|
29293
|
+
"сам",
|
|
29294
|
+
"сама",
|
|
29295
|
+
"свій",
|
|
29296
|
+
"свої",
|
|
29297
|
+
"своя",
|
|
29298
|
+
"свою",
|
|
29299
|
+
"себе",
|
|
29300
|
+
"собі",
|
|
28147
29301
|
"та",
|
|
29302
|
+
"там",
|
|
28148
29303
|
"так",
|
|
29304
|
+
"така",
|
|
28149
29305
|
"такий",
|
|
28150
29306
|
"також",
|
|
29307
|
+
"твій",
|
|
29308
|
+
"твого",
|
|
29309
|
+
"твоєї",
|
|
29310
|
+
"твої",
|
|
29311
|
+
"твоя",
|
|
28151
29312
|
"те",
|
|
29313
|
+
"тебе",
|
|
28152
29314
|
"ти",
|
|
29315
|
+
"ті",
|
|
29316
|
+
"тільки",
|
|
29317
|
+
"то",
|
|
29318
|
+
"тобі",
|
|
29319
|
+
"тобою",
|
|
28153
29320
|
"тобто",
|
|
29321
|
+
"тоді",
|
|
28154
29322
|
"тож",
|
|
29323
|
+
"той",
|
|
28155
29324
|
"тощо",
|
|
29325
|
+
"тут",
|
|
29326
|
+
"у",
|
|
29327
|
+
"хіба",
|
|
29328
|
+
"хоч",
|
|
28156
29329
|
"хоча",
|
|
28157
29330
|
"це",
|
|
28158
29331
|
"цей",
|
|
29332
|
+
"ці",
|
|
29333
|
+
"ця",
|
|
28159
29334
|
"чи",
|
|
28160
29335
|
"чого",
|
|
29336
|
+
"ще",
|
|
28161
29337
|
"що",
|
|
29338
|
+
"щоб",
|
|
29339
|
+
"щось",
|
|
29340
|
+
"я",
|
|
28162
29341
|
"як",
|
|
29342
|
+
"яка",
|
|
28163
29343
|
"який",
|
|
28164
|
-
"якої"
|
|
28165
|
-
"є",
|
|
28166
|
-
"із",
|
|
28167
|
-
"інших",
|
|
28168
|
-
"їх",
|
|
28169
|
-
"її"
|
|
29344
|
+
"якої"
|
|
28170
29345
|
];
|
|
28171
29346
|
const urd = [
|
|
28172
29347
|
"آئی",
|
|
@@ -29164,7 +30339,14 @@ flowchart TD
|
|
|
29164
30339
|
const AUTH_TOKEN_KEY = "tinacms-auth";
|
|
29165
30340
|
const authenticate = (clientId, frontendUrl) => {
|
|
29166
30341
|
return new Promise((resolve) => {
|
|
29167
|
-
|
|
30342
|
+
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
30343
|
+
const authTab = popupWindow(
|
|
30344
|
+
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
30345
|
+
"_blank",
|
|
30346
|
+
window,
|
|
30347
|
+
1e3,
|
|
30348
|
+
700
|
|
30349
|
+
);
|
|
29168
30350
|
window.addEventListener("message", function(e) {
|
|
29169
30351
|
if (e.data.source === TINA_LOGIN_EVENT) {
|
|
29170
30352
|
if (authTab) {
|
|
@@ -29177,14 +30359,6 @@ flowchart TD
|
|
|
29177
30359
|
});
|
|
29178
30360
|
}
|
|
29179
30361
|
});
|
|
29180
|
-
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
29181
|
-
authTab = popupWindow(
|
|
29182
|
-
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
29183
|
-
"_blank",
|
|
29184
|
-
window,
|
|
29185
|
-
1e3,
|
|
29186
|
-
700
|
|
29187
|
-
);
|
|
29188
30362
|
});
|
|
29189
30363
|
};
|
|
29190
30364
|
const DefaultSessionProvider = ({
|
|
@@ -29890,21 +31064,352 @@ mutation addPendingDocumentMutation(
|
|
|
29890
31064
|
!submitting && name
|
|
29891
31065
|
);
|
|
29892
31066
|
};
|
|
29893
|
-
|
|
29894
|
-
|
|
29895
|
-
|
|
29896
|
-
|
|
29897
|
-
|
|
29898
|
-
|
|
29899
|
-
|
|
29900
|
-
|
|
29901
|
-
|
|
29902
|
-
if (!config.code) {
|
|
29903
|
-
return;
|
|
31067
|
+
class TinaAdminApi {
|
|
31068
|
+
constructor(cms) {
|
|
31069
|
+
var _a, _b, _c, _d;
|
|
31070
|
+
this.maxSearchIndexFieldLength = 100;
|
|
31071
|
+
this.api = cms.api.tina;
|
|
31072
|
+
this.schema = cms.api.tina.schema;
|
|
31073
|
+
if (cms.api.search && ((_a = cms.api.search) == null ? void 0 : _a.supportsClientSideIndexing())) {
|
|
31074
|
+
this.searchClient = cms.api.searchClient;
|
|
31075
|
+
this.maxSearchIndexFieldLength = ((_d = (_c = (_b = this.schema.config) == null ? void 0 : _b.config) == null ? void 0 : _c.search) == null ? void 0 : _d.maxSearchIndexFieldLength) || 100;
|
|
29904
31076
|
}
|
|
29905
|
-
|
|
29906
|
-
|
|
29907
|
-
|
|
31077
|
+
}
|
|
31078
|
+
async isAuthenticated() {
|
|
31079
|
+
return await this.api.authProvider.isAuthenticated();
|
|
31080
|
+
}
|
|
31081
|
+
async checkGraphqlSchema({ localSchema }) {
|
|
31082
|
+
const schemaFromCloud = await this.api.getSchema();
|
|
31083
|
+
const schema1 = schemaFromCloud;
|
|
31084
|
+
const schema2 = graphql.buildSchema(graphql.print(localSchema));
|
|
31085
|
+
const diffOutput = await core.diff(schema1, schema2);
|
|
31086
|
+
if (diffOutput.length > 0) {
|
|
31087
|
+
return false;
|
|
31088
|
+
} else {
|
|
31089
|
+
return true;
|
|
31090
|
+
}
|
|
31091
|
+
}
|
|
31092
|
+
fetchCollections() {
|
|
31093
|
+
return this.schema.getCollections();
|
|
31094
|
+
}
|
|
31095
|
+
async renameDocument({ collection, relativePath: relativePath2, newRelativePath }) {
|
|
31096
|
+
await this.api.request(
|
|
31097
|
+
`#graphql
|
|
31098
|
+
mutation RenameDocument($collection: String!, $relativePath: String! $newRelativePath: String!) {
|
|
31099
|
+
updateDocument(collection: $collection, relativePath: $relativePath, params: {relativePath: $newRelativePath}){
|
|
31100
|
+
__typename
|
|
31101
|
+
}
|
|
31102
|
+
}
|
|
31103
|
+
`,
|
|
31104
|
+
{ variables: { collection, relativePath: relativePath2, newRelativePath } }
|
|
31105
|
+
);
|
|
31106
|
+
if (this.searchClient) {
|
|
31107
|
+
const { document: doc } = await this.fetchDocument(
|
|
31108
|
+
collection.name,
|
|
31109
|
+
newRelativePath
|
|
31110
|
+
);
|
|
31111
|
+
const processed = processDocumentForIndexing(
|
|
31112
|
+
doc["_values"],
|
|
31113
|
+
`${collection.path}/${newRelativePath}`,
|
|
31114
|
+
collection,
|
|
31115
|
+
this.maxSearchIndexFieldLength
|
|
31116
|
+
);
|
|
31117
|
+
await this.searchClient.put([processed]);
|
|
31118
|
+
await this.searchClient.del([`${collection.name}:${relativePath2}`]);
|
|
31119
|
+
}
|
|
31120
|
+
}
|
|
31121
|
+
async deleteDocument({
|
|
31122
|
+
collection,
|
|
31123
|
+
relativePath: relativePath2
|
|
31124
|
+
}) {
|
|
31125
|
+
var _a;
|
|
31126
|
+
await this.api.request(
|
|
31127
|
+
`#graphql
|
|
31128
|
+
mutation DeleteDocument($collection: String!, $relativePath: String! ){
|
|
31129
|
+
deleteDocument(collection: $collection, relativePath: $relativePath){
|
|
31130
|
+
__typename
|
|
31131
|
+
}
|
|
31132
|
+
}`,
|
|
31133
|
+
{ variables: { collection, relativePath: relativePath2 } }
|
|
31134
|
+
);
|
|
31135
|
+
await ((_a = this.searchClient) == null ? void 0 : _a.del([`${collection}:${relativePath2}`]));
|
|
31136
|
+
}
|
|
31137
|
+
async fetchCollection(collectionName, includeDocuments, folder = "", after, sortKey, order, filterArgs) {
|
|
31138
|
+
let filter = null;
|
|
31139
|
+
const filterField = filterArgs == null ? void 0 : filterArgs.filterField;
|
|
31140
|
+
if (filterField) {
|
|
31141
|
+
filter = {
|
|
31142
|
+
[collectionName]: {
|
|
31143
|
+
[filterField]: {}
|
|
31144
|
+
}
|
|
31145
|
+
};
|
|
31146
|
+
}
|
|
31147
|
+
if (filterField && (filterArgs == null ? void 0 : filterArgs.startsWith)) {
|
|
31148
|
+
filter[collectionName][filterField] = {
|
|
31149
|
+
...filter[collectionName][filterField] || {},
|
|
31150
|
+
startsWith: filterArgs.startsWith
|
|
31151
|
+
};
|
|
31152
|
+
}
|
|
31153
|
+
if (filterField && (filterArgs == null ? void 0 : filterArgs.before)) {
|
|
31154
|
+
filter[collectionName][filterField] = {
|
|
31155
|
+
...filter[collectionName][filterField] || {},
|
|
31156
|
+
before: filterArgs.before
|
|
31157
|
+
};
|
|
31158
|
+
}
|
|
31159
|
+
if (filterField && (filterArgs == null ? void 0 : filterArgs.after)) {
|
|
31160
|
+
filter[collectionName][filterField] = {
|
|
31161
|
+
...filter[collectionName][filterField] || {},
|
|
31162
|
+
after: filterArgs.after
|
|
31163
|
+
};
|
|
31164
|
+
}
|
|
31165
|
+
if (filterField && (filterArgs == null ? void 0 : filterArgs.booleanEquals) !== null && (filterArgs == null ? void 0 : filterArgs.booleanEquals) !== void 0) {
|
|
31166
|
+
filter[collectionName][filterField] = {
|
|
31167
|
+
...filter[collectionName][filterField] || {},
|
|
31168
|
+
eq: filterArgs.booleanEquals
|
|
31169
|
+
};
|
|
31170
|
+
}
|
|
31171
|
+
if (includeDocuments === true) {
|
|
31172
|
+
const sort = sortKey || this.schema.getIsTitleFieldName(collectionName);
|
|
31173
|
+
const response = order === "asc" ? await this.api.request(
|
|
31174
|
+
`#graphql
|
|
31175
|
+
query($collection: String!, $includeDocuments: Boolean!, $sort: String, $limit: Float, $after: String, $filter: DocumentFilter, $folder: String){
|
|
31176
|
+
collection(collection: $collection){
|
|
31177
|
+
name
|
|
31178
|
+
label
|
|
31179
|
+
format
|
|
31180
|
+
templates
|
|
31181
|
+
documents(sort: $sort, after: $after, first: $limit, filter: $filter, folder: $folder) @include(if: $includeDocuments) {
|
|
31182
|
+
totalCount
|
|
31183
|
+
pageInfo {
|
|
31184
|
+
hasPreviousPage
|
|
31185
|
+
hasNextPage
|
|
31186
|
+
startCursor
|
|
31187
|
+
endCursor
|
|
31188
|
+
}
|
|
31189
|
+
edges {
|
|
31190
|
+
node {
|
|
31191
|
+
__typename
|
|
31192
|
+
... on Folder {
|
|
31193
|
+
name
|
|
31194
|
+
path
|
|
31195
|
+
}
|
|
31196
|
+
... on Document {
|
|
31197
|
+
_sys {
|
|
31198
|
+
title
|
|
31199
|
+
template
|
|
31200
|
+
breadcrumbs
|
|
31201
|
+
path
|
|
31202
|
+
basename
|
|
31203
|
+
relativePath
|
|
31204
|
+
filename
|
|
31205
|
+
extension
|
|
31206
|
+
hasReferences
|
|
31207
|
+
}
|
|
31208
|
+
}
|
|
31209
|
+
}
|
|
31210
|
+
}
|
|
31211
|
+
}
|
|
31212
|
+
}
|
|
31213
|
+
}`,
|
|
31214
|
+
{
|
|
31215
|
+
variables: {
|
|
31216
|
+
collection: collectionName,
|
|
31217
|
+
includeDocuments,
|
|
31218
|
+
folder,
|
|
31219
|
+
sort,
|
|
31220
|
+
limit: 50,
|
|
31221
|
+
after,
|
|
31222
|
+
filter
|
|
31223
|
+
}
|
|
31224
|
+
}
|
|
31225
|
+
) : await this.api.request(
|
|
31226
|
+
`#graphql
|
|
31227
|
+
query($collection: String!, $includeDocuments: Boolean!, $sort: String, $limit: Float, $after: String, $filter: DocumentFilter, $folder: String) {
|
|
31228
|
+
collection(collection: $collection){
|
|
31229
|
+
name
|
|
31230
|
+
label
|
|
31231
|
+
format
|
|
31232
|
+
templates
|
|
31233
|
+
documents(sort: $sort, before: $after, last: $limit, filter: $filter, folder: $folder) @include(if: $includeDocuments) {
|
|
31234
|
+
totalCount
|
|
31235
|
+
pageInfo {
|
|
31236
|
+
hasPreviousPage
|
|
31237
|
+
hasNextPage
|
|
31238
|
+
startCursor
|
|
31239
|
+
endCursor
|
|
31240
|
+
}
|
|
31241
|
+
edges {
|
|
31242
|
+
node {
|
|
31243
|
+
__typename
|
|
31244
|
+
... on Folder {
|
|
31245
|
+
name
|
|
31246
|
+
path
|
|
31247
|
+
}
|
|
31248
|
+
... on Document {
|
|
31249
|
+
_sys {
|
|
31250
|
+
title
|
|
31251
|
+
template
|
|
31252
|
+
breadcrumbs
|
|
31253
|
+
path
|
|
31254
|
+
basename
|
|
31255
|
+
relativePath
|
|
31256
|
+
filename
|
|
31257
|
+
extension
|
|
31258
|
+
}
|
|
31259
|
+
}
|
|
31260
|
+
}
|
|
31261
|
+
}
|
|
31262
|
+
}
|
|
31263
|
+
}
|
|
31264
|
+
}`,
|
|
31265
|
+
{
|
|
31266
|
+
variables: {
|
|
31267
|
+
collection: collectionName,
|
|
31268
|
+
includeDocuments,
|
|
31269
|
+
folder,
|
|
31270
|
+
sort,
|
|
31271
|
+
limit: 50,
|
|
31272
|
+
after,
|
|
31273
|
+
filter
|
|
31274
|
+
}
|
|
31275
|
+
}
|
|
31276
|
+
);
|
|
31277
|
+
return response.collection;
|
|
31278
|
+
} else {
|
|
31279
|
+
try {
|
|
31280
|
+
const collection = this.schema.getCollection(collectionName);
|
|
31281
|
+
return collection;
|
|
31282
|
+
} catch (e) {
|
|
31283
|
+
console.error(
|
|
31284
|
+
`[TinaAdminAPI] Unable to fetchCollection(): ${e.message}`
|
|
31285
|
+
);
|
|
31286
|
+
return void 0;
|
|
31287
|
+
}
|
|
31288
|
+
}
|
|
31289
|
+
}
|
|
31290
|
+
async fetchDocument(collectionName, relativePath2, values = true) {
|
|
31291
|
+
let query;
|
|
31292
|
+
if (values) {
|
|
31293
|
+
query = `#graphql
|
|
31294
|
+
query($collection: String!, $relativePath: String!) {
|
|
31295
|
+
document(collection:$collection, relativePath:$relativePath) {
|
|
31296
|
+
... on Document {
|
|
31297
|
+
_values
|
|
31298
|
+
_sys {
|
|
31299
|
+
hasReferences
|
|
31300
|
+
}
|
|
31301
|
+
}
|
|
31302
|
+
}
|
|
31303
|
+
}`;
|
|
31304
|
+
} else {
|
|
31305
|
+
query = `#graphql
|
|
31306
|
+
query($collection: String!, $relativePath: String!) {
|
|
31307
|
+
document(collection:$collection, relativePath:$relativePath) {
|
|
31308
|
+
__typename
|
|
31309
|
+
... on Document {
|
|
31310
|
+
_sys {
|
|
31311
|
+
title
|
|
31312
|
+
template
|
|
31313
|
+
breadcrumbs
|
|
31314
|
+
path
|
|
31315
|
+
basename
|
|
31316
|
+
relativePath
|
|
31317
|
+
filename
|
|
31318
|
+
extension
|
|
31319
|
+
}
|
|
31320
|
+
}
|
|
31321
|
+
}
|
|
31322
|
+
}`;
|
|
31323
|
+
}
|
|
31324
|
+
const response = await this.api.request(query, {
|
|
31325
|
+
variables: { collection: collectionName, relativePath: relativePath2 }
|
|
31326
|
+
});
|
|
31327
|
+
return response;
|
|
31328
|
+
}
|
|
31329
|
+
async createDocument(collection, relativePath2, params) {
|
|
31330
|
+
const response = await this.api.request(
|
|
31331
|
+
`#graphql
|
|
31332
|
+
mutation($collection: String!, $relativePath: String!, $params: DocumentMutation!) {
|
|
31333
|
+
createDocument(
|
|
31334
|
+
collection: $collection,
|
|
31335
|
+
relativePath: $relativePath,
|
|
31336
|
+
params: $params
|
|
31337
|
+
){__typename}
|
|
31338
|
+
}`,
|
|
31339
|
+
{
|
|
31340
|
+
variables: {
|
|
31341
|
+
collection: collection.name,
|
|
31342
|
+
relativePath: relativePath2,
|
|
31343
|
+
params
|
|
31344
|
+
}
|
|
31345
|
+
}
|
|
31346
|
+
);
|
|
31347
|
+
if (this.searchClient) {
|
|
31348
|
+
const { document: doc } = await this.fetchDocument(
|
|
31349
|
+
collection.name,
|
|
31350
|
+
relativePath2
|
|
31351
|
+
);
|
|
31352
|
+
const processed = processDocumentForIndexing(
|
|
31353
|
+
doc["_values"],
|
|
31354
|
+
`${collection.path}/${relativePath2}`,
|
|
31355
|
+
collection,
|
|
31356
|
+
this.maxSearchIndexFieldLength
|
|
31357
|
+
);
|
|
31358
|
+
await this.searchClient.put([processed]);
|
|
31359
|
+
}
|
|
31360
|
+
return response;
|
|
31361
|
+
}
|
|
31362
|
+
async updateDocument(collection, relativePath2, params) {
|
|
31363
|
+
const response = await this.api.request(
|
|
31364
|
+
`#graphql
|
|
31365
|
+
mutation($collection: String!, $relativePath: String!, $params: DocumentUpdateMutation!) {
|
|
31366
|
+
updateDocument(
|
|
31367
|
+
collection: $collection,
|
|
31368
|
+
relativePath: $relativePath,
|
|
31369
|
+
params: $params
|
|
31370
|
+
){__typename}
|
|
31371
|
+
}`,
|
|
31372
|
+
{
|
|
31373
|
+
variables: {
|
|
31374
|
+
collection: collection.name,
|
|
31375
|
+
relativePath: relativePath2,
|
|
31376
|
+
params
|
|
31377
|
+
}
|
|
31378
|
+
}
|
|
31379
|
+
);
|
|
31380
|
+
if (this.searchClient) {
|
|
31381
|
+
const { document: doc } = await this.fetchDocument(
|
|
31382
|
+
collection.name,
|
|
31383
|
+
relativePath2
|
|
31384
|
+
);
|
|
31385
|
+
const processed = processDocumentForIndexing(
|
|
31386
|
+
doc["_values"],
|
|
31387
|
+
`${collection.path}/${relativePath2}`,
|
|
31388
|
+
collection,
|
|
31389
|
+
this.maxSearchIndexFieldLength
|
|
31390
|
+
);
|
|
31391
|
+
await this.searchClient.put([processed]);
|
|
31392
|
+
}
|
|
31393
|
+
return response;
|
|
31394
|
+
}
|
|
31395
|
+
async createFolder(collection, folderName) {
|
|
31396
|
+
return this.api.request(
|
|
31397
|
+
`#graphql
|
|
31398
|
+
mutation($collection: String!, $folderName: String!) {
|
|
31399
|
+
createFolder(
|
|
31400
|
+
collection: $collection,
|
|
31401
|
+
relativePath: $folderName
|
|
31402
|
+
){__typename}
|
|
31403
|
+
}`,
|
|
31404
|
+
{
|
|
31405
|
+
variables: {
|
|
31406
|
+
collection,
|
|
31407
|
+
folderName
|
|
31408
|
+
}
|
|
31409
|
+
}
|
|
31410
|
+
);
|
|
31411
|
+
}
|
|
31412
|
+
}
|
|
29908
31413
|
const createClient = ({
|
|
29909
31414
|
clientId,
|
|
29910
31415
|
isLocalClient = true,
|
|
@@ -29940,348 +31445,21 @@ mutation addPendingDocumentMutation(
|
|
|
29940
31445
|
return false;
|
|
29941
31446
|
}
|
|
29942
31447
|
}
|
|
29943
|
-
|
|
29944
|
-
|
|
29945
|
-
|
|
29946
|
-
|
|
29947
|
-
|
|
29948
|
-
|
|
29949
|
-
|
|
29950
|
-
|
|
29951
|
-
|
|
29952
|
-
|
|
29953
|
-
|
|
29954
|
-
async isAuthenticated() {
|
|
29955
|
-
return await this.api.authProvider.isAuthenticated();
|
|
29956
|
-
}
|
|
29957
|
-
async checkGraphqlSchema({ localSchema }) {
|
|
29958
|
-
const schemaFromCloud = await this.api.getSchema();
|
|
29959
|
-
const schema1 = schemaFromCloud;
|
|
29960
|
-
const schema2 = graphql.buildSchema(graphql.print(localSchema));
|
|
29961
|
-
const diffOutput = await core.diff(schema1, schema2);
|
|
29962
|
-
if (diffOutput.length > 0) {
|
|
29963
|
-
return false;
|
|
29964
|
-
} else {
|
|
29965
|
-
return true;
|
|
29966
|
-
}
|
|
29967
|
-
}
|
|
29968
|
-
fetchCollections() {
|
|
29969
|
-
return this.schema.getCollections();
|
|
29970
|
-
}
|
|
29971
|
-
async renameDocument({ collection, relativePath: relativePath2, newRelativePath }) {
|
|
29972
|
-
await this.api.request(
|
|
29973
|
-
`#graphql
|
|
29974
|
-
mutation RenameDocument($collection: String!, $relativePath: String! $newRelativePath: String!) {
|
|
29975
|
-
updateDocument(collection: $collection, relativePath: $relativePath, params: {relativePath: $newRelativePath}){
|
|
29976
|
-
__typename
|
|
29977
|
-
}
|
|
29978
|
-
}
|
|
29979
|
-
`,
|
|
29980
|
-
{ variables: { collection, relativePath: relativePath2, newRelativePath } }
|
|
29981
|
-
);
|
|
29982
|
-
if (this.searchClient) {
|
|
29983
|
-
const { document: doc } = await this.fetchDocument(
|
|
29984
|
-
collection.name,
|
|
29985
|
-
newRelativePath
|
|
29986
|
-
);
|
|
29987
|
-
const processed = processDocumentForIndexing(
|
|
29988
|
-
doc["_values"],
|
|
29989
|
-
`${collection.path}/${newRelativePath}`,
|
|
29990
|
-
collection,
|
|
29991
|
-
this.maxSearchIndexFieldLength
|
|
29992
|
-
);
|
|
29993
|
-
await this.searchClient.put([processed]);
|
|
29994
|
-
await this.searchClient.del([`${collection.name}:${relativePath2}`]);
|
|
29995
|
-
}
|
|
29996
|
-
}
|
|
29997
|
-
async deleteDocument({
|
|
29998
|
-
collection,
|
|
29999
|
-
relativePath: relativePath2
|
|
30000
|
-
}) {
|
|
30001
|
-
var _a;
|
|
30002
|
-
await this.api.request(
|
|
30003
|
-
`#graphql
|
|
30004
|
-
mutation DeleteDocument($collection: String!, $relativePath: String! ){
|
|
30005
|
-
deleteDocument(collection: $collection, relativePath: $relativePath){
|
|
30006
|
-
__typename
|
|
30007
|
-
}
|
|
30008
|
-
}`,
|
|
30009
|
-
{ variables: { collection, relativePath: relativePath2 } }
|
|
30010
|
-
);
|
|
30011
|
-
await ((_a = this.searchClient) == null ? void 0 : _a.del([`${collection}:${relativePath2}`]));
|
|
30012
|
-
}
|
|
30013
|
-
async fetchCollection(collectionName, includeDocuments, folder = "", after, sortKey, order, filterArgs) {
|
|
30014
|
-
let filter = null;
|
|
30015
|
-
const filterField = filterArgs == null ? void 0 : filterArgs.filterField;
|
|
30016
|
-
if (filterField) {
|
|
30017
|
-
filter = {
|
|
30018
|
-
[collectionName]: {
|
|
30019
|
-
[filterField]: {}
|
|
30020
|
-
}
|
|
30021
|
-
};
|
|
30022
|
-
}
|
|
30023
|
-
if (filterField && (filterArgs == null ? void 0 : filterArgs.startsWith)) {
|
|
30024
|
-
filter[collectionName][filterField] = {
|
|
30025
|
-
...filter[collectionName][filterField] || {},
|
|
30026
|
-
startsWith: filterArgs.startsWith
|
|
30027
|
-
};
|
|
30028
|
-
}
|
|
30029
|
-
if (filterField && (filterArgs == null ? void 0 : filterArgs.before)) {
|
|
30030
|
-
filter[collectionName][filterField] = {
|
|
30031
|
-
...filter[collectionName][filterField] || {},
|
|
30032
|
-
before: filterArgs.before
|
|
30033
|
-
};
|
|
30034
|
-
}
|
|
30035
|
-
if (filterField && (filterArgs == null ? void 0 : filterArgs.after)) {
|
|
30036
|
-
filter[collectionName][filterField] = {
|
|
30037
|
-
...filter[collectionName][filterField] || {},
|
|
30038
|
-
after: filterArgs.after
|
|
30039
|
-
};
|
|
30040
|
-
}
|
|
30041
|
-
if (filterField && (filterArgs == null ? void 0 : filterArgs.booleanEquals) !== null && (filterArgs == null ? void 0 : filterArgs.booleanEquals) !== void 0) {
|
|
30042
|
-
filter[collectionName][filterField] = {
|
|
30043
|
-
...filter[collectionName][filterField] || {},
|
|
30044
|
-
eq: filterArgs.booleanEquals
|
|
30045
|
-
};
|
|
30046
|
-
}
|
|
30047
|
-
if (includeDocuments === true) {
|
|
30048
|
-
const sort = sortKey || this.schema.getIsTitleFieldName(collectionName);
|
|
30049
|
-
const response = order === "asc" ? await this.api.request(
|
|
30050
|
-
`#graphql
|
|
30051
|
-
query($collection: String!, $includeDocuments: Boolean!, $sort: String, $limit: Float, $after: String, $filter: DocumentFilter, $folder: String){
|
|
30052
|
-
collection(collection: $collection){
|
|
30053
|
-
name
|
|
30054
|
-
label
|
|
30055
|
-
format
|
|
30056
|
-
templates
|
|
30057
|
-
documents(sort: $sort, after: $after, first: $limit, filter: $filter, folder: $folder) @include(if: $includeDocuments) {
|
|
30058
|
-
totalCount
|
|
30059
|
-
pageInfo {
|
|
30060
|
-
hasPreviousPage
|
|
30061
|
-
hasNextPage
|
|
30062
|
-
startCursor
|
|
30063
|
-
endCursor
|
|
30064
|
-
}
|
|
30065
|
-
edges {
|
|
30066
|
-
node {
|
|
30067
|
-
__typename
|
|
30068
|
-
... on Folder {
|
|
30069
|
-
name
|
|
30070
|
-
path
|
|
30071
|
-
}
|
|
30072
|
-
... on Document {
|
|
30073
|
-
_sys {
|
|
30074
|
-
title
|
|
30075
|
-
template
|
|
30076
|
-
breadcrumbs
|
|
30077
|
-
path
|
|
30078
|
-
basename
|
|
30079
|
-
relativePath
|
|
30080
|
-
filename
|
|
30081
|
-
extension
|
|
30082
|
-
}
|
|
30083
|
-
}
|
|
30084
|
-
}
|
|
30085
|
-
}
|
|
30086
|
-
}
|
|
30087
|
-
}
|
|
30088
|
-
}`,
|
|
30089
|
-
{
|
|
30090
|
-
variables: {
|
|
30091
|
-
collection: collectionName,
|
|
30092
|
-
includeDocuments,
|
|
30093
|
-
folder,
|
|
30094
|
-
sort,
|
|
30095
|
-
limit: 50,
|
|
30096
|
-
after,
|
|
30097
|
-
filter
|
|
30098
|
-
}
|
|
30099
|
-
}
|
|
30100
|
-
) : await this.api.request(
|
|
30101
|
-
`#graphql
|
|
30102
|
-
query($collection: String!, $includeDocuments: Boolean!, $sort: String, $limit: Float, $after: String, $filter: DocumentFilter, $folder: String) {
|
|
30103
|
-
collection(collection: $collection){
|
|
30104
|
-
name
|
|
30105
|
-
label
|
|
30106
|
-
format
|
|
30107
|
-
templates
|
|
30108
|
-
documents(sort: $sort, before: $after, last: $limit, filter: $filter, folder: $folder) @include(if: $includeDocuments) {
|
|
30109
|
-
totalCount
|
|
30110
|
-
pageInfo {
|
|
30111
|
-
hasPreviousPage
|
|
30112
|
-
hasNextPage
|
|
30113
|
-
startCursor
|
|
30114
|
-
endCursor
|
|
30115
|
-
}
|
|
30116
|
-
edges {
|
|
30117
|
-
node {
|
|
30118
|
-
__typename
|
|
30119
|
-
... on Folder {
|
|
30120
|
-
name
|
|
30121
|
-
path
|
|
30122
|
-
}
|
|
30123
|
-
... on Document {
|
|
30124
|
-
_sys {
|
|
30125
|
-
title
|
|
30126
|
-
template
|
|
30127
|
-
breadcrumbs
|
|
30128
|
-
path
|
|
30129
|
-
basename
|
|
30130
|
-
relativePath
|
|
30131
|
-
filename
|
|
30132
|
-
extension
|
|
30133
|
-
}
|
|
30134
|
-
}
|
|
30135
|
-
}
|
|
30136
|
-
}
|
|
30137
|
-
}
|
|
30138
|
-
}
|
|
30139
|
-
}`,
|
|
30140
|
-
{
|
|
30141
|
-
variables: {
|
|
30142
|
-
collection: collectionName,
|
|
30143
|
-
includeDocuments,
|
|
30144
|
-
folder,
|
|
30145
|
-
sort,
|
|
30146
|
-
limit: 50,
|
|
30147
|
-
after,
|
|
30148
|
-
filter
|
|
30149
|
-
}
|
|
30150
|
-
}
|
|
30151
|
-
);
|
|
30152
|
-
return response.collection;
|
|
30153
|
-
} else {
|
|
30154
|
-
try {
|
|
30155
|
-
const collection = this.schema.getCollection(collectionName);
|
|
30156
|
-
return collection;
|
|
30157
|
-
} catch (e) {
|
|
30158
|
-
console.error(
|
|
30159
|
-
`[TinaAdminAPI] Unable to fetchCollection(): ${e.message}`
|
|
30160
|
-
);
|
|
30161
|
-
return void 0;
|
|
30162
|
-
}
|
|
30163
|
-
}
|
|
30164
|
-
}
|
|
30165
|
-
async fetchDocument(collectionName, relativePath2, values = true) {
|
|
30166
|
-
let query;
|
|
30167
|
-
if (values) {
|
|
30168
|
-
query = `#graphql
|
|
30169
|
-
query($collection: String!, $relativePath: String!) {
|
|
30170
|
-
document(collection:$collection, relativePath:$relativePath) {
|
|
30171
|
-
... on Document {
|
|
30172
|
-
_values
|
|
30173
|
-
}
|
|
30174
|
-
}
|
|
30175
|
-
}`;
|
|
30176
|
-
} else {
|
|
30177
|
-
query = `#graphql
|
|
30178
|
-
query($collection: String!, $relativePath: String!) {
|
|
30179
|
-
document(collection:$collection, relativePath:$relativePath) {
|
|
30180
|
-
__typename
|
|
30181
|
-
... on Document {
|
|
30182
|
-
_sys {
|
|
30183
|
-
title
|
|
30184
|
-
template
|
|
30185
|
-
breadcrumbs
|
|
30186
|
-
path
|
|
30187
|
-
basename
|
|
30188
|
-
relativePath
|
|
30189
|
-
filename
|
|
30190
|
-
extension
|
|
30191
|
-
}
|
|
30192
|
-
}
|
|
30193
|
-
}
|
|
30194
|
-
}`;
|
|
30195
|
-
}
|
|
30196
|
-
const response = await this.api.request(query, {
|
|
30197
|
-
variables: { collection: collectionName, relativePath: relativePath2 }
|
|
30198
|
-
});
|
|
30199
|
-
return response;
|
|
30200
|
-
}
|
|
30201
|
-
async createDocument(collection, relativePath2, params) {
|
|
30202
|
-
const response = await this.api.request(
|
|
30203
|
-
`#graphql
|
|
30204
|
-
mutation($collection: String!, $relativePath: String!, $params: DocumentMutation!) {
|
|
30205
|
-
createDocument(
|
|
30206
|
-
collection: $collection,
|
|
30207
|
-
relativePath: $relativePath,
|
|
30208
|
-
params: $params
|
|
30209
|
-
){__typename}
|
|
30210
|
-
}`,
|
|
30211
|
-
{
|
|
30212
|
-
variables: {
|
|
30213
|
-
collection: collection.name,
|
|
30214
|
-
relativePath: relativePath2,
|
|
30215
|
-
params
|
|
30216
|
-
}
|
|
30217
|
-
}
|
|
30218
|
-
);
|
|
30219
|
-
if (this.searchClient) {
|
|
30220
|
-
const { document: doc } = await this.fetchDocument(
|
|
30221
|
-
collection.name,
|
|
30222
|
-
relativePath2
|
|
30223
|
-
);
|
|
30224
|
-
const processed = processDocumentForIndexing(
|
|
30225
|
-
doc["_values"],
|
|
30226
|
-
`${collection.path}/${relativePath2}`,
|
|
30227
|
-
collection,
|
|
30228
|
-
this.maxSearchIndexFieldLength
|
|
30229
|
-
);
|
|
30230
|
-
await this.searchClient.put([processed]);
|
|
30231
|
-
}
|
|
30232
|
-
return response;
|
|
30233
|
-
}
|
|
30234
|
-
async updateDocument(collection, relativePath2, params) {
|
|
30235
|
-
const response = await this.api.request(
|
|
30236
|
-
`#graphql
|
|
30237
|
-
mutation($collection: String!, $relativePath: String!, $params: DocumentUpdateMutation!) {
|
|
30238
|
-
updateDocument(
|
|
30239
|
-
collection: $collection,
|
|
30240
|
-
relativePath: $relativePath,
|
|
30241
|
-
params: $params
|
|
30242
|
-
){__typename}
|
|
30243
|
-
}`,
|
|
30244
|
-
{
|
|
30245
|
-
variables: {
|
|
30246
|
-
collection: collection.name,
|
|
30247
|
-
relativePath: relativePath2,
|
|
30248
|
-
params
|
|
30249
|
-
}
|
|
30250
|
-
}
|
|
30251
|
-
);
|
|
30252
|
-
if (this.searchClient) {
|
|
30253
|
-
const { document: doc } = await this.fetchDocument(
|
|
30254
|
-
collection.name,
|
|
30255
|
-
relativePath2
|
|
30256
|
-
);
|
|
30257
|
-
const processed = processDocumentForIndexing(
|
|
30258
|
-
doc["_values"],
|
|
30259
|
-
`${collection.path}/${relativePath2}`,
|
|
30260
|
-
collection,
|
|
30261
|
-
this.maxSearchIndexFieldLength
|
|
30262
|
-
);
|
|
30263
|
-
await this.searchClient.put([processed]);
|
|
31448
|
+
const TINA_AUTH_CONFIG = "tina_auth_config";
|
|
31449
|
+
const useTinaAuthRedirect = () => {
|
|
31450
|
+
React.useEffect(() => {
|
|
31451
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
31452
|
+
const config = {
|
|
31453
|
+
code: urlParams.get("code") || "",
|
|
31454
|
+
scope: urlParams.get("scope") || "email",
|
|
31455
|
+
state: urlParams.get("state")
|
|
31456
|
+
};
|
|
31457
|
+
if (!config.code) {
|
|
31458
|
+
return;
|
|
30264
31459
|
}
|
|
30265
|
-
|
|
30266
|
-
}
|
|
30267
|
-
|
|
30268
|
-
return this.api.request(
|
|
30269
|
-
`#graphql
|
|
30270
|
-
mutation($collection: String!, $folderName: String!) {
|
|
30271
|
-
createFolder(
|
|
30272
|
-
collection: $collection,
|
|
30273
|
-
relativePath: $folderName
|
|
30274
|
-
){__typename}
|
|
30275
|
-
}`,
|
|
30276
|
-
{
|
|
30277
|
-
variables: {
|
|
30278
|
-
collection,
|
|
30279
|
-
folderName
|
|
30280
|
-
}
|
|
30281
|
-
}
|
|
30282
|
-
);
|
|
30283
|
-
}
|
|
30284
|
-
}
|
|
31460
|
+
localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
|
|
31461
|
+
}, []);
|
|
31462
|
+
};
|
|
30285
31463
|
function sleep(ms) {
|
|
30286
31464
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
30287
31465
|
}
|
|
@@ -30618,6 +31796,9 @@ mutation addPendingDocumentMutation(
|
|
|
30618
31796
|
cms.flags.set("branch-switcher", true);
|
|
30619
31797
|
client.usingEditorialWorkflow = true;
|
|
30620
31798
|
client.protectedBranches = project.protectedBranches;
|
|
31799
|
+
if (!project.metadata[currentBranch]) {
|
|
31800
|
+
setCurrentBranch(project.defaultBranch || "main");
|
|
31801
|
+
}
|
|
30621
31802
|
}
|
|
30622
31803
|
});
|
|
30623
31804
|
};
|
|
@@ -30630,7 +31811,7 @@ mutation addPendingDocumentMutation(
|
|
|
30630
31811
|
}
|
|
30631
31812
|
});
|
|
30632
31813
|
return unsubscribe;
|
|
30633
|
-
}, [isTinaCloud, cms]);
|
|
31814
|
+
}, [currentBranch, isTinaCloud, cms]);
|
|
30634
31815
|
return /* @__PURE__ */ React.createElement(SessionProvider, { basePath: "/api/tina/auth" }, /* @__PURE__ */ React.createElement(
|
|
30635
31816
|
BranchDataProvider,
|
|
30636
31817
|
{
|
|
@@ -31483,6 +32664,35 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31483
32664
|
}) => {
|
|
31484
32665
|
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center items-center h-screen bg-gray-100" }, /* @__PURE__ */ React.createElement("div", { className: "text-red-500 text-4xl mb-6 flex items-center" }, /* @__PURE__ */ React.createElement(BiError, { className: "w-12 h-auto fill-current text-red-400 opacity-70 mr-1" }), " ", title), /* @__PURE__ */ React.createElement("p", { className: "text-gray-700 text-xl mb-8" }, errorMessage), /* @__PURE__ */ React.createElement(Button$1, { variant: "danger", onClick: () => window.location.reload() }, /* @__PURE__ */ React.createElement(BiSync, { className: "w-7 h-auto fill-current opacity-70 mr-1" }), " Reload"));
|
|
31485
32666
|
};
|
|
32667
|
+
const isValidSortKey = (sortKey, collection) => {
|
|
32668
|
+
if (collection.fields) {
|
|
32669
|
+
const sortKeys = collection.fields.map((x) => x.name);
|
|
32670
|
+
return sortKeys.includes(sortKey);
|
|
32671
|
+
} else if (collection.templates) {
|
|
32672
|
+
const collectionMap = {};
|
|
32673
|
+
const conflictedFields = /* @__PURE__ */ new Set();
|
|
32674
|
+
for (const template of collection.templates) {
|
|
32675
|
+
for (const field of template.fields) {
|
|
32676
|
+
if (collectionMap[field.name]) {
|
|
32677
|
+
if (collectionMap[field.name].type !== field.type) {
|
|
32678
|
+
conflictedFields.add(field.name);
|
|
32679
|
+
}
|
|
32680
|
+
} else {
|
|
32681
|
+
collectionMap[field.name] = field;
|
|
32682
|
+
}
|
|
32683
|
+
}
|
|
32684
|
+
}
|
|
32685
|
+
for (const key in conflictedFields) {
|
|
32686
|
+
delete collectionMap[key];
|
|
32687
|
+
}
|
|
32688
|
+
for (const key in collectionMap) {
|
|
32689
|
+
if (key === sortKey) {
|
|
32690
|
+
return true;
|
|
32691
|
+
}
|
|
32692
|
+
}
|
|
32693
|
+
return false;
|
|
32694
|
+
}
|
|
32695
|
+
};
|
|
31486
32696
|
const useGetCollection = (cms, collectionName, includeDocuments = true, folder, after = "", sortKey, filterArgs) => {
|
|
31487
32697
|
const api = new TinaAdminApi(cms);
|
|
31488
32698
|
const schema = cms.api.tina.schema;
|
|
@@ -31494,10 +32704,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31494
32704
|
React.useEffect(() => {
|
|
31495
32705
|
let cancelled = false;
|
|
31496
32706
|
const fetchCollection = async () => {
|
|
31497
|
-
var _a;
|
|
31498
32707
|
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
31499
32708
|
const { name, order } = JSON.parse(sortKey || "{}");
|
|
31500
|
-
const validSortKey = (
|
|
32709
|
+
const validSortKey = isValidSortKey(name, collectionExtra) ? name : void 0;
|
|
31501
32710
|
try {
|
|
31502
32711
|
const collection2 = await api.fetchCollection(
|
|
31503
32712
|
collectionName,
|
|
@@ -31793,6 +33002,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31793
33002
|
const [vars, setVars] = React.useState({
|
|
31794
33003
|
collection: collectionName,
|
|
31795
33004
|
relativePath: "",
|
|
33005
|
+
relativePathWithoutExtension: "",
|
|
31796
33006
|
newRelativePath: "",
|
|
31797
33007
|
filterField: "",
|
|
31798
33008
|
folderName: "",
|
|
@@ -31834,6 +33044,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31834
33044
|
...old,
|
|
31835
33045
|
collection: collectionName,
|
|
31836
33046
|
relativePath: "",
|
|
33047
|
+
relativePathWithoutExtension: "",
|
|
31837
33048
|
newRelativePath: "",
|
|
31838
33049
|
filterField: "",
|
|
31839
33050
|
startsWith: "",
|
|
@@ -31859,6 +33070,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31859
33070
|
collectionName === vars.collection ? vars : {
|
|
31860
33071
|
collection: collectionName,
|
|
31861
33072
|
relativePath: "",
|
|
33073
|
+
relativePathWithoutExtension: "",
|
|
31862
33074
|
newRelativePath: "",
|
|
31863
33075
|
filterField: "",
|
|
31864
33076
|
startsWith: "",
|
|
@@ -31896,6 +33108,23 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31896
33108
|
DeleteModal,
|
|
31897
33109
|
{
|
|
31898
33110
|
filename: vars.relativePath,
|
|
33111
|
+
checkRefsFunc: async () => {
|
|
33112
|
+
var _a2, _b2;
|
|
33113
|
+
try {
|
|
33114
|
+
const doc = await admin.fetchDocument(
|
|
33115
|
+
collection.name,
|
|
33116
|
+
vars.relativePath,
|
|
33117
|
+
true
|
|
33118
|
+
);
|
|
33119
|
+
return (_b2 = (_a2 = doc == null ? void 0 : doc.document) == null ? void 0 : _a2._sys) == null ? void 0 : _b2.hasReferences;
|
|
33120
|
+
} catch (error) {
|
|
33121
|
+
cms.alerts.error(
|
|
33122
|
+
"Document was not found, ask a developer for help or check the console for an error message"
|
|
33123
|
+
);
|
|
33124
|
+
console.error(error);
|
|
33125
|
+
throw error;
|
|
33126
|
+
}
|
|
33127
|
+
},
|
|
31899
33128
|
deleteFunc: async () => {
|
|
31900
33129
|
try {
|
|
31901
33130
|
await admin.deleteDocument(vars);
|
|
@@ -31904,6 +33133,12 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31904
33133
|
);
|
|
31905
33134
|
reFetchCollection();
|
|
31906
33135
|
} catch (error) {
|
|
33136
|
+
if (error.message.indexOf("has references")) {
|
|
33137
|
+
cms.alerts.error(
|
|
33138
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
33139
|
+
);
|
|
33140
|
+
return;
|
|
33141
|
+
}
|
|
31907
33142
|
cms.alerts.warn(
|
|
31908
33143
|
"Document was not deleted, ask a developer for help or check the console for an error message"
|
|
31909
33144
|
);
|
|
@@ -31923,7 +33158,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31923
33158
|
safeSubmit: async () => {
|
|
31924
33159
|
try {
|
|
31925
33160
|
await admin.deleteDocument(vars);
|
|
31926
|
-
cms.alerts.info(
|
|
33161
|
+
cms.alerts.info(
|
|
33162
|
+
"Document was successfully deleted"
|
|
33163
|
+
);
|
|
31927
33164
|
reFetchCollection();
|
|
31928
33165
|
} catch (error) {
|
|
31929
33166
|
cms.alerts.warn(
|
|
@@ -31937,7 +33174,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31937
33174
|
), renameModalOpen && /* @__PURE__ */ React.createElement(
|
|
31938
33175
|
RenameModal,
|
|
31939
33176
|
{
|
|
31940
|
-
filename: vars.
|
|
33177
|
+
filename: vars.relativePathWithoutExtension,
|
|
31941
33178
|
newRelativePath: vars.newRelativePath,
|
|
31942
33179
|
setNewRelativePath: (newRelativePath) => {
|
|
31943
33180
|
setVars((vars2) => {
|
|
@@ -31952,9 +33189,17 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
31952
33189
|
relativePath: vars.relativePath,
|
|
31953
33190
|
newRelativePath
|
|
31954
33191
|
});
|
|
31955
|
-
cms.alerts.info(
|
|
33192
|
+
cms.alerts.info(
|
|
33193
|
+
"Document was successfully renamed"
|
|
33194
|
+
);
|
|
31956
33195
|
reFetchCollection();
|
|
31957
33196
|
} catch (error) {
|
|
33197
|
+
if (error.message.indexOf("has references")) {
|
|
33198
|
+
cms.alerts.error(
|
|
33199
|
+
error.message.split("\n ").filter(Boolean)[1]
|
|
33200
|
+
);
|
|
33201
|
+
return;
|
|
33202
|
+
}
|
|
31958
33203
|
cms.alerts.warn(
|
|
31959
33204
|
"Document was not renamed, ask a developer for help or check the console for an error message"
|
|
31960
33205
|
);
|
|
@@ -32046,7 +33291,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32046
33291
|
name: "sort",
|
|
32047
33292
|
value: sortKey,
|
|
32048
33293
|
onChange: (e) => {
|
|
32049
|
-
const val = JSON.parse(
|
|
33294
|
+
const val = JSON.parse(
|
|
33295
|
+
e.target.value
|
|
33296
|
+
);
|
|
32050
33297
|
setEndCursor("");
|
|
32051
33298
|
setPrevCursors([]);
|
|
32052
33299
|
window == null ? void 0 : window.localStorage.setItem(
|
|
@@ -32252,6 +33499,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32252
33499
|
setVars((old) => ({
|
|
32253
33500
|
...old,
|
|
32254
33501
|
collection: collectionName,
|
|
33502
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33503
|
+
"/"
|
|
33504
|
+
),
|
|
32255
33505
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32256
33506
|
"/"
|
|
32257
33507
|
) + document2.node._sys.extension,
|
|
@@ -32274,6 +33524,9 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32274
33524
|
setVars((old) => ({
|
|
32275
33525
|
...old,
|
|
32276
33526
|
collection: collectionName,
|
|
33527
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33528
|
+
"/"
|
|
33529
|
+
),
|
|
32277
33530
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32278
33531
|
"/"
|
|
32279
33532
|
) + document2.node._sys.extension,
|
|
@@ -32428,8 +33681,19 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32428
33681
|
const NoDocumentsPlaceholder = () => {
|
|
32429
33682
|
return /* @__PURE__ */ React.createElement("div", { className: "text-center px-5 py-3 flex flex-col items-center justify-center shadow border border-gray-100 bg-gray-50 border-b border-gray-200 w-full max-w-full rounded-lg" }, /* @__PURE__ */ React.createElement("p", { className: "text-base italic font-medium text-gray-300" }, "No documents found."));
|
|
32430
33683
|
};
|
|
32431
|
-
const DeleteModal = ({
|
|
32432
|
-
|
|
33684
|
+
const DeleteModal = ({
|
|
33685
|
+
close: close2,
|
|
33686
|
+
deleteFunc,
|
|
33687
|
+
checkRefsFunc,
|
|
33688
|
+
filename
|
|
33689
|
+
}) => {
|
|
33690
|
+
const [hasRefs, setHasRefs] = React.useState();
|
|
33691
|
+
React.useEffect(() => {
|
|
33692
|
+
checkRefsFunc().then((result) => {
|
|
33693
|
+
setHasRefs(result);
|
|
33694
|
+
});
|
|
33695
|
+
}, [filename, checkRefsFunc]);
|
|
33696
|
+
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Delete ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", null, `Are you sure you want to delete ${filename}?${hasRefs ? " References to this document will also be deleted." : ""}`)), /* @__PURE__ */ React.createElement(ModalActions, null, /* @__PURE__ */ React.createElement(Button$1, { style: { flexGrow: 2 }, onClick: close2 }, "Cancel"), /* @__PURE__ */ React.createElement(
|
|
32433
33697
|
Button$1,
|
|
32434
33698
|
{
|
|
32435
33699
|
style: { flexGrow: 3 },
|
|
@@ -32475,7 +33739,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32475
33739
|
newRelativePath,
|
|
32476
33740
|
setNewRelativePath
|
|
32477
33741
|
}) => {
|
|
32478
|
-
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React.createElement("strong", null, filename), "?
|
|
33742
|
+
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React.createElement("strong", null, filename), "?"), /* @__PURE__ */ React.createElement(
|
|
32479
33743
|
BaseTextField,
|
|
32480
33744
|
{
|
|
32481
33745
|
placeholder: "Enter a new name for the document's file",
|
|
@@ -32490,7 +33754,8 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32490
33754
|
onClick: async () => {
|
|
32491
33755
|
await renameFunc();
|
|
32492
33756
|
close2();
|
|
32493
|
-
}
|
|
33757
|
+
},
|
|
33758
|
+
disabled: !newRelativePath || newRelativePath === filename
|
|
32494
33759
|
},
|
|
32495
33760
|
"Rename"
|
|
32496
33761
|
))));
|
|
@@ -32817,7 +34082,10 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
32817
34082
|
const fetchDocument = async () => {
|
|
32818
34083
|
if (api.isAuthenticated()) {
|
|
32819
34084
|
try {
|
|
32820
|
-
const response = await api.fetchDocument(
|
|
34085
|
+
const response = await api.fetchDocument(
|
|
34086
|
+
collectionName,
|
|
34087
|
+
relativePath2
|
|
34088
|
+
);
|
|
32821
34089
|
setDocument(response.document);
|
|
32822
34090
|
} catch (error2) {
|
|
32823
34091
|
cms.alerts.error(
|
|
@@ -33161,15 +34429,24 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
33161
34429
|
}
|
|
33162
34430
|
}
|
|
33163
34431
|
if (state === "creatingPR") {
|
|
33164
|
-
|
|
33165
|
-
|
|
33166
|
-
|
|
33167
|
-
|
|
33168
|
-
|
|
33169
|
-
|
|
33170
|
-
|
|
33171
|
-
|
|
33172
|
-
|
|
34432
|
+
try {
|
|
34433
|
+
const foo = await tinaApi.createPullRequest({
|
|
34434
|
+
baseBranch,
|
|
34435
|
+
branch,
|
|
34436
|
+
title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
|
|
34437
|
+
});
|
|
34438
|
+
console.log("PR created", foo);
|
|
34439
|
+
cms.alerts.success("Pull request created.");
|
|
34440
|
+
localStorage.setItem("tina.createBranchState", "done");
|
|
34441
|
+
setState("done");
|
|
34442
|
+
} catch (e) {
|
|
34443
|
+
console.error(e);
|
|
34444
|
+
cms.alerts.error("Failed to create PR");
|
|
34445
|
+
setErrorMessage(
|
|
34446
|
+
"Failed to create PR, please try again. If the problem persists please contact support."
|
|
34447
|
+
);
|
|
34448
|
+
setState("error");
|
|
34449
|
+
}
|
|
33173
34450
|
}
|
|
33174
34451
|
if (state === "done") {
|
|
33175
34452
|
window.location.href = back;
|
|
@@ -33796,6 +35073,7 @@ This will work when developing locally but NOT when deployed to production.
|
|
|
33796
35073
|
exports2.useScreenPlugin = useScreenPlugin;
|
|
33797
35074
|
exports2.useTinaAuthRedirect = useTinaAuthRedirect;
|
|
33798
35075
|
exports2.wrapFieldWithError = wrapFieldWithError;
|
|
35076
|
+
exports2.wrapFieldWithNoHeader = wrapFieldWithNoHeader;
|
|
33799
35077
|
exports2.wrapFieldsWithMeta = wrapFieldsWithMeta;
|
|
33800
35078
|
Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
33801
35079
|
});
|