tinacms 0.0.0-9d5e351-20241023053720 → 0.0.0-9e83b99-20250316235714

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/dist/admin/api.d.ts +1 -0
  2. package/dist/admin/types.d.ts +3 -0
  3. package/dist/auth/TinaCloudProvider.d.ts +1 -1
  4. package/dist/cache/node-cache.d.ts +1 -0
  5. package/dist/client.js +83 -63
  6. package/dist/client.mjs +49 -35
  7. package/dist/hooks/create-page-plugin.d.ts +1 -1
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +1839 -635
  10. package/dist/index.mjs +1856 -652
  11. package/dist/node-cache-5e8db9f0.mjs +63 -0
  12. package/dist/react.d.ts +1 -0
  13. package/dist/react.js +10 -1
  14. package/dist/react.mjs +10 -1
  15. package/dist/toolkit/fields/components/reference/reference-select.d.ts +2 -2
  16. package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +4 -1
  17. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/indent-list-toolbar-button.d.ts +17 -5
  18. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mark-toolbar-button.d.ts +4 -18
  19. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/index.d.ts +1 -1
  20. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +6 -11
  21. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-overrides.d.ts +5 -1
  22. package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-provider.d.ts +2 -2
  23. package/dist/toolkit/fields/plugins/wrap-field-with-meta.d.ts +8 -0
  24. package/dist/unifiedClient/index.d.ts +8 -1
  25. package/package.json +40 -40
  26. package/dist/__vite-browser-external-d06ac358.mjs +0 -4
  27. package/dist/node-cache-8f9e873e.mjs +0 -52
package/dist/index.mjs CHANGED
@@ -6,21 +6,21 @@ var __publicField = (obj, key, value) => {
6
6
  };
7
7
  import { z } from "zod";
8
8
  import * as React from "react";
9
- import React__default, { useState, useCallback, useEffect, useRef, createContext, forwardRef, useContext, useMemo, startTransition, createElement, Component } from "react";
10
- import { createPortal, findDOMNode } from "react-dom";
9
+ import React__default, { useState, useCallback, useEffect, useRef, createContext, forwardRef, useContext, useMemo, startTransition } from "react";
10
+ import { createPortal } from "react-dom";
11
11
  import { withRef, cn as cn$1, withVariants, withProps, withCn, createPrimitiveElement } from "@udecode/cn";
12
- import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin, createBoldPlugin, createItalicPlugin, createUnderlinePlugin, createCodePlugin, createListPlugin, createIndentListPlugin, createHorizontalRulePlugin, createNodeIdPlugin, createTablePlugin, getListItemEntry, useListToolbarButtonState, useListToolbarButton } from "@udecode/plate";
13
- import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, useMarkToolbarButtonState, useMarkToolbarButton, insertEmptyElement, usePlateSelectors, useEventEditorSelectors, PortalBody, useFormInputProps, createPlugins, Plate } from "@udecode/plate-common";
12
+ import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createBasicMarksPlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin, createUnderlinePlugin, createListPlugin, createIndentListPlugin, createHorizontalRulePlugin, createNodeIdPlugin, createTablePlugin, getListItemEntry, useListToolbarButtonState, useListToolbarButton } from "@udecode/plate";
13
+ import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, insertEmptyElement, useMarkToolbarButtonState, useMarkToolbarButton, usePlateSelectors, useEventEditorSelectors, PortalBody, useFormInputProps, createPlugins, Plate } from "@udecode/plate-common";
14
14
  import { ELEMENT_SLASH_INPUT, createSlashPlugin } from "@udecode/plate-slash-command";
15
15
  import { useSelected, useReadOnly, ReactEditor } from "slate-react";
16
16
  import { useCodeBlockElementState, useCodeSyntaxLeaf, ELEMENT_CODE_BLOCK as ELEMENT_CODE_BLOCK$1 } from "@udecode/plate-code-block";
17
17
  import MonacoEditor, { loader, useMonaco } from "@monaco-editor/react";
18
- import { Combobox, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
18
+ import { Combobox as Combobox$1, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
19
19
  import { cva } from "class-variance-authority";
20
20
  import { Eye, SquarePen, Plus, AlignCenter as AlignCenter$1, AlignJustify, AlignLeft as AlignLeft$1, AlignRight as AlignRight$1, ChevronDown, PaintBucket, Quote, Check, ChevronRight, ChevronsUpDown, X, FileCode, Baseline, RectangleVertical, Combine, Ungroup, MessageSquare, MessageSquarePlus, Trash, GripVertical, Edit2, Smile, ExternalLink, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Indent, Keyboard, WrapText, Minus, MoreHorizontal, Outdent, Pilcrow, RotateCcw, RectangleHorizontal, Search, Settings, Strikethrough, Subscript, Superscript, Table, Text, Underline, Link2Off, Moon, SunMedium, Twitter } from "lucide-react";
21
21
  import mermaid from "mermaid";
22
22
  import { ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4 as ELEMENT_H4$1, ELEMENT_H5 as ELEMENT_H5$1, ELEMENT_H6 as ELEMENT_H6$1 } from "@udecode/plate-heading";
23
- import { useComboboxContext, Combobox as Combobox$1, useComboboxStore, ComboboxProvider, Portal, ComboboxPopover, ComboboxItem } from "@ariakit/react";
23
+ import { useComboboxContext, Combobox as Combobox$2, useComboboxStore, ComboboxProvider, Portal, ComboboxPopover, ComboboxItem } from "@ariakit/react";
24
24
  import { useHTMLInputCursorState, useComboboxInput, filterWords } from "@udecode/plate-combobox";
25
25
  import { useTableCellElementState, useTableCellElement, useTableCellElementResizableState, useTableCellElementResizable, useTableBordersDropdownMenuContentState, useTableMergeState, TableProvider, useTableElementState, useTableElement, mergeTableCells, unmergeTableCells, ELEMENT_TABLE as ELEMENT_TABLE$1, getTableColumnCount, insertTable, deleteTable, insertTableColumn, deleteColumn, insertTableRow, deleteRow } from "@udecode/plate-table";
26
26
  import { ResizeHandle as ResizeHandle$1 } from "@udecode/plate-resizable";
@@ -57,8 +57,8 @@ import { getIntrospectionQuery, buildClientSchema, print, parse as parse$3, buil
57
57
  import gql from "graphql-tag";
58
58
  import { TinaSchema, addNamespaceToSchema, parseURL, resolveForm, normalizePath, validateSchema } from "@tinacms/schema-tools";
59
59
  import { NAMER, resolveField } from "@tinacms/schema-tools";
60
- import * as yup from "yup";
61
60
  import { diff } from "@graphql-inspector/core";
61
+ import * as yup from "yup";
62
62
  import { NavLink, useNavigate, useLocation, useParams, Link, useSearchParams, HashRouter, Routes, Route } from "react-router-dom";
63
63
  import { stringifyMDX } from "@tinacms/mdx";
64
64
  const ModalProvider = ({ children }) => {
@@ -801,6 +801,22 @@ function wrapFieldsWithMeta(Field2) {
801
801
  );
802
802
  };
803
803
  }
804
+ function wrapFieldWithNoHeader(Field2) {
805
+ return (props) => {
806
+ return /* @__PURE__ */ React.createElement(
807
+ FieldMeta,
808
+ {
809
+ name: props.input.name,
810
+ label: false,
811
+ description: "",
812
+ error: props.meta.error,
813
+ index: props.index,
814
+ tinaForm: props.tinaForm
815
+ },
816
+ /* @__PURE__ */ React.createElement(Field2, { ...props })
817
+ );
818
+ };
819
+ }
804
820
  function wrapFieldWithError(Field2) {
805
821
  return (props) => {
806
822
  return /* @__PURE__ */ React.createElement(
@@ -873,6 +889,16 @@ const FieldDescription = ({
873
889
  className,
874
890
  ...props
875
891
  }) => {
892
+ if (typeof children === "string") {
893
+ return /* @__PURE__ */ React.createElement(
894
+ "span",
895
+ {
896
+ className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0 ${className}`,
897
+ ...props,
898
+ dangerouslySetInnerHTML: { __html: children }
899
+ }
900
+ );
901
+ }
876
902
  return /* @__PURE__ */ React.createElement(
877
903
  "span",
878
904
  {
@@ -966,7 +992,7 @@ const Autocomplete = ({
966
992
  }
967
993
  }, [items2, query]);
968
994
  return /* @__PURE__ */ React__default.createElement(
969
- Combobox,
995
+ Combobox$1,
970
996
  {
971
997
  value,
972
998
  onChange,
@@ -1332,8 +1358,8 @@ const ListElementVariants = withVariants(PlateElement, listVariants, [
1332
1358
  ]);
1333
1359
  const ListElement = withRef(
1334
1360
  ({ children, variant = "ul", ...props }, ref) => {
1335
- const Component2 = variant;
1336
- return /* @__PURE__ */ React__default.createElement(ListElementVariants, { asChild: true, ref, variant, ...props }, /* @__PURE__ */ React__default.createElement(Component2, null, children));
1361
+ const Component = variant;
1362
+ return /* @__PURE__ */ React__default.createElement(ListElementVariants, { asChild: true, ref, variant, ...props }, /* @__PURE__ */ React__default.createElement(Component, null, children));
1337
1363
  }
1338
1364
  );
1339
1365
  const ELEMENT_MERMAID = "mermaid";
@@ -2147,7 +2173,7 @@ const InlineComboboxInput = forwardRef(({ className, ...props }, propRef) => {
2147
2173
  },
2148
2174
  value || "​"
2149
2175
  ), /* @__PURE__ */ React__default.createElement(
2150
- Combobox$1,
2176
+ Combobox$2,
2151
2177
  {
2152
2178
  autoSelect: true,
2153
2179
  className: cn$1(
@@ -2944,7 +2970,7 @@ const Components = () => {
2944
2970
  ),
2945
2971
  [MARK_CODE]: CodeLeaf,
2946
2972
  [MARK_UNDERLINE]: withProps(PlateLeaf, { as: "u" }),
2947
- [MARK_STRIKETHROUGH]: withProps(PlateLeaf, { as: "s" }),
2973
+ [MARK_STRIKETHROUGH]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("s", { ...props.attributes, ...props }),
2948
2974
  [MARK_ITALIC]: withProps(PlateLeaf, { as: "em" }),
2949
2975
  [MARK_BOLD]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("strong", { ...props.attributes, ...props }),
2950
2976
  [ELEMENT_HR]: ({
@@ -3653,7 +3679,7 @@ function TinaForm({ form, children }) {
3653
3679
  }));
3654
3680
  }
3655
3681
  function TinaField({
3656
- Component: Component2,
3682
+ Component,
3657
3683
  children,
3658
3684
  ...fieldProps
3659
3685
  }) {
@@ -3661,7 +3687,7 @@ function TinaField({
3661
3687
  if (!isEditing)
3662
3688
  return children || null;
3663
3689
  return /* @__PURE__ */ React.createElement(Field, { ...fieldProps }, ({ input, meta }) => {
3664
- return /* @__PURE__ */ React.createElement(Component2, { input, meta, ...fieldProps });
3690
+ return /* @__PURE__ */ React.createElement(Component, { input, meta, ...fieldProps });
3665
3691
  });
3666
3692
  }
3667
3693
  TinaField.propTypes = {
@@ -3703,7 +3729,7 @@ const Button$1 = ({
3703
3729
  };
3704
3730
  const sizeClasses = {
3705
3731
  small: `text-xs h-8 px-3`,
3706
- medium: `text-sm h-10 px-4`,
3732
+ medium: `text-sm h-10 px-8`,
3707
3733
  custom: ``
3708
3734
  };
3709
3735
  return /* @__PURE__ */ React.createElement(
@@ -3831,7 +3857,7 @@ var _excluded = ["attr", "size", "title"];
3831
3857
  function _objectWithoutProperties(source, excluded) {
3832
3858
  if (source == null)
3833
3859
  return {};
3834
- var target = _objectWithoutPropertiesLoose$1(source, excluded);
3860
+ var target = _objectWithoutPropertiesLoose(source, excluded);
3835
3861
  var key, i;
3836
3862
  if (Object.getOwnPropertySymbols) {
3837
3863
  var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
@@ -3846,7 +3872,7 @@ function _objectWithoutProperties(source, excluded) {
3846
3872
  }
3847
3873
  return target;
3848
3874
  }
3849
- function _objectWithoutPropertiesLoose$1(source, excluded) {
3875
+ function _objectWithoutPropertiesLoose(source, excluded) {
3850
3876
  if (source == null)
3851
3877
  return {};
3852
3878
  var target = {};
@@ -4936,7 +4962,28 @@ const NumberInput = ({
4936
4962
  onChange,
4937
4963
  value,
4938
4964
  step
4939
- }) => /* @__PURE__ */ React.createElement(Input, { type: "number", step, value, onChange });
4965
+ }) => /* @__PURE__ */ React.createElement(
4966
+ Input,
4967
+ {
4968
+ type: "number",
4969
+ step,
4970
+ value,
4971
+ onChange: (event) => {
4972
+ const inputValue = event.target.value;
4973
+ const newValue = inputValue === "" ? void 0 : inputValue;
4974
+ if (onChange) {
4975
+ const syntheticEvent = {
4976
+ ...event,
4977
+ target: {
4978
+ ...event.target,
4979
+ value: newValue
4980
+ }
4981
+ };
4982
+ onChange(syntheticEvent);
4983
+ }
4984
+ }
4985
+ }
4986
+ );
4940
4987
  function useCMS() {
4941
4988
  return useCMS$1();
4942
4989
  }
@@ -5177,7 +5224,7 @@ const PopoverContent = React.forwardRef(({ className, align = "center", sideOffs
5177
5224
  side: "bottom",
5178
5225
  className: cn(
5179
5226
  "rounded-md border bg-white p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
5180
- "max-h-[30vh] max-w-[30vh] overflow-y-auto",
5227
+ "max-h-[30vh] max-w-[30vw] overflow-y-auto",
5181
5228
  className
5182
5229
  ),
5183
5230
  ...props
@@ -5269,11 +5316,7 @@ const getFilename = (optionSets, value) => {
5269
5316
  const node = nodes.find((node2) => node2.id === value);
5270
5317
  return node ? node._internalSys.filename : null;
5271
5318
  };
5272
- const ComboboxDemo = ({
5273
- cms,
5274
- input,
5275
- field
5276
- }) => {
5319
+ const Combobox = ({ cms, input, field }) => {
5277
5320
  const [open2, setOpen] = React.useState(false);
5278
5321
  const [value, setValue] = React.useState(input.value);
5279
5322
  const [displayText, setDisplayText] = React.useState(null);
@@ -5289,7 +5332,9 @@ const ComboboxDemo = ({
5289
5332
  }, [value, input, optionSets]);
5290
5333
  React.useEffect(() => {
5291
5334
  if (field.experimental___filter && optionSets.length > 0) {
5292
- setFilteredOptionsList(field.experimental___filter(optionSets, void 0));
5335
+ setFilteredOptionsList(
5336
+ field.experimental___filter(optionSets, void 0)
5337
+ );
5293
5338
  } else {
5294
5339
  setFilteredOptionsList(optionSets);
5295
5340
  }
@@ -5297,17 +5342,17 @@ const ComboboxDemo = ({
5297
5342
  if (loading === true) {
5298
5343
  return /* @__PURE__ */ React.createElement(LoadingDots, { color: "var(--tina-color-primary)" });
5299
5344
  }
5300
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
5345
+ return /* @__PURE__ */ React.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
5301
5346
  Button,
5302
5347
  {
5303
5348
  variant: "outline",
5304
5349
  role: "combobox",
5305
5350
  "aria-expanded": open2,
5306
- className: "w-52 justify-between"
5351
+ className: "w-full justify-between"
5307
5352
  },
5308
5353
  /* @__PURE__ */ React.createElement("p", { className: "truncate" }, displayText ?? "Choose an option..."),
5309
5354
  open2 ? /* @__PURE__ */ React.createElement(IoMdArrowDropup, { size: 20 }) : /* @__PURE__ */ React.createElement(IoMdArrowDropdown, { size: 20 })
5310
- )), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative" }, /* @__PURE__ */ React.createElement(
5355
+ )), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative min-w-[var(--radix-popover-trigger-width)]" }, /* @__PURE__ */ React.createElement(
5311
5356
  Command,
5312
5357
  {
5313
5358
  shouldFilter: !field.experimental___filter,
@@ -5331,32 +5376,25 @@ const ComboboxDemo = ({
5331
5376
  }
5332
5377
  ),
5333
5378
  /* @__PURE__ */ React.createElement(CommandEmpty, null, "No reference found"),
5334
- /* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(
5335
- CommandGroup,
5336
- {
5337
- key: `${collection}-group`,
5338
- heading: collection
5339
- },
5340
- /* @__PURE__ */ React.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
5341
- const { id, _values } = node;
5342
- return /* @__PURE__ */ React.createElement(
5343
- OptionComponent,
5344
- {
5345
- id,
5346
- key: id,
5347
- value,
5348
- field,
5349
- _values,
5350
- node,
5351
- onSelect: (currentValue) => {
5352
- setValue(currentValue);
5353
- setOpen(false);
5354
- }
5379
+ /* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(CommandGroup, { key: `${collection}-group`, heading: collection }, /* @__PURE__ */ React.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
5380
+ const { id, _values } = node;
5381
+ return /* @__PURE__ */ React.createElement(
5382
+ OptionComponent,
5383
+ {
5384
+ id,
5385
+ key: id,
5386
+ value,
5387
+ field,
5388
+ _values,
5389
+ node,
5390
+ onSelect: (currentValue) => {
5391
+ setValue(currentValue);
5392
+ setOpen(false);
5355
5393
  }
5356
- );
5357
- }))
5358
- ))))
5359
- ))));
5394
+ }
5395
+ );
5396
+ }))))))
5397
+ )));
5360
5398
  };
5361
5399
  const useGetNode = (cms, id) => {
5362
5400
  const [document2, setDocument] = React.useState(
@@ -5429,7 +5467,7 @@ const ReferenceLink = ({ cms, input }) => {
5429
5467
  };
5430
5468
  const Reference = ({ input, field }) => {
5431
5469
  const cms = useCMS();
5432
- return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement("div", { className: "relative group" }, /* @__PURE__ */ React.createElement(ComboboxDemo, { cms, input, field })), /* @__PURE__ */ React.createElement(ReferenceLink, { cms, input }));
5470
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "relative group" }, /* @__PURE__ */ React.createElement(Combobox, { cms, input, field })), /* @__PURE__ */ React.createElement(ReferenceLink, { cms, input }));
5433
5471
  };
5434
5472
  const ButtonToggle = ({
5435
5473
  input,
@@ -5666,7 +5704,9 @@ const Item$2 = ({
5666
5704
  onClick: () => {
5667
5705
  const state = tinaForm.finalForm.getState();
5668
5706
  if (state.invalid === true) {
5669
- cms.alerts.error("Cannot navigate away from an invalid form.");
5707
+ cms.alerts.error(
5708
+ "Cannot navigate away from an invalid form."
5709
+ );
5670
5710
  return;
5671
5711
  }
5672
5712
  cms.dispatch({
@@ -5737,10 +5777,11 @@ const ItemDeleteButton = ({ onClick, disabled = false }) => {
5737
5777
  return /* @__PURE__ */ React__default.createElement(
5738
5778
  "button",
5739
5779
  {
5740
- className: `w-8 px-1 py-2.5 flex items-center justify-center hover:bg-gray-50 text-gray-200 hover:text-red-500 ${disabled && "pointer-events-none opacity-30 cursor-not-allowed"}`,
5780
+ type: "button",
5781
+ className: `w-8 px-1 py-2.5 flex items-center justify-center text-gray-200 hover:opacity-100 opacity-30 hover:bg-gray-50 ${disabled && "pointer-events-none opacity-30 cursor-not-allowed"}`,
5741
5782
  onClick
5742
5783
  },
5743
- /* @__PURE__ */ React__default.createElement(TrashIcon, { className: "fill-current transition-colors ease-out duration-100" })
5784
+ /* @__PURE__ */ React__default.createElement(TrashIcon, { className: "h-5 w-auto fill-current text-red-500 transition-colors duration-150 ease-out" })
5744
5785
  );
5745
5786
  };
5746
5787
  const DragHandle = ({ isDragging }) => {
@@ -5818,27 +5859,35 @@ const BlockSelector = ({
5818
5859
  ))))
5819
5860
  ))));
5820
5861
  };
5821
- const Group = wrapFieldWithError(({ tinaForm, field }) => {
5822
- const cms = useCMS$1();
5823
- React.useState(false);
5824
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
5825
- Header,
5826
- {
5827
- onClick: () => {
5828
- const state = tinaForm.finalForm.getState();
5829
- if (state.invalid === true) {
5830
- cms.alerts.error("Cannot navigate away from an invalid form.");
5831
- return;
5862
+ const Group = wrapFieldWithNoHeader(
5863
+ ({ tinaForm, field }) => {
5864
+ const cms = useCMS$1();
5865
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
5866
+ Header,
5867
+ {
5868
+ onClick: () => {
5869
+ const state = tinaForm.finalForm.getState();
5870
+ if (state.invalid === true) {
5871
+ cms.alerts.error("Cannot navigate away from an invalid form.");
5872
+ return;
5873
+ }
5874
+ cms.dispatch({
5875
+ type: "forms:set-active-field-name",
5876
+ value: { formId: tinaForm.id, fieldName: field.name }
5877
+ });
5832
5878
  }
5833
- cms.dispatch({
5834
- type: "forms:set-active-field-name",
5835
- value: { formId: tinaForm.id, fieldName: field.name }
5836
- });
5837
- }
5838
- },
5839
- field.label || field.name
5840
- ));
5841
- });
5879
+ },
5880
+ field.label || field.name,
5881
+ field.description && /* @__PURE__ */ React.createElement(
5882
+ "span",
5883
+ {
5884
+ className: `block font-sans text-xs italic font-light text-gray-400 pt-0.5 whitespace-normal m-0`,
5885
+ dangerouslySetInnerHTML: { __html: field.description }
5886
+ }
5887
+ )
5888
+ ));
5889
+ }
5890
+ );
5842
5891
  const Header = ({ onClick, children }) => {
5843
5892
  return /* @__PURE__ */ React.createElement("div", { className: "pt-1 mb-5" }, /* @__PURE__ */ React.createElement(
5844
5893
  "button",
@@ -6241,7 +6290,9 @@ const BlockListItem = ({
6241
6290
  onClick: () => {
6242
6291
  const state = tinaForm.finalForm.getState();
6243
6292
  if (state.invalid === true) {
6244
- cms.alerts.error("Cannot navigate away from an invalid form.");
6293
+ cms.alerts.error(
6294
+ "Cannot navigate away from an invalid form."
6295
+ );
6245
6296
  return;
6246
6297
  }
6247
6298
  cms.dispatch({
@@ -6723,28 +6774,28 @@ class DaysView extends React__default.Component {
6723
6774
  }
6724
6775
  renderDayHeaders() {
6725
6776
  const locale = this.props.viewDate.localeData();
6726
- let dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React__default.createElement("th", { key: day + index, className: "dow" }, day));
6777
+ const dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React__default.createElement("th", { key: day + index, className: "dow" }, day));
6727
6778
  return /* @__PURE__ */ React__default.createElement("tr", null, dayItems);
6728
6779
  }
6729
6780
  renderDays() {
6730
6781
  const date = this.props.viewDate;
6731
6782
  const startOfMonth = date.clone().startOf("month");
6732
6783
  const endOfMonth = date.clone().endOf("month");
6733
- let rows = [[], [], [], [], [], []];
6734
- let startDate = date.clone().subtract(1, "months");
6784
+ const rows = [[], [], [], [], [], []];
6785
+ const startDate = date.clone().subtract(1, "months");
6735
6786
  startDate.date(startDate.daysInMonth()).startOf("week");
6736
- let endDate = startDate.clone().add(42, "d");
6787
+ const endDate = startDate.clone().add(42, "d");
6737
6788
  let i = 0;
6738
6789
  while (startDate.isBefore(endDate)) {
6739
- let row = getRow$2(rows, i++);
6790
+ const row = getRow$2(rows, i++);
6740
6791
  row.push(this.renderDay(startDate, startOfMonth, endOfMonth));
6741
6792
  startDate.add(1, "d");
6742
6793
  }
6743
6794
  return rows.map((r, i2) => /* @__PURE__ */ React__default.createElement("tr", { key: `${endDate.month()}_${i2}` }, r));
6744
6795
  }
6745
6796
  renderDay(date, startOfMonth, endOfMonth) {
6746
- let selectedDate = this.props.selectedDate;
6747
- let dayProps = {
6797
+ const selectedDate = this.props.selectedDate;
6798
+ const dayProps = {
6748
6799
  key: date.format("M_D"),
6749
6800
  "data-value": date.date(),
6750
6801
  "data-month": date.month(),
@@ -6798,7 +6849,7 @@ function getRow$2(rows, day) {
6798
6849
  }
6799
6850
  function getDaysOfWeek(locale) {
6800
6851
  const first = locale.firstDayOfWeek();
6801
- let dow = [];
6852
+ const dow = [];
6802
6853
  let i = 0;
6803
6854
  locale._weekdaysMin.forEach(function(day) {
6804
6855
  dow[(7 + i++ - first) % 7] = day;
@@ -6816,7 +6867,7 @@ class MonthsView extends React__default.Component {
6816
6867
  return /* @__PURE__ */ React__default.createElement("div", { className: "rdtMonths" }, /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("thead", null, this.renderNavigation())), /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("tbody", null, this.renderMonths())));
6817
6868
  }
6818
6869
  renderNavigation() {
6819
- let year = this.props.viewDate.year();
6870
+ const year = this.props.viewDate.year();
6820
6871
  return /* @__PURE__ */ React__default.createElement(
6821
6872
  ViewNavigation,
6822
6873
  {
@@ -6829,9 +6880,9 @@ class MonthsView extends React__default.Component {
6829
6880
  );
6830
6881
  }
6831
6882
  renderMonths() {
6832
- let rows = [[], [], []];
6883
+ const rows = [[], [], []];
6833
6884
  for (let month = 0; month < 12; month++) {
6834
- let row = getRow$1(rows, month);
6885
+ const row = getRow$1(rows, month);
6835
6886
  row.push(this.renderMonth(month));
6836
6887
  }
6837
6888
  return rows.map((months, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, months));
@@ -6848,7 +6899,7 @@ class MonthsView extends React__default.Component {
6848
6899
  if (selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month) {
6849
6900
  className += " rdtActive";
6850
6901
  }
6851
- let props = { key: month, className, "data-value": month, onClick };
6902
+ const props = { key: month, className, "data-value": month, onClick };
6852
6903
  if (this.props.renderMonth) {
6853
6904
  return this.props.renderMonth(
6854
6905
  props,
@@ -6860,11 +6911,11 @@ class MonthsView extends React__default.Component {
6860
6911
  return /* @__PURE__ */ React__default.createElement("td", { ...props }, this.getMonthText(month));
6861
6912
  }
6862
6913
  isDisabledMonth(month) {
6863
- let isValidDate = this.props.isValidDate;
6914
+ const isValidDate = this.props.isValidDate;
6864
6915
  if (!isValidDate) {
6865
6916
  return false;
6866
6917
  }
6867
- let date = this.props.viewDate.clone().set({ month });
6918
+ const date = this.props.viewDate.clone().set({ month });
6868
6919
  let day = date.endOf("month").date() + 1;
6869
6920
  while (day-- > 1) {
6870
6921
  if (isValidDate(date.date(day))) {
@@ -6916,9 +6967,9 @@ class YearsView extends React__default.Component {
6916
6967
  }
6917
6968
  renderYears() {
6918
6969
  const viewYear = this.getViewYear();
6919
- let rows = [[], [], []];
6970
+ const rows = [[], [], []];
6920
6971
  for (let year = viewYear - 1; year < viewYear + 11; year++) {
6921
- let row = getRow(rows, year - viewYear);
6972
+ const row = getRow(rows, year - viewYear);
6922
6973
  row.push(this.renderYear(year));
6923
6974
  }
6924
6975
  return rows.map((years, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, years));
@@ -6935,7 +6986,7 @@ class YearsView extends React__default.Component {
6935
6986
  if (selectedYear === year) {
6936
6987
  className += " rdtActive";
6937
6988
  }
6938
- let props = { key: year, className, "data-value": year, onClick };
6989
+ const props = { key: year, className, "data-value": year, onClick };
6939
6990
  return this.props.renderYear(
6940
6991
  props,
6941
6992
  year,
@@ -6949,15 +7000,15 @@ class YearsView extends React__default.Component {
6949
7000
  return this.props.selectedDate && this.props.selectedDate.year();
6950
7001
  }
6951
7002
  isDisabledYear(year) {
6952
- let cache = this.disabledYearsCache;
7003
+ const cache = this.disabledYearsCache;
6953
7004
  if (cache[year] !== void 0) {
6954
7005
  return cache[year];
6955
7006
  }
6956
- let isValidDate = this.props.isValidDate;
7007
+ const isValidDate = this.props.isValidDate;
6957
7008
  if (!isValidDate) {
6958
7009
  return false;
6959
7010
  }
6960
- let date = this.props.viewDate.clone().set({ year });
7011
+ const date = this.props.viewDate.clone().set({ year });
6961
7012
  let day = date.endOf("year").dayOfYear() + 1;
6962
7013
  while (day-- > 1) {
6963
7014
  if (isValidDate(date.dayOfYear(day))) {
@@ -7004,7 +7055,7 @@ const timeConstraints = {
7004
7055
  }
7005
7056
  };
7006
7057
  function createConstraints(overrideTimeConstraints) {
7007
- let constraints = {};
7058
+ const constraints = {};
7008
7059
  Object.keys(timeConstraints).forEach((type) => {
7009
7060
  constraints[type] = {
7010
7061
  ...timeConstraints[type],
@@ -7020,7 +7071,7 @@ class TimeView extends React__default.Component {
7020
7071
  this.state = this.getTimeParts(props.selectedDate || props.viewDate);
7021
7072
  }
7022
7073
  render() {
7023
- let items2 = [];
7074
+ const items2 = [];
7024
7075
  const timeParts = this.state;
7025
7076
  this.getCounters().forEach((c, i) => {
7026
7077
  if (i && c !== "ampm") {
@@ -7082,8 +7133,8 @@ class TimeView extends React__default.Component {
7082
7133
  }
7083
7134
  if (type === "ampm")
7084
7135
  return this.toggleDayPart();
7085
- let update = {};
7086
- let body = document.body;
7136
+ const update = {};
7137
+ const body = document.body;
7087
7138
  update[type] = this[action](type);
7088
7139
  this.setState(update);
7089
7140
  this.timer = setTimeout(() => {
@@ -7126,8 +7177,8 @@ class TimeView extends React__default.Component {
7126
7177
  return pad(type, value);
7127
7178
  }
7128
7179
  getCounters() {
7129
- let counters = [];
7130
- let format2 = this.props.timeFormat;
7180
+ const counters = [];
7181
+ const format2 = this.props.timeFormat;
7131
7182
  if (format2.toLowerCase().indexOf("h") !== -1) {
7132
7183
  counters.push("hours");
7133
7184
  if (format2.indexOf("m") !== -1) {
@@ -7180,244 +7231,65 @@ function pad(type, value) {
7180
7231
  str = "0" + str;
7181
7232
  return str;
7182
7233
  }
7183
- function _inheritsLoose(subClass, superClass) {
7184
- subClass.prototype = Object.create(superClass.prototype);
7185
- subClass.prototype.constructor = subClass;
7186
- _setPrototypeOf(subClass, superClass);
7187
- }
7188
- function _setPrototypeOf(o, p) {
7189
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf2(o2, p2) {
7190
- o2.__proto__ = p2;
7191
- return o2;
7192
- };
7193
- return _setPrototypeOf(o, p);
7194
- }
7195
- function _objectWithoutPropertiesLoose(source, excluded) {
7196
- if (source == null)
7197
- return {};
7198
- var target = {};
7199
- var sourceKeys = Object.keys(source);
7200
- var key, i;
7201
- for (i = 0; i < sourceKeys.length; i++) {
7202
- key = sourceKeys[i];
7203
- if (excluded.indexOf(key) >= 0)
7204
- continue;
7205
- target[key] = source[key];
7206
- }
7207
- return target;
7208
- }
7209
- function _assertThisInitialized(self) {
7210
- if (self === void 0) {
7211
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
7212
- }
7213
- return self;
7214
- }
7215
- function isNodeFound(current, componentNode, ignoreClass) {
7216
- if (current === componentNode) {
7217
- return true;
7218
- }
7219
- if (current.correspondingElement) {
7220
- return current.correspondingElement.classList.contains(ignoreClass);
7221
- }
7222
- return current.classList.contains(ignoreClass);
7223
- }
7224
- function findHighest(current, componentNode, ignoreClass) {
7225
- if (current === componentNode) {
7226
- return true;
7234
+ var useClickAway$1 = {};
7235
+ var util = {};
7236
+ Object.defineProperty(util, "__esModule", { value: true });
7237
+ util.isNavigator = util.isBrowser = util.off = util.on = util.noop = void 0;
7238
+ var noop = function() {
7239
+ };
7240
+ util.noop = noop;
7241
+ function on(obj) {
7242
+ var args = [];
7243
+ for (var _i = 1; _i < arguments.length; _i++) {
7244
+ args[_i - 1] = arguments[_i];
7227
7245
  }
7228
- while (current.parentNode || current.host) {
7229
- if (current.parentNode && isNodeFound(current, componentNode, ignoreClass)) {
7230
- return true;
7231
- }
7232
- current = current.parentNode || current.host;
7246
+ if (obj && obj.addEventListener) {
7247
+ obj.addEventListener.apply(obj, args);
7233
7248
  }
7234
- return current;
7235
- }
7236
- function clickedScrollbar(evt) {
7237
- return document.documentElement.clientWidth <= evt.clientX || document.documentElement.clientHeight <= evt.clientY;
7238
7249
  }
7239
- var testPassiveEventSupport = function testPassiveEventSupport2() {
7240
- if (typeof window === "undefined" || typeof window.addEventListener !== "function") {
7241
- return;
7250
+ util.on = on;
7251
+ function off(obj) {
7252
+ var args = [];
7253
+ for (var _i = 1; _i < arguments.length; _i++) {
7254
+ args[_i - 1] = arguments[_i];
7242
7255
  }
7243
- var passive = false;
7244
- var options = Object.defineProperty({}, "passive", {
7245
- get: function get2() {
7246
- passive = true;
7247
- }
7248
- });
7249
- var noop = function noop2() {
7250
- };
7251
- window.addEventListener("testPassiveEventSupport", noop, options);
7252
- window.removeEventListener("testPassiveEventSupport", noop, options);
7253
- return passive;
7254
- };
7255
- function autoInc(seed) {
7256
- if (seed === void 0) {
7257
- seed = 0;
7256
+ if (obj && obj.removeEventListener) {
7257
+ obj.removeEventListener.apply(obj, args);
7258
7258
  }
7259
- return function() {
7260
- return ++seed;
7261
- };
7262
7259
  }
7263
- var uid = autoInc();
7264
- var passiveEventSupport;
7265
- var handlersMap = {};
7266
- var enabledInstances = {};
7267
- var touchEvents = ["touchstart", "touchmove"];
7268
- var IGNORE_CLASS_NAME = "ignore-react-onclickoutside";
7269
- function getEventHandlerOptions(instance, eventName) {
7270
- var handlerOptions = {};
7271
- var isTouchEvent = touchEvents.indexOf(eventName) !== -1;
7272
- if (isTouchEvent && passiveEventSupport) {
7273
- handlerOptions.passive = !instance.props.preventDefault;
7274
- }
7275
- return handlerOptions;
7276
- }
7277
- function onClickOutsideHOC(WrappedComponent, config) {
7278
- var _class, _temp;
7279
- var componentName = WrappedComponent.displayName || WrappedComponent.name || "Component";
7280
- return _temp = _class = /* @__PURE__ */ function(_Component) {
7281
- _inheritsLoose(onClickOutside, _Component);
7282
- function onClickOutside(props) {
7283
- var _this;
7284
- _this = _Component.call(this, props) || this;
7285
- _this.__outsideClickHandler = function(event) {
7286
- if (typeof _this.__clickOutsideHandlerProp === "function") {
7287
- _this.__clickOutsideHandlerProp(event);
7288
- return;
7289
- }
7290
- var instance = _this.getInstance();
7291
- if (typeof instance.props.handleClickOutside === "function") {
7292
- instance.props.handleClickOutside(event);
7293
- return;
7294
- }
7295
- if (typeof instance.handleClickOutside === "function") {
7296
- instance.handleClickOutside(event);
7297
- return;
7298
- }
7299
- throw new Error("WrappedComponent: " + componentName + " lacks a handleClickOutside(event) function for processing outside click events.");
7300
- };
7301
- _this.__getComponentNode = function() {
7302
- var instance = _this.getInstance();
7303
- if (config && typeof config.setClickOutsideRef === "function") {
7304
- return config.setClickOutsideRef()(instance);
7305
- }
7306
- if (typeof instance.setClickOutsideRef === "function") {
7307
- return instance.setClickOutsideRef();
7308
- }
7309
- return findDOMNode(instance);
7310
- };
7311
- _this.enableOnClickOutside = function() {
7312
- if (typeof document === "undefined" || enabledInstances[_this._uid]) {
7313
- return;
7314
- }
7315
- if (typeof passiveEventSupport === "undefined") {
7316
- passiveEventSupport = testPassiveEventSupport();
7317
- }
7318
- enabledInstances[_this._uid] = true;
7319
- var events = _this.props.eventTypes;
7320
- if (!events.forEach) {
7321
- events = [events];
7322
- }
7323
- handlersMap[_this._uid] = function(event) {
7324
- if (_this.componentNode === null)
7325
- return;
7326
- if (_this.initTimeStamp > event.timeStamp)
7327
- return;
7328
- if (_this.props.preventDefault) {
7329
- event.preventDefault();
7330
- }
7331
- if (_this.props.stopPropagation) {
7332
- event.stopPropagation();
7333
- }
7334
- if (_this.props.excludeScrollbar && clickedScrollbar(event))
7335
- return;
7336
- var current = event.composed && event.composedPath && event.composedPath().shift() || event.target;
7337
- if (findHighest(current, _this.componentNode, _this.props.outsideClickIgnoreClass) !== document) {
7338
- return;
7339
- }
7340
- _this.__outsideClickHandler(event);
7341
- };
7342
- events.forEach(function(eventName) {
7343
- document.addEventListener(eventName, handlersMap[_this._uid], getEventHandlerOptions(_assertThisInitialized(_this), eventName));
7344
- });
7345
- };
7346
- _this.disableOnClickOutside = function() {
7347
- delete enabledInstances[_this._uid];
7348
- var fn = handlersMap[_this._uid];
7349
- if (fn && typeof document !== "undefined") {
7350
- var events = _this.props.eventTypes;
7351
- if (!events.forEach) {
7352
- events = [events];
7353
- }
7354
- events.forEach(function(eventName) {
7355
- return document.removeEventListener(eventName, fn, getEventHandlerOptions(_assertThisInitialized(_this), eventName));
7356
- });
7357
- delete handlersMap[_this._uid];
7358
- }
7359
- };
7360
- _this.getRef = function(ref) {
7361
- return _this.instanceRef = ref;
7362
- };
7363
- _this._uid = uid();
7364
- _this.initTimeStamp = performance.now();
7365
- return _this;
7366
- }
7367
- var _proto = onClickOutside.prototype;
7368
- _proto.getInstance = function getInstance() {
7369
- if (WrappedComponent.prototype && !WrappedComponent.prototype.isReactComponent) {
7370
- return this;
7371
- }
7372
- var ref = this.instanceRef;
7373
- return ref.getInstance ? ref.getInstance() : ref;
7374
- };
7375
- _proto.componentDidMount = function componentDidMount() {
7376
- if (typeof document === "undefined" || !document.createElement) {
7377
- return;
7378
- }
7379
- var instance = this.getInstance();
7380
- if (config && typeof config.handleClickOutside === "function") {
7381
- this.__clickOutsideHandlerProp = config.handleClickOutside(instance);
7382
- if (typeof this.__clickOutsideHandlerProp !== "function") {
7383
- throw new Error("WrappedComponent: " + componentName + " lacks a function for processing outside click events specified by the handleClickOutside config option.");
7384
- }
7385
- }
7386
- this.componentNode = this.__getComponentNode();
7387
- if (this.props.disableOnClickOutside)
7388
- return;
7389
- this.enableOnClickOutside();
7390
- };
7391
- _proto.componentDidUpdate = function componentDidUpdate() {
7392
- this.componentNode = this.__getComponentNode();
7393
- };
7394
- _proto.componentWillUnmount = function componentWillUnmount() {
7395
- this.disableOnClickOutside();
7260
+ util.off = off;
7261
+ util.isBrowser = typeof window !== "undefined";
7262
+ util.isNavigator = typeof navigator !== "undefined";
7263
+ Object.defineProperty(useClickAway$1, "__esModule", { value: true });
7264
+ var react_1 = React__default;
7265
+ var util_1 = util;
7266
+ var defaultEvents = ["mousedown", "touchstart"];
7267
+ var useClickAway = function(ref, onClickAway, events) {
7268
+ if (events === void 0) {
7269
+ events = defaultEvents;
7270
+ }
7271
+ var savedCallback = react_1.useRef(onClickAway);
7272
+ react_1.useEffect(function() {
7273
+ savedCallback.current = onClickAway;
7274
+ }, [onClickAway]);
7275
+ react_1.useEffect(function() {
7276
+ var handler = function(event) {
7277
+ var el = ref.current;
7278
+ el && !el.contains(event.target) && savedCallback.current(event);
7396
7279
  };
7397
- _proto.render = function render() {
7398
- var _this$props = this.props;
7399
- _this$props.excludeScrollbar;
7400
- var props = _objectWithoutPropertiesLoose(_this$props, ["excludeScrollbar"]);
7401
- if (WrappedComponent.prototype && WrappedComponent.prototype.isReactComponent) {
7402
- props.ref = this.getRef;
7403
- } else {
7404
- props.wrappedRef = this.getRef;
7280
+ for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {
7281
+ var eventName = events_1[_i];
7282
+ util_1.on(document, eventName, handler);
7283
+ }
7284
+ return function() {
7285
+ for (var _i2 = 0, events_2 = events; _i2 < events_2.length; _i2++) {
7286
+ var eventName2 = events_2[_i2];
7287
+ util_1.off(document, eventName2, handler);
7405
7288
  }
7406
- props.disableOnClickOutside = this.disableOnClickOutside;
7407
- props.enableOnClickOutside = this.enableOnClickOutside;
7408
- return createElement(WrappedComponent, props);
7409
7289
  };
7410
- return onClickOutside;
7411
- }(Component), _class.displayName = "OnClickOutside(" + componentName + ")", _class.defaultProps = {
7412
- eventTypes: ["mousedown", "touchstart"],
7413
- excludeScrollbar: config && config.excludeScrollbar || false,
7414
- outsideClickIgnoreClass: IGNORE_CLASS_NAME,
7415
- preventDefault: false,
7416
- stopPropagation: false
7417
- }, _class.getClass = function() {
7418
- return WrappedComponent.getClass ? WrappedComponent.getClass() : WrappedComponent;
7419
- }, _temp;
7420
- }
7290
+ }, [events, ref]);
7291
+ };
7292
+ var _default = useClickAway$1.default = useClickAway;
7421
7293
  const viewModes = {
7422
7294
  YEARS: "years",
7423
7295
  MONTHS: "months",
@@ -7438,7 +7310,7 @@ class Datetime extends React__default.Component {
7438
7310
  __publicField(this, "_renderCalendar", () => {
7439
7311
  const props = this.props;
7440
7312
  const state = this.state;
7441
- let viewProps = {
7313
+ const viewProps = {
7442
7314
  viewDate: state.viewDate.clone(),
7443
7315
  selectedDate: this.getSelectedDate(),
7444
7316
  isValidDate: props.isValidDate,
@@ -7481,10 +7353,10 @@ class Datetime extends React__default.Component {
7481
7353
  __publicField(this, "viewToMethod", { days: "date", months: "month", years: "year" });
7482
7354
  __publicField(this, "nextView", { days: "time", months: "days", years: "months" });
7483
7355
  __publicField(this, "_updateDate", (e) => {
7484
- let state = this.state;
7485
- let currentView = state.currentView;
7486
- let updateOnView = this.getUpdateOn(this.getFormat("date"));
7487
- let viewDate = this.state.viewDate.clone();
7356
+ const state = this.state;
7357
+ const currentView = state.currentView;
7358
+ const updateOnView = this.getUpdateOn(this.getFormat("date"));
7359
+ const viewDate = this.state.viewDate.clone();
7488
7360
  viewDate[this.viewToMethod[currentView]](
7489
7361
  parseInt(e.target.getAttribute("data-value"), 10)
7490
7362
  );
@@ -7492,7 +7364,7 @@ class Datetime extends React__default.Component {
7492
7364
  viewDate.month(parseInt(e.target.getAttribute("data-month"), 10));
7493
7365
  viewDate.year(parseInt(e.target.getAttribute("data-year"), 10));
7494
7366
  }
7495
- let update = { viewDate };
7367
+ const update = { viewDate };
7496
7368
  if (currentView === updateOnView) {
7497
7369
  update.selectedDate = viewDate.clone();
7498
7370
  update.inputValue = viewDate.format(this.getFormat("datetime"));
@@ -7506,7 +7378,7 @@ class Datetime extends React__default.Component {
7506
7378
  this.setState(update);
7507
7379
  });
7508
7380
  __publicField(this, "_viewNavigate", (modifier, unit) => {
7509
- let viewDate = this.state.viewDate.clone();
7381
+ const viewDate = this.state.viewDate.clone();
7510
7382
  viewDate.add(modifier, unit);
7511
7383
  if (modifier > 0) {
7512
7384
  this.props.onNavigateForward(modifier, unit);
@@ -7516,7 +7388,7 @@ class Datetime extends React__default.Component {
7516
7388
  this.setState({ viewDate });
7517
7389
  });
7518
7390
  __publicField(this, "_setTime", (type, value) => {
7519
- let date = (this.getSelectedDate() || this.state.viewDate).clone();
7391
+ const date = (this.getSelectedDate() || this.state.viewDate).clone();
7520
7392
  date[type](value);
7521
7393
  if (!this.props.value) {
7522
7394
  this.setState({
@@ -7540,7 +7412,7 @@ class Datetime extends React__default.Component {
7540
7412
  });
7541
7413
  });
7542
7414
  __publicField(this, "_handleClickOutside", () => {
7543
- let props = this.props;
7415
+ const props = this.props;
7544
7416
  if (props.input && this.state.open && props.open === void 0 && props.closeOnClickOutside) {
7545
7417
  this._closeCalendar();
7546
7418
  }
@@ -7555,7 +7427,7 @@ class Datetime extends React__default.Component {
7555
7427
  return;
7556
7428
  const value = e.target ? e.target.value : e;
7557
7429
  const localMoment = this.localMoment(value, this.getFormat("datetime"));
7558
- let update = { inputValue: value };
7430
+ const update = { inputValue: value };
7559
7431
  if (localMoment.isValid()) {
7560
7432
  update.selectedDate = localMoment;
7561
7433
  update.viewDate = localMoment.clone().startOf("month");
@@ -7619,9 +7491,9 @@ class Datetime extends React__default.Component {
7619
7491
  return this.props.renderView(this.state.currentView, this._renderCalendar);
7620
7492
  }
7621
7493
  getInitialState() {
7622
- let props = this.props;
7623
- let inputFormat = this.getFormat("datetime");
7624
- let selectedDate = this.parseDate(
7494
+ const props = this.props;
7495
+ const inputFormat = this.getFormat("datetime");
7496
+ const selectedDate = this.parseDate(
7625
7497
  props.value || props.initialValue,
7626
7498
  inputFormat
7627
7499
  );
@@ -7652,7 +7524,7 @@ class Datetime extends React__default.Component {
7652
7524
  return this.getInitialDate();
7653
7525
  }
7654
7526
  getInitialDate() {
7655
- let m = this.localMoment();
7527
+ const m = this.localMoment();
7656
7528
  m.hour(0).minute(0).second(0).millisecond(0);
7657
7529
  return m;
7658
7530
  }
@@ -7672,8 +7544,8 @@ class Datetime extends React__default.Component {
7672
7544
  }
7673
7545
  getClassName() {
7674
7546
  let cn2 = "rdt";
7675
- let props = this.props;
7676
- let propCn = props.className;
7547
+ const props = this.props;
7548
+ const propCn = props.className;
7677
7549
  if (Array.isArray(propCn)) {
7678
7550
  cn2 += " " + propCn.join(" ");
7679
7551
  } else if (propCn) {
@@ -7706,14 +7578,14 @@ class Datetime extends React__default.Component {
7706
7578
  return viewModes.DAYS;
7707
7579
  }
7708
7580
  getLocaleData() {
7709
- let p = this.props;
7581
+ const p = this.props;
7710
7582
  return this.localMoment(
7711
7583
  p.value || p.defaultValue || /* @__PURE__ */ new Date()
7712
7584
  ).localeData();
7713
7585
  }
7714
7586
  getDateFormat() {
7715
7587
  const locale = this.getLocaleData();
7716
- let format2 = this.props.dateFormat;
7588
+ const format2 = this.props.dateFormat;
7717
7589
  if (format2 === true)
7718
7590
  return locale.longDateFormat("L");
7719
7591
  if (format2)
@@ -7722,7 +7594,7 @@ class Datetime extends React__default.Component {
7722
7594
  }
7723
7595
  getTimeFormat() {
7724
7596
  const locale = this.getLocaleData();
7725
- let format2 = this.props.timeFormat;
7597
+ const format2 = this.props.timeFormat;
7726
7598
  if (format2 === true) {
7727
7599
  return locale.longDateFormat("LT");
7728
7600
  }
@@ -7734,12 +7606,12 @@ class Datetime extends React__default.Component {
7734
7606
  } else if (type === "time") {
7735
7607
  return this.getTimeFormat();
7736
7608
  }
7737
- let dateFormat = this.getDateFormat();
7738
- let timeFormat = this.getTimeFormat();
7609
+ const dateFormat = this.getDateFormat();
7610
+ const timeFormat = this.getTimeFormat();
7739
7611
  return dateFormat && timeFormat ? dateFormat + " " + timeFormat : dateFormat || timeFormat;
7740
7612
  }
7741
7613
  updateTime(op, amount, type, toSelected) {
7742
- let update = {};
7614
+ const update = {};
7743
7615
  const date = toSelected ? "selectedDate" : "viewDate";
7744
7616
  update[date] = this.state[date].clone()[op](amount, type);
7745
7617
  this.setState(update);
@@ -7772,7 +7644,7 @@ class Datetime extends React__default.Component {
7772
7644
  if (prevProps === this.props)
7773
7645
  return;
7774
7646
  let needsUpdate = false;
7775
- let thisProps = this.props;
7647
+ const thisProps = this.props;
7776
7648
  ["locale", "utc", "displayZone", "dateFormat", "timeFormat"].forEach(
7777
7649
  function(p) {
7778
7650
  prevProps[p] !== thisProps[p] && (needsUpdate = true);
@@ -7788,8 +7660,8 @@ class Datetime extends React__default.Component {
7788
7660
  }
7789
7661
  regenerateDates() {
7790
7662
  const props = this.props;
7791
- let viewDate = this.state.viewDate.clone();
7792
- let selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
7663
+ const viewDate = this.state.viewDate.clone();
7664
+ const selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
7793
7665
  if (props.locale) {
7794
7666
  viewDate.locale(props.locale);
7795
7667
  selectedDate && selectedDate.locale(props.locale);
@@ -7804,7 +7676,7 @@ class Datetime extends React__default.Component {
7804
7676
  viewDate.locale();
7805
7677
  selectedDate && selectedDate.locale();
7806
7678
  }
7807
- let update = { viewDate, selectedDate };
7679
+ const update = { viewDate, selectedDate };
7808
7680
  if (selectedDate && selectedDate.isValid()) {
7809
7681
  update.inputValue = selectedDate.format(this.getFormat("datetime"));
7810
7682
  }
@@ -7813,7 +7685,7 @@ class Datetime extends React__default.Component {
7813
7685
  getSelectedDate() {
7814
7686
  if (this.props.value === void 0)
7815
7687
  return this.state.selectedDate;
7816
- let selectedDate = this.parseDate(
7688
+ const selectedDate = this.parseDate(
7817
7689
  this.props.value,
7818
7690
  this.getFormat("datetime")
7819
7691
  );
@@ -7832,7 +7704,7 @@ class Datetime extends React__default.Component {
7832
7704
  return "";
7833
7705
  }
7834
7706
  getInputValue() {
7835
- let selectedDate = this.getSelectedDate();
7707
+ const selectedDate = this.getSelectedDate();
7836
7708
  return selectedDate ? selectedDate.format(this.getFormat("datetime")) : this.state.inputValue;
7837
7709
  }
7838
7710
  /**
@@ -7842,7 +7714,7 @@ class Datetime extends React__default.Component {
7842
7714
  * @public
7843
7715
  */
7844
7716
  setViewDate(date) {
7845
- let logError = function() {
7717
+ const logError = function() {
7846
7718
  return log("Invalid date passed to the `setViewDate` method: " + date);
7847
7719
  };
7848
7720
  if (!date)
@@ -7938,7 +7810,7 @@ __publicField(Datetime, "defaultProps", {
7938
7810
  // Make moment accessible through the Datetime class
7939
7811
  __publicField(Datetime, "moment", moment);
7940
7812
  function log(message, method) {
7941
- let con = typeof window !== "undefined" && window.console;
7813
+ const con = typeof window !== "undefined" && window.console;
7942
7814
  if (!con)
7943
7815
  return;
7944
7816
  if (!method) {
@@ -7946,22 +7818,13 @@ function log(message, method) {
7946
7818
  }
7947
7819
  con[method]("***react-datetime:" + message);
7948
7820
  }
7949
- class ClickOutBase extends React__default.Component {
7950
- constructor() {
7951
- super(...arguments);
7952
- __publicField(this, "container", React__default.createRef());
7953
- }
7954
- render() {
7955
- return /* @__PURE__ */ React__default.createElement("div", { className: this.props.className, ref: this.container }, this.props.children);
7956
- }
7957
- handleClickOutside(e) {
7958
- this.props.onClickOut(e);
7959
- }
7960
- setClickOutsideRef() {
7961
- return this.container.current;
7962
- }
7821
+ function ClickableWrapper({ className, onClickOut, children }) {
7822
+ const containerRef = useRef(null);
7823
+ _default(containerRef, (event) => {
7824
+ onClickOut(event);
7825
+ });
7826
+ return /* @__PURE__ */ React__default.createElement("div", { className, ref: containerRef }, children);
7963
7827
  }
7964
- const ClickableWrapper = onClickOutsideHOC(ClickOutBase);
7965
7828
  const DEFAULT_DATE_DISPLAY_FORMAT = "MMM DD, YYYY";
7966
7829
  const DEFAULT_TIME_DISPLAY_FORMAT = "h:mm A";
7967
7830
  const format$1 = (val, _name, field) => {
@@ -8004,7 +7867,10 @@ const DateField = wrapFieldsWithMeta(
8004
7867
  ReactDateTimeWithStyles,
8005
7868
  {
8006
7869
  value: input.value,
8007
- onChange: input.onChange,
7870
+ onChange: (value) => {
7871
+ const newValue = value === "" ? void 0 : value;
7872
+ input.onChange(newValue);
7873
+ },
8008
7874
  dateFormat: dateFormat || DEFAULT_DATE_DISPLAY_FORMAT,
8009
7875
  timeFormat: timeFormat || false,
8010
7876
  inputProps: { className: textFieldClasses },
@@ -8767,7 +8633,10 @@ const BranchSelector = ({
8767
8633
  label: "View in GitHub",
8768
8634
  Icon: /* @__PURE__ */ React.createElement(BiLinkExternal, { className: "w-5 h-auto text-blue-500 opacity-70" }),
8769
8635
  onMouseDown: () => {
8770
- window.open(branch.githubPullRequestUrl, "_blank");
8636
+ window.open(
8637
+ branch.githubPullRequestUrl,
8638
+ "_blank"
8639
+ );
8771
8640
  }
8772
8641
  },
8773
8642
  typeof previewFunction === "function" && ((_b2 = previewFunction({ branch: branch.name })) == null ? void 0 : _b2.url) && {
@@ -9073,7 +8942,9 @@ class EventBus {
9073
8942
  } else {
9074
8943
  events = event;
9075
8944
  }
9076
- const newListeners = events.map((event2) => new Listener(event2, callback));
8945
+ const newListeners = events.map(
8946
+ (event2) => new Listener(event2, callback)
8947
+ );
9077
8948
  newListeners.forEach((newListener) => this.listeners.add(newListener));
9078
8949
  return () => {
9079
8950
  newListeners.forEach((listener) => this.listeners.delete(listener));
@@ -9429,9 +9300,7 @@ class TinaMediaStore {
9429
9300
  const deleteStartTime = Date.now();
9430
9301
  while (true) {
9431
9302
  await new Promise((resolve) => setTimeout(resolve, 1e3));
9432
- const { error, message } = await this.api.getRequestStatus(
9433
- requestId
9434
- );
9303
+ const { error, message } = await this.api.getRequestStatus(requestId);
9435
9304
  if (error !== void 0) {
9436
9305
  if (error) {
9437
9306
  throw new Error(message);
@@ -9456,6 +9325,17 @@ class TinaMediaStore {
9456
9325
  }
9457
9326
  }
9458
9327
  }
9328
+ const encodeUrlIfNeeded = (url) => {
9329
+ if (url) {
9330
+ try {
9331
+ return new URL(url).toString();
9332
+ } catch (e) {
9333
+ return url;
9334
+ }
9335
+ } else {
9336
+ return url;
9337
+ }
9338
+ };
9459
9339
  let MediaManager$1 = class MediaManager {
9460
9340
  constructor(store, events) {
9461
9341
  this.store = store;
@@ -9528,6 +9408,20 @@ let MediaManager$1 = class MediaManager {
9528
9408
  try {
9529
9409
  this.events.dispatch({ type: "media:list:start", ...options });
9530
9410
  const media = await this.store.list(options);
9411
+ media.items = media.items.map((item) => {
9412
+ if (item.type === "dir") {
9413
+ return item;
9414
+ }
9415
+ if (item.thumbnails) {
9416
+ for (const [size, src] of Object.entries(item.thumbnails)) {
9417
+ item.thumbnails[size] = encodeUrlIfNeeded(src);
9418
+ }
9419
+ }
9420
+ return {
9421
+ ...item,
9422
+ src: encodeUrlIfNeeded(item.src)
9423
+ };
9424
+ });
9531
9425
  this.events.dispatch({ type: "media:list:success", ...options, media });
9532
9426
  return media;
9533
9427
  } catch (error) {
@@ -9815,7 +9709,7 @@ class SidebarState {
9815
9709
  }
9816
9710
  }
9817
9711
  function createScreen({
9818
- Component: Component2,
9712
+ Component,
9819
9713
  props,
9820
9714
  ...options
9821
9715
  }) {
@@ -9824,7 +9718,7 @@ function createScreen({
9824
9718
  layout: "popup",
9825
9719
  ...options,
9826
9720
  Component(screenProps) {
9827
- return /* @__PURE__ */ React__default.createElement(Component2, { ...screenProps, ...props });
9721
+ return /* @__PURE__ */ React__default.createElement(Component, { ...screenProps, ...props });
9828
9722
  }
9829
9723
  };
9830
9724
  }
@@ -10335,7 +10229,7 @@ const SyncStatus = ({ cms, setEventsOpen }) => {
10335
10229
  "Event Log"
10336
10230
  ));
10337
10231
  };
10338
- const version = "2.3.0";
10232
+ const version = "2.7.2";
10339
10233
  const Nav = ({
10340
10234
  isLocalMode,
10341
10235
  className = "",
@@ -10971,7 +10865,7 @@ const SidebarHeader = ({
10971
10865
  className: "h-5 w-auto -mx-1 text-blue-500",
10972
10866
  stroke: "currentColor",
10973
10867
  fill: "currentColor",
10974
- "stroke-width": "0",
10868
+ strokeWidth: "0",
10975
10869
  viewBox: "0 0 24 24",
10976
10870
  xmlns: "http://www.w3.org/2000/svg"
10977
10871
  },
@@ -11561,7 +11455,10 @@ function MediaPicker({
11561
11455
  const observer = new IntersectionObserver((entries) => {
11562
11456
  const target = entries[0];
11563
11457
  if (target.isIntersecting && list.nextOffset) {
11564
- setOffsetHistory((offsetHistory2) => [...offsetHistory2, list.nextOffset]);
11458
+ setOffsetHistory((offsetHistory2) => [
11459
+ ...offsetHistory2,
11460
+ list.nextOffset
11461
+ ]);
11565
11462
  }
11566
11463
  });
11567
11464
  if (loaderRef.current) {
@@ -12525,7 +12422,9 @@ const ActiveFieldIndicator = () => {
12525
12422
  if (activeEle) {
12526
12423
  setDisplay(true);
12527
12424
  setPosition(activeEle.getBoundingClientRect());
12528
- const iframe = document.getElementById("tina-iframe");
12425
+ const iframe = document.getElementById(
12426
+ "tina-iframe"
12427
+ );
12529
12428
  if (iframe) {
12530
12429
  setIframePosition(iframe.getBoundingClientRect());
12531
12430
  }
@@ -12866,15 +12765,14 @@ const FormBuilder = ({
12866
12765
  fields: fieldGroup.fields
12867
12766
  }
12868
12767
  ) : /* @__PURE__ */ React.createElement(NoFieldsPlaceholder, null)
12869
- )), !hideFooter && /* @__PURE__ */ React.createElement("div", { className: "relative flex-none w-full h-16 px-6 bg-white border-t border-gray-100 flex items-center justify-center" }, /* @__PURE__ */ React.createElement("div", { className: "flex-1 w-full flex justify-between gap-4 items-center max-w-form" }, tinaForm.reset && /* @__PURE__ */ React.createElement(
12768
+ )), !hideFooter && /* @__PURE__ */ React.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.createElement("div", { className: "flex-1 w-full justify-end gap-2 flex items-center max-w-form" }, tinaForm.reset && /* @__PURE__ */ React.createElement(
12870
12769
  ResetForm,
12871
12770
  {
12872
12771
  pristine,
12873
12772
  reset: async () => {
12874
12773
  finalForm.reset();
12875
12774
  await tinaForm.reset();
12876
- },
12877
- style: { flexGrow: 1 }
12775
+ }
12878
12776
  },
12879
12777
  tinaForm.buttons.reset
12880
12778
  ), /* @__PURE__ */ React.createElement(
@@ -12883,8 +12781,7 @@ const FormBuilder = ({
12883
12781
  onClick: safeHandleSubmit,
12884
12782
  disabled: !canSubmit,
12885
12783
  busy: submitting,
12886
- variant: "primary",
12887
- style: { flexGrow: 3 }
12784
+ variant: "primary"
12888
12785
  },
12889
12786
  submitting && /* @__PURE__ */ React.createElement(LoadingDots, null),
12890
12787
  !submitting && tinaForm.buttons.save
@@ -13145,7 +13042,9 @@ const ImgEmbed = ({
13145
13042
  const { fieldName } = useTemplates();
13146
13043
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13147
13044
  useHotkey("enter", () => {
13148
- insertNodes(editor, [{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13045
+ insertNodes(editor, [
13046
+ { type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13047
+ ]);
13149
13048
  });
13150
13049
  return /* @__PURE__ */ React__default.createElement("span", { ...attributes, className: "" }, children, element.url ? /* @__PURE__ */ React__default.createElement(
13151
13050
  "div",
@@ -13266,9 +13165,9 @@ const EllipsisIcon = ({ title }) => {
13266
13165
  ));
13267
13166
  };
13268
13167
  const Wrapper$1 = ({ inline, children }) => {
13269
- const Component2 = inline ? "span" : "div";
13168
+ const Component = inline ? "span" : "div";
13270
13169
  return /* @__PURE__ */ React__default.createElement(
13271
- Component2,
13170
+ Component,
13272
13171
  {
13273
13172
  contentEditable: false,
13274
13173
  style: { userSelect: "none" },
@@ -13288,7 +13187,9 @@ const InlineEmbed = ({
13288
13187
  const { templates, fieldName } = useTemplates();
13289
13188
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13290
13189
  useHotkey("enter", () => {
13291
- insertNodes(editor, [{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13190
+ insertNodes(editor, [
13191
+ { type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13192
+ ]);
13292
13193
  });
13293
13194
  useHotkey("space", () => {
13294
13195
  insertNodes(editor, [{ text: " " }], {
@@ -13344,7 +13245,9 @@ const BlockEmbed = ({
13344
13245
  const { templates, fieldName } = useTemplates();
13345
13246
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13346
13247
  useHotkey("enter", () => {
13347
- insertNodes(editor, [{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13248
+ insertNodes(editor, [
13249
+ { type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13250
+ ]);
13348
13251
  });
13349
13252
  const activeTemplate = templates.find(
13350
13253
  (template) => template.name === element.name
@@ -13690,6 +13593,11 @@ const autoformatMarks = [
13690
13593
  mode: "mark",
13691
13594
  type: MARK_CODE,
13692
13595
  match: "`"
13596
+ },
13597
+ {
13598
+ mode: "mark",
13599
+ type: MARK_STRIKETHROUGH,
13600
+ match: ["~~", "~"]
13693
13601
  }
13694
13602
  ];
13695
13603
  const autoformatRules = [
@@ -13831,16 +13739,14 @@ const plugins$1 = [
13831
13739
  })
13832
13740
  ];
13833
13741
  const plugins = [
13742
+ createBasicMarksPlugin(),
13834
13743
  createHeadingPlugin(),
13835
13744
  createParagraphPlugin(),
13836
13745
  createCodeBlockPlugin(),
13837
13746
  createHTMLBlockPlugin(),
13838
13747
  createHTMLInlinePlugin(),
13839
13748
  createBlockquotePlugin(),
13840
- createBoldPlugin(),
13841
- createItalicPlugin(),
13842
13749
  createUnderlinePlugin(),
13843
- createCodePlugin(),
13844
13750
  createListPlugin(),
13845
13751
  createIndentListPlugin(),
13846
13752
  createHorizontalRulePlugin(),
@@ -14056,13 +13962,13 @@ const TooltipContent = withCn(
14056
13962
  }),
14057
13963
  "z-[9999] overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md"
14058
13964
  );
14059
- function withTooltip(Component2) {
13965
+ function withTooltip(Component) {
14060
13966
  return React__default.forwardRef(function ExtendComponent({ tooltip, tooltipContentProps, tooltipProps, ...props }, ref) {
14061
13967
  const [mounted, setMounted] = React__default.useState(false);
14062
13968
  React__default.useEffect(() => {
14063
13969
  setMounted(true);
14064
13970
  }, []);
14065
- const component = /* @__PURE__ */ React__default.createElement(Component2, { ref, ...props });
13971
+ const component = /* @__PURE__ */ React__default.createElement(Component, { ref, ...props });
14066
13972
  if (tooltip && mounted) {
14067
13973
  return /* @__PURE__ */ React__default.createElement(Tooltip, { ...tooltipProps }, /* @__PURE__ */ React__default.createElement(TooltipTrigger, { asChild: true }, component), /* @__PURE__ */ React__default.createElement(TooltipPortal, null, /* @__PURE__ */ React__default.createElement(TooltipContent, { ...tooltipContentProps }, tooltip)));
14068
13974
  }
@@ -14200,7 +14106,9 @@ const EMBED_ICON_WIDTH = 78;
14200
14106
  const CONTAINER_MD_BREAKPOINT = 448;
14201
14107
  const FLOAT_BUTTON_WIDTH = 25;
14202
14108
  const HEADING_LABEL = "Headings";
14203
- const ToolbarContext = createContext(void 0);
14109
+ const ToolbarContext = createContext(
14110
+ void 0
14111
+ );
14204
14112
  const ToolbarProvider = ({
14205
14113
  tinaForm,
14206
14114
  templates,
@@ -14350,7 +14258,7 @@ const useCodeBlockToolbarButton = (state) => {
14350
14258
  const CodeBlockToolbarButton = withRef(({ clear, ...rest }, ref) => {
14351
14259
  const state = useCodeBlockToolbarButtonState();
14352
14260
  const { props } = useCodeBlockToolbarButton(state);
14353
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.codeBlock, null));
14261
+ return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Code Block", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.codeBlock, null));
14354
14262
  });
14355
14263
  const useImageToolbarButtonState = () => {
14356
14264
  const editor = useEditorState();
@@ -14382,36 +14290,54 @@ const useImageToolbarButton = (state) => {
14382
14290
  const ImageToolbarButton = withRef(({ clear, ...rest }, ref) => {
14383
14291
  const state = useImageToolbarButtonState();
14384
14292
  const { props } = useImageToolbarButton(state);
14385
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.image, null));
14386
- });
14387
- const IndentListToolbarButton = withRef(({ nodeType = ELEMENT_UL }, ref) => {
14388
- const editor = useEditorState();
14389
- const state = useListToolbarButtonState({ nodeType });
14390
- const { props } = useListToolbarButton(state);
14391
- return /* @__PURE__ */ React__default.createElement(
14392
- ToolbarButton,
14393
- {
14394
- ref,
14395
- tooltip: nodeType === ELEMENT_UL ? "Bulleted List" : "Numbered List",
14396
- ...props,
14397
- onClick: (e) => {
14398
- e.preventDefault();
14399
- e.stopPropagation();
14400
- toggleList(editor, { type: nodeType });
14401
- }
14402
- },
14403
- nodeType === ELEMENT_UL ? /* @__PURE__ */ React__default.createElement(Icons.ul, null) : /* @__PURE__ */ React__default.createElement(Icons.ol, null)
14404
- );
14293
+ return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Image", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.image, null));
14405
14294
  });
14295
+ const UnorderedListToolbarButton = withRef(
14296
+ (props, ref) => {
14297
+ const editor = useEditorState();
14298
+ const state = useListToolbarButtonState({ nodeType: ELEMENT_UL });
14299
+ const { props: buttonProps } = useListToolbarButton(state);
14300
+ return /* @__PURE__ */ React__default.createElement(
14301
+ ToolbarButton,
14302
+ {
14303
+ ref,
14304
+ tooltip: "Bulleted List",
14305
+ ...buttonProps,
14306
+ onClick: (e) => {
14307
+ e.preventDefault();
14308
+ e.stopPropagation();
14309
+ toggleList(editor, { type: ELEMENT_UL });
14310
+ }
14311
+ },
14312
+ /* @__PURE__ */ React__default.createElement(Icons.ul, null)
14313
+ );
14314
+ }
14315
+ );
14316
+ const OrderedListToolbarButton = withRef(
14317
+ (props, ref) => {
14318
+ const editor = useEditorState();
14319
+ const state = useListToolbarButtonState({ nodeType: ELEMENT_OL });
14320
+ const { props: buttonProps } = useListToolbarButton(state);
14321
+ return /* @__PURE__ */ React__default.createElement(
14322
+ ToolbarButton,
14323
+ {
14324
+ ref,
14325
+ tooltip: "Numbered List",
14326
+ ...buttonProps,
14327
+ onClick: (e) => {
14328
+ e.preventDefault();
14329
+ e.stopPropagation();
14330
+ toggleList(editor, { type: ELEMENT_OL });
14331
+ }
14332
+ },
14333
+ /* @__PURE__ */ React__default.createElement(Icons.ol, null)
14334
+ );
14335
+ }
14336
+ );
14406
14337
  const LinkToolbarButton = withRef((rest, ref) => {
14407
14338
  const state = useLinkToolbarButtonState();
14408
14339
  const { props } = useLinkToolbarButton(state);
14409
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link", ...props, ...rest }, /* @__PURE__ */ React__default.createElement(Icons.link, null));
14410
- });
14411
- const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
14412
- const state = useMarkToolbarButtonState({ clear, nodeType });
14413
- const { props } = useMarkToolbarButton(state);
14414
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
14340
+ return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest, tooltip: "Link" }, /* @__PURE__ */ React__default.createElement(Icons.link, null));
14415
14341
  });
14416
14342
  const useMermaidToolbarButtonState = () => {
14417
14343
  const editor = useEditorState();
@@ -14454,6 +14380,7 @@ function OverflowMenu({
14454
14380
  ToolbarButton,
14455
14381
  {
14456
14382
  showArrow: false,
14383
+ "data-testid": "rich-text-editor-overflow-menu-button",
14457
14384
  className: "lg:min-w-[130px]",
14458
14385
  isDropdown: true,
14459
14386
  pressed: openState.open,
@@ -14491,7 +14418,7 @@ const useBlockQuoteToolbarButton = (state) => {
14491
14418
  const QuoteToolbarButton = withRef(({ clear, ...rest }, ref) => {
14492
14419
  const state = useBlockQuoteToolbarButtonState();
14493
14420
  const { props } = useBlockQuoteToolbarButton(state);
14494
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.quote, null));
14421
+ return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Quote (⌘+⇧+.)", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.quote, null));
14495
14422
  });
14496
14423
  const useRawMarkdownToolbarButton = () => {
14497
14424
  const { setRawMode } = useEditorContext();
@@ -14507,7 +14434,17 @@ const useRawMarkdownToolbarButton = () => {
14507
14434
  };
14508
14435
  const RawMarkdownToolbarButton = withRef(({ clear, ...rest }, ref) => {
14509
14436
  const { props } = useRawMarkdownToolbarButton();
14510
- return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.raw, null));
14437
+ return /* @__PURE__ */ React__default.createElement(
14438
+ ToolbarButton,
14439
+ {
14440
+ ref,
14441
+ tooltip: "Raw Markdown",
14442
+ ...rest,
14443
+ ...props,
14444
+ "data-testid": "markdown-button"
14445
+ },
14446
+ /* @__PURE__ */ React__default.createElement(Icons.raw, null)
14447
+ );
14511
14448
  });
14512
14449
  function TableDropdownMenu(props) {
14513
14450
  const tableSelected = useEditorSelector(
@@ -14646,7 +14583,7 @@ const EmbedButton = ({ editor, templates }) => {
14646
14583
  key: template.name,
14647
14584
  onMouseDown: (e) => {
14648
14585
  e.preventDefault();
14649
- close();
14586
+ setOpen(false);
14650
14587
  insertMDX(editor, template);
14651
14588
  },
14652
14589
  className: ""
@@ -14654,6 +14591,15 @@ const EmbedButton = ({ editor, templates }) => {
14654
14591
  template.label || template.name
14655
14592
  ))));
14656
14593
  };
14594
+ const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
14595
+ const state = useMarkToolbarButtonState({ clear, nodeType });
14596
+ const { props } = useMarkToolbarButton(state);
14597
+ return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
14598
+ });
14599
+ const BoldToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: MARK_BOLD }, /* @__PURE__ */ React__default.createElement(Icons.bold, null));
14600
+ const StrikethroughToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Strikethrough", nodeType: MARK_STRIKETHROUGH }, /* @__PURE__ */ React__default.createElement(Icons.strikethrough, null));
14601
+ const ItalicToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: MARK_ITALIC }, /* @__PURE__ */ React__default.createElement(Icons.italic, null));
14602
+ const CodeToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: MARK_CODE }, /* @__PURE__ */ React__default.createElement(Icons.code, null));
14657
14603
  const toolbarItems = {
14658
14604
  heading: {
14659
14605
  label: HEADING_LABEL,
@@ -14674,32 +14620,37 @@ const toolbarItems = {
14674
14620
  quote: {
14675
14621
  label: "Quote",
14676
14622
  width: () => STANDARD_ICON_WIDTH,
14677
- Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton, { tooltip: "Quote Quote (⌘+⇧+.)" })
14623
+ Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton, null)
14678
14624
  },
14679
14625
  ul: {
14680
14626
  label: "Unordered List",
14681
14627
  width: () => STANDARD_ICON_WIDTH,
14682
- Component: /* @__PURE__ */ React__default.createElement(IndentListToolbarButton, { nodeType: ELEMENT_UL })
14628
+ Component: /* @__PURE__ */ React__default.createElement(UnorderedListToolbarButton, null)
14683
14629
  },
14684
14630
  ol: {
14685
14631
  label: "Ordered List",
14686
14632
  width: () => STANDARD_ICON_WIDTH,
14687
- Component: /* @__PURE__ */ React__default.createElement(IndentListToolbarButton, { nodeType: ELEMENT_OL })
14633
+ Component: /* @__PURE__ */ React__default.createElement(OrderedListToolbarButton, null)
14688
14634
  },
14689
14635
  bold: {
14690
14636
  label: "Bold",
14691
14637
  width: () => STANDARD_ICON_WIDTH,
14692
- Component: /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: MARK_BOLD }, /* @__PURE__ */ React__default.createElement(Icons.bold, null))
14638
+ Component: /* @__PURE__ */ React__default.createElement(BoldToolbarButton, null)
14639
+ },
14640
+ strikethrough: {
14641
+ label: "Strikethrough",
14642
+ width: () => STANDARD_ICON_WIDTH,
14643
+ Component: /* @__PURE__ */ React__default.createElement(StrikethroughToolbarButton, null)
14693
14644
  },
14694
14645
  italic: {
14695
14646
  label: "Italic",
14696
14647
  width: () => STANDARD_ICON_WIDTH,
14697
- Component: /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: MARK_ITALIC }, /* @__PURE__ */ React__default.createElement(Icons.italic, null))
14648
+ Component: /* @__PURE__ */ React__default.createElement(ItalicToolbarButton, null)
14698
14649
  },
14699
14650
  code: {
14700
14651
  label: "Code",
14701
14652
  width: () => STANDARD_ICON_WIDTH,
14702
- Component: /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: MARK_CODE }, /* @__PURE__ */ React__default.createElement(Icons.code, null))
14653
+ Component: /* @__PURE__ */ React__default.createElement(CodeToolbarButton, null)
14703
14654
  },
14704
14655
  codeBlock: {
14705
14656
  label: "Code Block",
@@ -14732,7 +14683,12 @@ function FixedToolbarButtons() {
14732
14683
  const [itemsShown, setItemsShown] = React__default.useState(11);
14733
14684
  const { overrides, templates } = useToolbarContext();
14734
14685
  const showEmbedButton = templates.length > 0;
14735
- let items2 = overrides === void 0 ? Object.values(toolbarItems) : overrides.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
14686
+ let items2 = [];
14687
+ if (Array.isArray(overrides)) {
14688
+ items2 = overrides === void 0 ? Object.values(toolbarItems) : overrides.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
14689
+ } else {
14690
+ items2 = (overrides == null ? void 0 : overrides.toolbar) === void 0 ? Object.values(toolbarItems) : overrides.toolbar.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
14691
+ }
14736
14692
  if (!showEmbedButton) {
14737
14693
  items2 = items2.filter((item) => item.label !== toolbarItems.embed.label);
14738
14694
  }
@@ -15060,6 +15016,9 @@ const isUrl = (string) => {
15060
15016
  if (typeof string !== "string") {
15061
15017
  return false;
15062
15018
  }
15019
+ if (string.startsWith("#")) {
15020
+ return true;
15021
+ }
15063
15022
  const generalMatch = string.match(protocolAndDomainRE);
15064
15023
  const emailLinkMatch = string.match(emailLintRE);
15065
15024
  const localUrlMatch = string.match(localUrlRE);
@@ -15081,12 +15040,12 @@ const isUrl = (string) => {
15081
15040
  }
15082
15041
  return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);
15083
15042
  };
15084
- const RichEditor = (props) => {
15043
+ const RichEditor = ({ input, tinaForm, field }) => {
15085
15044
  var _a;
15086
15045
  const initialValue = React__default.useMemo(
15087
15046
  () => {
15088
15047
  var _a2, _b;
15089
- return ((_b = (_a2 = props.input.value) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) ? props.input.value.children.map(helpers.normalize) : [{ type: "p", children: [{ type: "text", text: "" }] }];
15048
+ 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: "" }] }];
15090
15049
  },
15091
15050
  []
15092
15051
  );
@@ -15114,7 +15073,7 @@ const RichEditor = (props) => {
15114
15073
  ),
15115
15074
  []
15116
15075
  );
15117
- const tempId = [props.tinaForm.id, props.input.name].join(".");
15076
+ const tempId = [tinaForm.id, input.name].join(".");
15118
15077
  const id = React__default.useMemo(() => uuid() + tempId, [tempId]);
15119
15078
  const ref = React__default.useRef(null);
15120
15079
  React__default.useEffect(() => {
@@ -15124,13 +15083,13 @@ const RichEditor = (props) => {
15124
15083
  const plateElement = (_a2 = ref.current) == null ? void 0 : _a2.querySelector(
15125
15084
  '[role="textbox"]'
15126
15085
  );
15127
- if (props.field.experimental_focusIntent && plateElement) {
15086
+ if (field.experimental_focusIntent && plateElement) {
15128
15087
  if (plateElement)
15129
15088
  plateElement.focus();
15130
15089
  }
15131
15090
  }, 100);
15132
15091
  }
15133
- }, [props.field.experimental_focusIntent, ref]);
15092
+ }, [field.experimental_focusIntent, ref]);
15134
15093
  return /* @__PURE__ */ React__default.createElement("div", { ref }, /* @__PURE__ */ React__default.createElement(
15135
15094
  Plate,
15136
15095
  {
@@ -15138,7 +15097,7 @@ const RichEditor = (props) => {
15138
15097
  initialValue,
15139
15098
  plugins: plugins$2,
15140
15099
  onChange: (value) => {
15141
- props.input.onChange({
15100
+ input.onChange({
15142
15101
  type: "root",
15143
15102
  children: value
15144
15103
  });
@@ -15147,12 +15106,12 @@ const RichEditor = (props) => {
15147
15106
  /* @__PURE__ */ React__default.createElement(TooltipProvider, null, /* @__PURE__ */ React__default.createElement(
15148
15107
  ToolbarProvider,
15149
15108
  {
15150
- tinaForm: props.tinaForm,
15151
- templates: props.field.templates,
15152
- overrides: (_a = props.field) == null ? void 0 : _a.toolbarOverride
15109
+ tinaForm,
15110
+ templates: field.templates,
15111
+ overrides: (field == null ? void 0 : field.toolbarOverride) ? field.toolbarOverride : field.overrides
15153
15112
  },
15154
15113
  /* @__PURE__ */ React__default.createElement(FixedToolbar, null, /* @__PURE__ */ React__default.createElement(FixedToolbarButtons, null)),
15155
- /* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null))
15114
+ ((_a = field == null ? void 0 : field.overrides) == null ? void 0 : _a.showFloatingToolbar) !== false ? /* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null)) : null
15156
15115
  ), /* @__PURE__ */ React__default.createElement(Editor, null))
15157
15116
  ));
15158
15117
  };
@@ -16340,132 +16299,1209 @@ const ben = [
16340
16299
  "হয়"
16341
16300
  ];
16342
16301
  const bre = [
16302
+ "'blam",
16303
+ "'d",
16304
+ "'m",
16305
+ "'r",
16306
+ "'ta",
16307
+ "'vat",
16308
+ "'z",
16309
+ "'zo",
16343
16310
  "a",
16344
- "ainda",
16345
- "alem",
16346
- "ambas",
16347
- "ambos",
16348
- "antes",
16349
- "ao",
16350
- "aonde",
16351
- "aos",
16352
- "apos",
16353
- "aquele",
16354
- "aqueles",
16355
- "as",
16356
- "assim",
16357
- "com",
16358
- "como",
16359
- "contra",
16360
- "contudo",
16361
- "cuja",
16362
- "cujas",
16363
- "cujo",
16364
- "cujos",
16311
+ "a:",
16312
+ "aba",
16313
+ "abalamour",
16314
+ "abaoe",
16315
+ "ac'hane",
16316
+ "ac'hanoc'h",
16317
+ "ac'hanomp",
16318
+ "ac'hanon",
16319
+ "ac'hanout",
16320
+ "adal",
16321
+ "adalek",
16322
+ "adarre",
16323
+ "ae",
16324
+ "aec'h",
16325
+ "aed",
16326
+ "aemp",
16327
+ "aen",
16328
+ "aent",
16329
+ "aes",
16330
+ "afe",
16331
+ "afec'h",
16332
+ "afed",
16333
+ "afemp",
16334
+ "afen",
16335
+ "afent",
16336
+ "afes",
16337
+ "ag",
16338
+ "ah",
16339
+ "aimp",
16340
+ "aint",
16341
+ "aio",
16342
+ "aiou",
16343
+ "aje",
16344
+ "ajec'h",
16345
+ "ajed",
16346
+ "ajemp",
16347
+ "ajen",
16348
+ "ajent",
16349
+ "ajes",
16350
+ "al",
16351
+ "alato",
16352
+ "alies",
16353
+ "aliesañ",
16354
+ "alkent",
16355
+ "all",
16356
+ "allas",
16357
+ "allo",
16358
+ "allô",
16359
+ "am",
16360
+ "amañ",
16361
+ "amzer",
16362
+ "an",
16363
+ "anezhañ",
16364
+ "anezhe",
16365
+ "anezhi",
16366
+ "anezho",
16367
+ "anvet",
16368
+ "aon",
16369
+ "aotren",
16370
+ "ar",
16371
+ "arall",
16372
+ "araok",
16373
+ "araoki",
16374
+ "araozañ",
16375
+ "araozo",
16376
+ "araozoc'h",
16377
+ "araozomp",
16378
+ "araozon",
16379
+ "araozor",
16380
+ "araozout",
16381
+ "arbenn",
16382
+ "arre",
16383
+ "atalek",
16384
+ "atav",
16385
+ "az",
16386
+ "azalek",
16387
+ "azirazañ",
16388
+ "azirazi",
16389
+ "azirazo",
16390
+ "azirazoc'h",
16391
+ "azirazomp",
16392
+ "azirazon",
16393
+ "azirazor",
16394
+ "azirazout",
16395
+ "b:",
16396
+ "ba",
16397
+ "ba'l",
16398
+ "ba'n",
16399
+ "ba'r",
16400
+ "bad",
16401
+ "bah",
16402
+ "bal",
16403
+ "ban",
16404
+ "bar",
16405
+ "bastañ",
16406
+ "befe",
16407
+ "bell",
16408
+ "benaos",
16409
+ "benn",
16410
+ "bennag",
16411
+ "bennak",
16412
+ "bennozh",
16413
+ "bep",
16414
+ "bepred",
16415
+ "berr",
16416
+ "berzh",
16417
+ "bet",
16418
+ "betek",
16419
+ "betra",
16420
+ "bev",
16421
+ "bevet",
16422
+ "bez",
16423
+ "bezañ",
16424
+ "beze",
16425
+ "bezent",
16426
+ "bezet",
16427
+ "bezh",
16428
+ "bezit",
16429
+ "bezomp",
16430
+ "bihan",
16431
+ "bije",
16432
+ "biou",
16433
+ "biskoazh",
16434
+ "blam",
16435
+ "bo",
16436
+ "boa",
16437
+ "bominapl",
16438
+ "boudoudom",
16439
+ "bouez",
16440
+ "boull",
16441
+ "boum",
16442
+ "bout",
16443
+ "bras",
16444
+ "brasañ",
16445
+ "brav",
16446
+ "bravo",
16447
+ "bremañ",
16448
+ "bres",
16449
+ "brokenn",
16450
+ "bronn",
16451
+ "brrr",
16452
+ "brutal",
16453
+ "buhezek",
16454
+ "c'h:",
16455
+ "c'haout",
16456
+ "c'he",
16457
+ "c'hem",
16458
+ "c'herz",
16459
+ "c'heñver",
16460
+ "c'hichen",
16461
+ "c'hiz",
16462
+ "c'hoazh",
16463
+ "c'horre",
16464
+ "c'houde",
16465
+ "c'houst",
16466
+ "c'hreiz",
16467
+ "c'hwec'h",
16468
+ "c'hwec'hvet",
16469
+ "c'hwezek",
16470
+ "c'hwi",
16471
+ "ch:",
16472
+ "chaous",
16473
+ "chik",
16474
+ "chit",
16475
+ "chom",
16476
+ "chut",
16477
+ "d'",
16478
+ "d'al",
16479
+ "d'an",
16480
+ "d'ar",
16481
+ "d'az",
16482
+ "d'e",
16483
+ "d'he",
16484
+ "d'ho",
16485
+ "d'hol",
16486
+ "d'hon",
16487
+ "d'hor",
16488
+ "d'o",
16489
+ "d'ober",
16490
+ "d'ul",
16491
+ "d'un",
16492
+ "d'ur",
16493
+ "d:",
16365
16494
  "da",
16366
- "das",
16367
- "de",
16368
- "dela",
16369
- "dele",
16370
- "deles",
16371
- "demais",
16372
- "depois",
16373
- "desde",
16374
- "desta",
16375
- "deste",
16376
- "dispoe",
16377
- "dispoem",
16378
- "diversa",
16379
- "diversas",
16380
- "diversos",
16495
+ "dak",
16496
+ "daka",
16497
+ "dal",
16498
+ "dalbezh",
16499
+ "dalc'hmat",
16500
+ "dalit",
16501
+ "damdost",
16502
+ "damheñvel",
16503
+ "damm",
16504
+ "dan",
16505
+ "danvez",
16506
+ "dao",
16507
+ "daol",
16508
+ "daonet",
16509
+ "daou",
16510
+ "daoust",
16511
+ "daouzek",
16512
+ "daouzekvet",
16513
+ "darn",
16514
+ "dastrewiñ",
16515
+ "dav",
16516
+ "davedoc'h",
16517
+ "davedomp",
16518
+ "davedon",
16519
+ "davedor",
16520
+ "davedout",
16521
+ "davet",
16522
+ "davetañ",
16523
+ "davete",
16524
+ "daveti",
16525
+ "daveto",
16526
+ "defe",
16527
+ "dehou",
16528
+ "dek",
16529
+ "dekvet",
16530
+ "den",
16531
+ "deoc'h",
16532
+ "deomp",
16533
+ "deor",
16534
+ "derc'hel",
16535
+ "deus",
16536
+ "dez",
16537
+ "deze",
16538
+ "dezhañ",
16539
+ "dezhe",
16540
+ "dezhi",
16541
+ "dezho",
16542
+ "di",
16543
+ "diabarzh",
16544
+ "diagent",
16545
+ "diar",
16546
+ "diaraok",
16547
+ "diavaez",
16548
+ "dibaoe",
16549
+ "dibaot",
16550
+ "dibar",
16551
+ "dic'halañ",
16552
+ "didiac'h",
16553
+ "dienn",
16554
+ "difer",
16555
+ "diganeoc'h",
16556
+ "diganeomp",
16557
+ "diganeor",
16558
+ "diganimp",
16559
+ "diganin",
16560
+ "diganit",
16561
+ "digant",
16562
+ "digantañ",
16563
+ "digante",
16564
+ "diganti",
16565
+ "diganto",
16566
+ "digemmesk",
16567
+ "diget",
16568
+ "digor",
16569
+ "digoret",
16570
+ "dija",
16571
+ "dije",
16572
+ "dimp",
16573
+ "din",
16574
+ "dinaou",
16575
+ "dindan",
16576
+ "dindanañ",
16577
+ "dindani",
16578
+ "dindano",
16579
+ "dindanoc'h",
16580
+ "dindanomp",
16581
+ "dindanon",
16582
+ "dindanor",
16583
+ "dindanout",
16584
+ "dioutañ",
16585
+ "dioute",
16586
+ "diouti",
16587
+ "diouto",
16588
+ "diouzh",
16589
+ "diouzhin",
16590
+ "diouzhit",
16591
+ "diouzhoc'h",
16592
+ "diouzhomp",
16593
+ "diouzhor",
16594
+ "dirak",
16595
+ "dirazañ",
16596
+ "dirazi",
16597
+ "dirazo",
16598
+ "dirazoc'h",
16599
+ "dirazomp",
16600
+ "dirazon",
16601
+ "dirazor",
16602
+ "dirazout",
16603
+ "disheñvel",
16604
+ "dispar",
16605
+ "distank",
16606
+ "dister",
16607
+ "disterañ",
16608
+ "disterig",
16609
+ "distro",
16610
+ "dit",
16611
+ "divaez",
16612
+ "diwar",
16613
+ "diwezhat",
16614
+ "diwezhañ",
16381
16615
  "do",
16382
- "dos",
16383
- "durante",
16616
+ "doa",
16617
+ "doare",
16618
+ "dont",
16619
+ "dost",
16620
+ "doue",
16621
+ "douetus",
16622
+ "douez",
16623
+ "doug",
16624
+ "draou",
16625
+ "draoñ",
16626
+ "dre",
16627
+ "drede",
16628
+ "dreist",
16629
+ "dreistañ",
16630
+ "dreisti",
16631
+ "dreisto",
16632
+ "dreistoc'h",
16633
+ "dreistomp",
16634
+ "dreiston",
16635
+ "dreistor",
16636
+ "dreistout",
16637
+ "drek",
16638
+ "dreñv",
16639
+ "dring",
16640
+ "dro",
16641
+ "du",
16384
16642
  "e",
16385
- "ela",
16386
- "elas",
16387
- "ele",
16388
- "eles",
16643
+ "e:",
16644
+ "eas",
16645
+ "ebet",
16646
+ "ec'h",
16647
+ "edo",
16648
+ "edoc'h",
16649
+ "edod",
16650
+ "edomp",
16651
+ "edon",
16652
+ "edont",
16653
+ "edos",
16654
+ "eer",
16655
+ "eeun",
16656
+ "efed",
16657
+ "egedoc'h",
16658
+ "egedomp",
16659
+ "egedon",
16660
+ "egedor",
16661
+ "egedout",
16662
+ "eget",
16663
+ "egetañ",
16664
+ "egete",
16665
+ "egeti",
16666
+ "egeto",
16667
+ "eh",
16668
+ "eil",
16669
+ "eilvet",
16670
+ "eizh",
16671
+ "eizhvet",
16672
+ "ejoc'h",
16673
+ "ejod",
16674
+ "ejomp",
16675
+ "ejont",
16676
+ "ejout",
16677
+ "el",
16389
16678
  "em",
16390
- "entao",
16391
- "entre",
16392
- "essa",
16393
- "essas",
16394
- "esse",
16395
- "esses",
16396
- "esta",
16397
- "estas",
16398
- "este",
16399
- "estes",
16679
+ "emaint",
16680
+ "emaoc'h",
16681
+ "emaomp",
16682
+ "emaon",
16683
+ "emaout",
16684
+ "emañ",
16685
+ "eme",
16686
+ "emeur",
16687
+ "emezañ",
16688
+ "emezi",
16689
+ "emezo",
16690
+ "emezoc'h",
16691
+ "emezomp",
16692
+ "emezon",
16693
+ "emezout",
16694
+ "emporzhiañ",
16695
+ "en",
16696
+ "end",
16697
+ "endan",
16698
+ "endra",
16699
+ "enep",
16700
+ "ennañ",
16701
+ "enni",
16702
+ "enno",
16703
+ "ennoc'h",
16704
+ "ennomp",
16705
+ "ennon",
16706
+ "ennor",
16707
+ "ennout",
16708
+ "enta",
16709
+ "eo",
16710
+ "eomp",
16711
+ "eont",
16712
+ "eor",
16713
+ "eot",
16714
+ "er",
16715
+ "erbet",
16716
+ "erfin",
16717
+ "esa",
16718
+ "esae",
16719
+ "espar",
16720
+ "estlamm",
16721
+ "estrañj",
16722
+ "eta",
16723
+ "etre",
16724
+ "etreoc'h",
16725
+ "etrezo",
16726
+ "etrezoc'h",
16727
+ "etrezomp",
16728
+ "etrezor",
16729
+ "euh",
16730
+ "eur",
16731
+ "eus",
16732
+ "evel",
16733
+ "evelato",
16734
+ "eveldoc'h",
16735
+ "eveldomp",
16736
+ "eveldon",
16737
+ "eveldor",
16738
+ "eveldout",
16739
+ "evelkent",
16740
+ "eveltañ",
16741
+ "evelte",
16742
+ "evelti",
16743
+ "evelto",
16744
+ "evidoc'h",
16745
+ "evidomp",
16746
+ "evidon",
16747
+ "evidor",
16748
+ "evidout",
16749
+ "evit",
16750
+ "evitañ",
16751
+ "evite",
16752
+ "eviti",
16753
+ "evito",
16754
+ "ez",
16755
+ "eñ",
16756
+ "f:",
16757
+ "fac'h",
16758
+ "fall",
16759
+ "fed",
16760
+ "feiz",
16761
+ "fenn",
16762
+ "fezh",
16763
+ "fin",
16764
+ "finsalvet",
16765
+ "foei",
16766
+ "fouilhezañ",
16767
+ "g:",
16768
+ "gallout",
16769
+ "ganeoc'h",
16770
+ "ganeomp",
16771
+ "ganin",
16772
+ "ganit",
16773
+ "gant",
16774
+ "gantañ",
16775
+ "ganti",
16776
+ "ganto",
16777
+ "gaout",
16778
+ "gast",
16779
+ "gein",
16780
+ "gellout",
16781
+ "genndost",
16782
+ "gentañ",
16783
+ "ger",
16784
+ "gerz",
16785
+ "get",
16786
+ "geñver",
16787
+ "gichen",
16788
+ "gin",
16789
+ "giz",
16790
+ "glan",
16791
+ "gloev",
16792
+ "goll",
16793
+ "gorre",
16794
+ "goude",
16795
+ "gouez",
16796
+ "gouezit",
16797
+ "gouezomp",
16798
+ "goulz",
16799
+ "gounnar",
16800
+ "gour",
16801
+ "goust",
16802
+ "gouze",
16803
+ "gouzout",
16804
+ "gra",
16805
+ "grak",
16806
+ "grec'h",
16807
+ "greiz",
16808
+ "grenn",
16809
+ "greomp",
16810
+ "grit",
16811
+ "groñs",
16812
+ "gutez",
16813
+ "gwall",
16814
+ "gwashoc'h",
16815
+ "gwazh",
16816
+ "gwech",
16817
+ "gwechall",
16818
+ "gwechoù",
16819
+ "gwell",
16820
+ "gwezh",
16821
+ "gwezhall",
16822
+ "gwezharall",
16823
+ "gwezhoù",
16824
+ "gwig",
16825
+ "gwirionez",
16826
+ "gwitibunan",
16827
+ "gêr",
16828
+ "h:",
16400
16829
  "ha",
16401
- "isso",
16402
- "isto",
16403
- "logo",
16404
- "mais",
16405
- "mas",
16406
- "mediante",
16407
- "menos",
16408
- "mesma",
16409
- "mesmas",
16410
- "mesmo",
16411
- "mesmos",
16830
+ "hag",
16831
+ "han",
16832
+ "hanter",
16833
+ "hanterc'hantad",
16834
+ "hanterkantved",
16835
+ "harz",
16836
+ "hañ",
16837
+ "hañval",
16838
+ "he",
16839
+ "hebioù",
16840
+ "hec'h",
16841
+ "hei",
16842
+ "hein",
16843
+ "hem",
16844
+ "hemañ",
16845
+ "hen",
16846
+ "hend",
16847
+ "henhont",
16848
+ "henn",
16849
+ "hennezh",
16850
+ "hent",
16851
+ "hep",
16852
+ "hervez",
16853
+ "hervezañ",
16854
+ "hervezi",
16855
+ "hervezo",
16856
+ "hervezoc'h",
16857
+ "hervezomp",
16858
+ "hervezon",
16859
+ "hervezor",
16860
+ "hervezout",
16861
+ "heul",
16862
+ "heuliañ",
16863
+ "hevelep",
16864
+ "heverk",
16865
+ "heñvel",
16866
+ "heñvelat",
16867
+ "heñvelañ",
16868
+ "heñveliñ",
16869
+ "heñveloc'h",
16870
+ "heñvelout",
16871
+ "hi",
16872
+ "hilh",
16873
+ "hini",
16874
+ "hirie",
16875
+ "hirio",
16876
+ "hiziv",
16877
+ "hiziviken",
16878
+ "ho",
16879
+ "hoaliñ",
16880
+ "hoc'h",
16881
+ "hogen",
16882
+ "hogos",
16883
+ "hogozik",
16884
+ "hol",
16885
+ "holl",
16886
+ "holà",
16887
+ "homañ",
16888
+ "hon",
16889
+ "honhont",
16890
+ "honnezh",
16891
+ "hont",
16892
+ "hop",
16893
+ "hopala",
16894
+ "hor",
16895
+ "hou",
16896
+ "houp",
16897
+ "hudu",
16898
+ "hue",
16899
+ "hui",
16900
+ "hum",
16901
+ "hurrah",
16902
+ "i",
16903
+ "i:",
16904
+ "in",
16905
+ "int",
16906
+ "is",
16907
+ "ispisial",
16908
+ "isurzhiet",
16909
+ "it",
16910
+ "ivez",
16911
+ "izelañ",
16912
+ "j:",
16913
+ "just",
16914
+ "k:",
16915
+ "kae",
16916
+ "kaer",
16917
+ "kalon",
16918
+ "kalz",
16919
+ "kant",
16920
+ "kaout",
16921
+ "kar",
16922
+ "kazi",
16923
+ "keid",
16924
+ "kein",
16925
+ "keit",
16926
+ "kel",
16927
+ "kellies",
16928
+ "keloù",
16929
+ "kement",
16930
+ "ken",
16931
+ "kenkent",
16932
+ "kenkoulz",
16933
+ "kenment",
16934
+ "kent",
16935
+ "kentañ",
16936
+ "kentizh",
16937
+ "kentoc'h",
16938
+ "kentre",
16939
+ "ker",
16940
+ "kerkent",
16941
+ "kerz",
16942
+ "kerzh",
16943
+ "ket",
16944
+ "keta",
16945
+ "keñver",
16946
+ "keñverel",
16947
+ "keñverius",
16948
+ "kichen",
16949
+ "kichenik",
16950
+ "kit",
16951
+ "kiz",
16952
+ "klak",
16953
+ "klek",
16954
+ "klik",
16955
+ "komprenet",
16956
+ "komz",
16957
+ "kont",
16958
+ "korf",
16959
+ "korre",
16960
+ "koulskoude",
16961
+ "koulz",
16962
+ "koust",
16963
+ "krak",
16964
+ "krampouezh",
16965
+ "krec'h",
16966
+ "kreiz",
16967
+ "kuit",
16968
+ "kwir",
16969
+ "l:",
16970
+ "la",
16971
+ "laez",
16972
+ "laoskel",
16973
+ "laouen",
16974
+ "lavar",
16975
+ "lavaret",
16976
+ "lavarout",
16977
+ "lec'h",
16978
+ "lein",
16979
+ "leizh",
16980
+ "lerc'h",
16981
+ "leun",
16982
+ "leuskel",
16983
+ "lew",
16984
+ "lies",
16985
+ "liesañ",
16986
+ "lod",
16987
+ "lusk",
16988
+ "lâr",
16989
+ "lârout",
16990
+ "m:",
16991
+ "ma",
16992
+ "ma'z",
16993
+ "mac'h",
16994
+ "mac'hat",
16995
+ "mac'hañ",
16996
+ "mac'hoc'h",
16997
+ "mad",
16998
+ "maez",
16999
+ "maksimal",
17000
+ "mann",
17001
+ "mar",
17002
+ "mard",
17003
+ "marg",
17004
+ "marzh",
17005
+ "mat",
17006
+ "mañ",
17007
+ "me",
17008
+ "memes",
17009
+ "memestra",
17010
+ "merkapl",
17011
+ "mersi",
17012
+ "mes",
17013
+ "mesk",
17014
+ "met",
17015
+ "meur",
17016
+ "mil",
17017
+ "minimal",
17018
+ "moan",
17019
+ "moaniaat",
17020
+ "mod",
17021
+ "mont",
17022
+ "mout",
17023
+ "mui",
17024
+ "muiañ",
17025
+ "muioc'h",
17026
+ "n",
17027
+ "n'",
17028
+ "n:",
16412
17029
  "na",
16413
- "nao",
16414
- "nas",
16415
- "nem",
16416
- "nesse",
16417
- "neste",
16418
- "nos",
17030
+ "nag",
17031
+ "naontek",
17032
+ "naturel",
17033
+ "nav",
17034
+ "navet",
17035
+ "ne",
17036
+ "nebeudig",
17037
+ "nebeut",
17038
+ "nebeutañ",
17039
+ "nebeutoc'h",
17040
+ "neketa",
17041
+ "nemedoc'h",
17042
+ "nemedomp",
17043
+ "nemedon",
17044
+ "nemedor",
17045
+ "nemedout",
17046
+ "nemet",
17047
+ "nemetañ",
17048
+ "nemete",
17049
+ "nemeti",
17050
+ "nemeto",
17051
+ "nemeur",
17052
+ "neoac'h",
17053
+ "nepell",
17054
+ "nerzh",
17055
+ "nes",
17056
+ "neseser",
17057
+ "netra",
17058
+ "neubeudoù",
17059
+ "neuhe",
17060
+ "neuze",
17061
+ "nevez",
17062
+ "newazh",
17063
+ "nez",
17064
+ "ni",
17065
+ "nikun",
17066
+ "niverus",
17067
+ "nul",
16419
17068
  "o",
16420
- "os",
16421
- "ou",
16422
- "outra",
16423
- "outras",
16424
- "outro",
16425
- "outros",
16426
- "pelas",
16427
- "pelo",
16428
- "pelos",
16429
- "perante",
16430
- "pois",
16431
- "por",
16432
- "porque",
16433
- "portanto",
16434
- "propios",
16435
- "proprio",
16436
- "quais",
16437
- "qual",
16438
- "qualquer",
16439
- "quando",
16440
- "quanto",
16441
- "que",
16442
- "quem",
16443
- "quer",
17069
+ "o:",
17070
+ "oa",
17071
+ "oac'h",
17072
+ "oad",
17073
+ "oamp",
17074
+ "oan",
17075
+ "oant",
17076
+ "oar",
17077
+ "oas",
17078
+ "ober",
17079
+ "oc'h",
17080
+ "oc'ho",
17081
+ "oc'hola",
17082
+ "oc'hpenn",
17083
+ "oh",
17084
+ "ohe",
17085
+ "ollé",
17086
+ "olole",
17087
+ "olé",
17088
+ "omp",
17089
+ "on",
17090
+ "ordin",
17091
+ "ordinal",
17092
+ "ouejoc'h",
17093
+ "ouejod",
17094
+ "ouejomp",
17095
+ "ouejont",
17096
+ "ouejout",
17097
+ "ouek",
17098
+ "ouezas",
17099
+ "ouezi",
17100
+ "ouezimp",
17101
+ "ouezin",
17102
+ "ouezint",
17103
+ "ouezis",
17104
+ "ouezo",
17105
+ "ouezoc'h",
17106
+ "ouezor",
17107
+ "ouf",
17108
+ "oufe",
17109
+ "oufec'h",
17110
+ "oufed",
17111
+ "oufemp",
17112
+ "oufen",
17113
+ "oufent",
17114
+ "oufes",
17115
+ "ouie",
17116
+ "ouiec'h",
17117
+ "ouied",
17118
+ "ouiemp",
17119
+ "ouien",
17120
+ "ouient",
17121
+ "ouies",
17122
+ "ouije",
17123
+ "ouijec'h",
17124
+ "ouijed",
17125
+ "ouijemp",
17126
+ "ouijen",
17127
+ "ouijent",
17128
+ "ouijes",
17129
+ "out",
17130
+ "outañ",
17131
+ "outi",
17132
+ "outo",
17133
+ "ouzer",
17134
+ "ouzh",
17135
+ "ouzhin",
17136
+ "ouzhit",
17137
+ "ouzhoc'h",
17138
+ "ouzhomp",
17139
+ "ouzhor",
17140
+ "ouzhpenn",
17141
+ "ouzhpennik",
17142
+ "ouzoc'h",
17143
+ "ouzomp",
17144
+ "ouzon",
17145
+ "ouzont",
17146
+ "ouzout",
17147
+ "p'",
17148
+ "p:",
17149
+ "pa",
17150
+ "pad",
17151
+ "padal",
17152
+ "paf",
17153
+ "pan",
17154
+ "panevedeoc'h",
17155
+ "panevedo",
17156
+ "panevedomp",
17157
+ "panevedon",
17158
+ "panevedout",
17159
+ "panevet",
17160
+ "panevetañ",
17161
+ "paneveti",
17162
+ "pas",
17163
+ "paseet",
17164
+ "pe",
17165
+ "peadra",
17166
+ "peder",
17167
+ "pedervet",
17168
+ "pedervetvet",
17169
+ "pefe",
17170
+ "pegeit",
17171
+ "pegement",
17172
+ "pegen",
17173
+ "pegiz",
17174
+ "pegoulz",
17175
+ "pehini",
17176
+ "pelec'h",
17177
+ "pell",
17178
+ "pemod",
17179
+ "pemp",
17180
+ "pempved",
17181
+ "pemzek",
17182
+ "penaos",
17183
+ "penn",
17184
+ "peogwir",
17185
+ "peotramant",
17186
+ "pep",
17187
+ "perak",
17188
+ "perc'hennañ",
17189
+ "pergen",
17190
+ "permetiñ",
17191
+ "peseurt",
17192
+ "pet",
17193
+ "petiaoul",
17194
+ "petoare",
17195
+ "petra",
17196
+ "peur",
17197
+ "peurgetket",
17198
+ "peurheñvel",
17199
+ "peurliesañ",
17200
+ "peurvuiañ",
17201
+ "peus",
17202
+ "peustost",
17203
+ "peuz",
17204
+ "pevar",
17205
+ "pevare",
17206
+ "pevarevet",
17207
+ "pevarzek",
17208
+ "pez",
17209
+ "peze",
17210
+ "pezh",
17211
+ "pff",
17212
+ "pfft",
17213
+ "pfut",
17214
+ "picher",
17215
+ "pif",
17216
+ "pife",
17217
+ "pign",
17218
+ "pije",
17219
+ "pikol",
17220
+ "pitiaoul",
17221
+ "piv",
17222
+ "plaouf",
17223
+ "plok",
17224
+ "plouf",
17225
+ "po",
17226
+ "poa",
17227
+ "poelladus",
17228
+ "pof",
17229
+ "pok",
17230
+ "posupl",
17231
+ "pouah",
17232
+ "pourc'henn",
17233
+ "prest",
17234
+ "prestik",
17235
+ "prim",
17236
+ "prin",
17237
+ "provostapl",
17238
+ "pst",
17239
+ "pu",
17240
+ "pur",
17241
+ "r:",
17242
+ "ra",
17243
+ "rae",
17244
+ "raec'h",
17245
+ "raed",
17246
+ "raemp",
17247
+ "raen",
17248
+ "raent",
17249
+ "raes",
17250
+ "rafe",
17251
+ "rafec'h",
17252
+ "rafed",
17253
+ "rafemp",
17254
+ "rafen",
17255
+ "rafent",
17256
+ "rafes",
17257
+ "rag",
17258
+ "raimp",
17259
+ "raint",
17260
+ "raio",
17261
+ "raje",
17262
+ "rajec'h",
17263
+ "rajed",
17264
+ "rajemp",
17265
+ "rajen",
17266
+ "rajent",
17267
+ "rajes",
17268
+ "rak",
17269
+ "ral",
17270
+ "ran",
17271
+ "rankout",
17272
+ "raok",
17273
+ "razh",
17274
+ "re",
17275
+ "reas",
17276
+ "reer",
17277
+ "regennoù",
17278
+ "reiñ",
17279
+ "rejoc'h",
17280
+ "rejod",
17281
+ "rejomp",
17282
+ "rejont",
17283
+ "rejout",
17284
+ "rener",
17285
+ "rentañ",
17286
+ "reoc'h",
17287
+ "reomp",
17288
+ "reont",
17289
+ "reor",
17290
+ "reot",
17291
+ "resis",
17292
+ "ret",
17293
+ "reve",
17294
+ "rez",
17295
+ "ri",
17296
+ "rik",
17297
+ "rin",
17298
+ "ris",
17299
+ "rit",
17300
+ "rouez",
17301
+ "s:",
17302
+ "sac'h",
17303
+ "sant",
17304
+ "sav",
17305
+ "sañset",
16444
17306
  "se",
16445
- "seja",
16446
- "sem",
16447
- "sendo",
16448
- "seu",
16449
- "seus",
16450
- "sob",
16451
- "sobre",
16452
- "sua",
16453
- "suas",
17307
+ "sed",
17308
+ "seitek",
17309
+ "seizh",
17310
+ "seizhvet",
17311
+ "sell",
17312
+ "sellit",
17313
+ "ser",
17314
+ "setu",
17315
+ "seul",
17316
+ "seurt",
17317
+ "siwazh",
17318
+ "skignañ",
17319
+ "skoaz",
17320
+ "skouer",
17321
+ "sort",
17322
+ "souden",
17323
+ "souvitañ",
17324
+ "soñj",
17325
+ "speriañ",
17326
+ "spririñ",
17327
+ "stad",
17328
+ "stlabezañ",
17329
+ "stop",
17330
+ "stranañ",
17331
+ "strewiñ",
17332
+ "strishaat",
17333
+ "stumm",
17334
+ "sujed",
17335
+ "surtoud",
17336
+ "t:",
17337
+ "ta",
17338
+ "taer",
17339
+ "tailh",
17340
+ "tak",
16454
17341
  "tal",
16455
- "tambem",
16456
- "teu",
17342
+ "talvoudegezh",
17343
+ "tamm",
17344
+ "tanav",
17345
+ "taol",
17346
+ "te",
17347
+ "techet",
17348
+ "teir",
17349
+ "teirvet",
17350
+ "telt",
17351
+ "teltenn",
16457
17352
  "teus",
16458
- "toda",
16459
- "todas",
16460
- "todo",
16461
- "todos",
16462
- "tua",
16463
- "tuas",
16464
- "tudo",
16465
- "um",
16466
- "uma",
16467
- "umas",
16468
- "uns"
17353
+ "teut",
17354
+ "teuteu",
17355
+ "ti",
17356
+ "tik",
17357
+ "toa",
17358
+ "tok",
17359
+ "tost",
17360
+ "tostig",
17361
+ "toud",
17362
+ "touesk",
17363
+ "touez",
17364
+ "toull",
17365
+ "tra",
17366
+ "trantenn",
17367
+ "traoñ",
17368
+ "trawalc'h",
17369
+ "tre",
17370
+ "trede",
17371
+ "tregont",
17372
+ "tremenet",
17373
+ "tri",
17374
+ "trivet",
17375
+ "triwec'h",
17376
+ "trizek",
17377
+ "tro",
17378
+ "trugarez",
17379
+ "trumm",
17380
+ "tsoin",
17381
+ "tsouin",
17382
+ "tu",
17383
+ "tud",
17384
+ "u:",
17385
+ "ugent",
17386
+ "uhel",
17387
+ "uhelañ",
17388
+ "ul",
17389
+ "un",
17390
+ "unan",
17391
+ "unanez",
17392
+ "unanig",
17393
+ "unnek",
17394
+ "unnekvet",
17395
+ "ur",
17396
+ "urzh",
17397
+ "us",
17398
+ "v:",
17399
+ "va",
17400
+ "vale",
17401
+ "van",
17402
+ "vare",
17403
+ "vat",
17404
+ "vefe",
17405
+ "vefec'h",
17406
+ "vefed",
17407
+ "vefemp",
17408
+ "vefen",
17409
+ "vefent",
17410
+ "vefes",
17411
+ "vesk",
17412
+ "vete",
17413
+ "vez",
17414
+ "vezan",
17415
+ "vezañ",
17416
+ "veze",
17417
+ "vezec'h",
17418
+ "vezed",
17419
+ "vezemp",
17420
+ "vezen",
17421
+ "vezent",
17422
+ "vezer",
17423
+ "vezes",
17424
+ "vezez",
17425
+ "vezit",
17426
+ "vezomp",
17427
+ "vezont",
17428
+ "vi",
17429
+ "vihan",
17430
+ "vihanañ",
17431
+ "vije",
17432
+ "vijec'h",
17433
+ "vijed",
17434
+ "vijemp",
17435
+ "vijen",
17436
+ "vijent",
17437
+ "vijes",
17438
+ "viken",
17439
+ "vimp",
17440
+ "vin",
17441
+ "vint",
17442
+ "vior",
17443
+ "viot",
17444
+ "virviken",
17445
+ "viskoazh",
17446
+ "vlan",
17447
+ "vlaou",
17448
+ "vo",
17449
+ "vod",
17450
+ "voe",
17451
+ "voec'h",
17452
+ "voed",
17453
+ "voemp",
17454
+ "voen",
17455
+ "voent",
17456
+ "voes",
17457
+ "vont",
17458
+ "vostapl",
17459
+ "vrac'h",
17460
+ "vrasañ",
17461
+ "vremañ",
17462
+ "w:",
17463
+ "walc'h",
17464
+ "war",
17465
+ "warnañ",
17466
+ "warni",
17467
+ "warno",
17468
+ "warnoc'h",
17469
+ "warnomp",
17470
+ "warnon",
17471
+ "warnor",
17472
+ "warnout",
17473
+ "wazh",
17474
+ "wech",
17475
+ "wechoù",
17476
+ "well",
17477
+ "y:",
17478
+ "you",
17479
+ "youadenn",
17480
+ "youc'hadenn",
17481
+ "youc'hou",
17482
+ "z:",
17483
+ "za",
17484
+ "zan",
17485
+ "zaw",
17486
+ "zeu",
17487
+ "zi",
17488
+ "ziar",
17489
+ "zigarez",
17490
+ "ziget",
17491
+ "zindan",
17492
+ "zioc'h",
17493
+ "ziouzh",
17494
+ "zirak",
17495
+ "zivout",
17496
+ "ziwar",
17497
+ "ziwezhañ",
17498
+ "zo",
17499
+ "zoken",
17500
+ "zokenoc'h",
17501
+ "zouesk",
17502
+ "zouez",
17503
+ "zro",
17504
+ "zu"
16469
17505
  ];
16470
17506
  const bul = [
16471
17507
  "а",
@@ -28121,22 +29157,32 @@ const tur = [
28121
29157
  "şöyle"
28122
29158
  ];
28123
29159
  const ukr = [
29160
+ "а",
29161
+ "або",
28124
29162
  "авжеж",
28125
29163
  "адже",
29164
+ "аж",
28126
29165
  "але",
29166
+ "ані",
28127
29167
  "б",
28128
29168
  "без",
29169
+ "би",
29170
+ "бо",
28129
29171
  "був",
28130
29172
  "була",
28131
29173
  "були",
28132
29174
  "було",
28133
29175
  "бути",
28134
29176
  "більш",
29177
+ "в",
28135
29178
  "вам",
29179
+ "вами",
28136
29180
  "вас",
28137
29181
  "весь",
29182
+ "вже",
28138
29183
  "вздовж",
28139
29184
  "ви",
29185
+ "від",
28140
29186
  "вниз",
28141
29187
  "внизу",
28142
29188
  "вона",
@@ -28145,55 +29191,138 @@ const ukr = [
28145
29191
  "все",
28146
29192
  "всередині",
28147
29193
  "всіх",
29194
+ "вся",
28148
29195
  "від",
28149
29196
  "він",
28150
29197
  "да",
28151
29198
  "давай",
28152
29199
  "давати",
28153
29200
  "де",
29201
+ "десь",
28154
29202
  "дещо",
28155
29203
  "для",
28156
29204
  "до",
29205
+ "є",
29206
+ "ж",
29207
+ "же",
28157
29208
  "з",
29209
+ "за",
28158
29210
  "завжди",
28159
29211
  "замість",
29212
+ "зі",
29213
+ "і",
29214
+ "із",
29215
+ "інших",
29216
+ "її",
29217
+ "їй",
29218
+ "їм",
29219
+ "їх",
28160
29220
  "й",
29221
+ "його",
29222
+ "йому",
28161
29223
  "коли",
28162
29224
  "ледве",
29225
+ "лиш",
28163
29226
  "майже",
29227
+ "мене",
29228
+ "мені",
28164
29229
  "ми",
29230
+ "між",
29231
+ "мій",
29232
+ "мною",
29233
+ "мов",
29234
+ "мого",
29235
+ "моєї",
29236
+ "моє",
29237
+ "може",
29238
+ "мої",
29239
+ "моїх",
29240
+ "моя",
29241
+ "на",
29242
+ "над",
28165
29243
  "навколо",
28166
29244
  "навіть",
28167
29245
  "нам",
29246
+ "нами",
29247
+ "нас",
29248
+ "наче",
29249
+ "наш",
29250
+ "не",
29251
+ "нє",
29252
+ "неї",
29253
+ "нема",
29254
+ "немов",
29255
+ "неначе",
29256
+ "нею",
29257
+ "ним",
29258
+ "ними",
29259
+ "них",
29260
+ "ні",
29261
+ "ніби",
29262
+ "ніщо",
29263
+ "нього",
29264
+ "о",
29265
+ "ось",
28168
29266
  "от",
28169
29267
  "отже",
28170
29268
  "отож",
29269
+ "під",
29270
+ "по",
28171
29271
  "поза",
28172
29272
  "про",
28173
29273
  "під",
29274
+ "сам",
29275
+ "сама",
29276
+ "свій",
29277
+ "свої",
29278
+ "своя",
29279
+ "свою",
29280
+ "себе",
29281
+ "собі",
28174
29282
  "та",
29283
+ "там",
28175
29284
  "так",
29285
+ "така",
28176
29286
  "такий",
28177
29287
  "також",
29288
+ "твій",
29289
+ "твого",
29290
+ "твоєї",
29291
+ "твої",
29292
+ "твоя",
28178
29293
  "те",
29294
+ "тебе",
28179
29295
  "ти",
29296
+ "ті",
29297
+ "тільки",
29298
+ "то",
29299
+ "тобі",
29300
+ "тобою",
28180
29301
  "тобто",
29302
+ "тоді",
28181
29303
  "тож",
29304
+ "той",
28182
29305
  "тощо",
29306
+ "тут",
29307
+ "у",
29308
+ "хіба",
29309
+ "хоч",
28183
29310
  "хоча",
28184
29311
  "це",
28185
29312
  "цей",
29313
+ "ці",
29314
+ "ця",
28186
29315
  "чи",
28187
29316
  "чого",
29317
+ "ще",
28188
29318
  "що",
29319
+ "щоб",
29320
+ "щось",
29321
+ "я",
28189
29322
  "як",
29323
+ "яка",
28190
29324
  "який",
28191
- "якої",
28192
- "є",
28193
- "із",
28194
- "інших",
28195
- "їх",
28196
- "її"
29325
+ "якої"
28197
29326
  ];
28198
29327
  const urd = [
28199
29328
  "آئی",
@@ -29191,7 +30320,14 @@ const TINA_LOGIN_EVENT = "tinaCloudLogin";
29191
30320
  const AUTH_TOKEN_KEY = "tinacms-auth";
29192
30321
  const authenticate = (clientId, frontendUrl) => {
29193
30322
  return new Promise((resolve) => {
29194
- let authTab;
30323
+ const origin = `${window.location.protocol}//${window.location.host}`;
30324
+ const authTab = popupWindow(
30325
+ `${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
30326
+ "_blank",
30327
+ window,
30328
+ 1e3,
30329
+ 700
30330
+ );
29195
30331
  window.addEventListener("message", function(e) {
29196
30332
  if (e.data.source === TINA_LOGIN_EVENT) {
29197
30333
  if (authTab) {
@@ -29204,14 +30340,6 @@ const authenticate = (clientId, frontendUrl) => {
29204
30340
  });
29205
30341
  }
29206
30342
  });
29207
- const origin = `${window.location.protocol}//${window.location.host}`;
29208
- authTab = popupWindow(
29209
- `${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
29210
- "_blank",
29211
- window,
29212
- 1e3,
29213
- 700
29214
- );
29215
30343
  });
29216
30344
  };
29217
30345
  const DefaultSessionProvider = ({
@@ -29917,56 +31045,6 @@ const AsyncButton = ({ name, primary, action }) => {
29917
31045
  !submitting && name
29918
31046
  );
29919
31047
  };
29920
- const TINA_AUTH_CONFIG = "tina_auth_config";
29921
- const useTinaAuthRedirect = () => {
29922
- useEffect(() => {
29923
- const urlParams = new URLSearchParams(window.location.search);
29924
- const config = {
29925
- code: urlParams.get("code") || "",
29926
- scope: urlParams.get("scope") || "email",
29927
- state: urlParams.get("state")
29928
- };
29929
- if (!config.code) {
29930
- return;
29931
- }
29932
- localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
29933
- }, []);
29934
- };
29935
- const createClient = ({
29936
- clientId,
29937
- isLocalClient = true,
29938
- branch,
29939
- tinaioConfig,
29940
- schema,
29941
- apiUrl,
29942
- tinaGraphQLVersion
29943
- }) => {
29944
- return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
29945
- clientId: clientId || "",
29946
- branch: branch || "main",
29947
- tokenStorage: "LOCAL_STORAGE",
29948
- tinaioConfig,
29949
- schema,
29950
- tinaGraphQLVersion
29951
- });
29952
- };
29953
- function assertShape(value, yupSchema, errorMessage) {
29954
- const shape = yupSchema(yup);
29955
- try {
29956
- shape.validateSync(value);
29957
- } catch (e) {
29958
- const message = errorMessage || `Failed to assertShape - ${e.message}`;
29959
- throw new Error(message);
29960
- }
29961
- }
29962
- function safeAssertShape(value, yupSchema) {
29963
- try {
29964
- assertShape(value, yupSchema);
29965
- return true;
29966
- } catch (e) {
29967
- return false;
29968
- }
29969
- }
29970
31048
  class TinaAdminApi {
29971
31049
  constructor(cms) {
29972
31050
  var _a, _b, _c, _d;
@@ -30106,6 +31184,7 @@ class TinaAdminApi {
30106
31184
  relativePath
30107
31185
  filename
30108
31186
  extension
31187
+ hasReferences
30109
31188
  }
30110
31189
  }
30111
31190
  }
@@ -30197,6 +31276,9 @@ class TinaAdminApi {
30197
31276
  document(collection:$collection, relativePath:$relativePath) {
30198
31277
  ... on Document {
30199
31278
  _values
31279
+ _sys {
31280
+ hasReferences
31281
+ }
30200
31282
  }
30201
31283
  }
30202
31284
  }`;
@@ -30309,6 +31391,56 @@ class TinaAdminApi {
30309
31391
  );
30310
31392
  }
30311
31393
  }
31394
+ const createClient = ({
31395
+ clientId,
31396
+ isLocalClient = true,
31397
+ branch,
31398
+ tinaioConfig,
31399
+ schema,
31400
+ apiUrl,
31401
+ tinaGraphQLVersion
31402
+ }) => {
31403
+ return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
31404
+ clientId: clientId || "",
31405
+ branch: branch || "main",
31406
+ tokenStorage: "LOCAL_STORAGE",
31407
+ tinaioConfig,
31408
+ schema,
31409
+ tinaGraphQLVersion
31410
+ });
31411
+ };
31412
+ function assertShape(value, yupSchema, errorMessage) {
31413
+ const shape = yupSchema(yup);
31414
+ try {
31415
+ shape.validateSync(value);
31416
+ } catch (e) {
31417
+ const message = errorMessage || `Failed to assertShape - ${e.message}`;
31418
+ throw new Error(message);
31419
+ }
31420
+ }
31421
+ function safeAssertShape(value, yupSchema) {
31422
+ try {
31423
+ assertShape(value, yupSchema);
31424
+ return true;
31425
+ } catch (e) {
31426
+ return false;
31427
+ }
31428
+ }
31429
+ const TINA_AUTH_CONFIG = "tina_auth_config";
31430
+ const useTinaAuthRedirect = () => {
31431
+ useEffect(() => {
31432
+ const urlParams = new URLSearchParams(window.location.search);
31433
+ const config = {
31434
+ code: urlParams.get("code") || "",
31435
+ scope: urlParams.get("scope") || "email",
31436
+ state: urlParams.get("state")
31437
+ };
31438
+ if (!config.code) {
31439
+ return;
31440
+ }
31441
+ localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
31442
+ }, []);
31443
+ };
30312
31444
  function sleep(ms) {
30313
31445
  return new Promise((resolve) => setTimeout(resolve, ms));
30314
31446
  }
@@ -30645,6 +31777,9 @@ const TinaCloudProvider = (props) => {
30645
31777
  cms.flags.set("branch-switcher", true);
30646
31778
  client.usingEditorialWorkflow = true;
30647
31779
  client.protectedBranches = project.protectedBranches;
31780
+ if (!project.metadata[currentBranch]) {
31781
+ setCurrentBranch(project.defaultBranch || "main");
31782
+ }
30648
31783
  }
30649
31784
  });
30650
31785
  };
@@ -30657,7 +31792,7 @@ const TinaCloudProvider = (props) => {
30657
31792
  }
30658
31793
  });
30659
31794
  return unsubscribe;
30660
- }, [isTinaCloud, cms]);
31795
+ }, [currentBranch, isTinaCloud, cms]);
30661
31796
  return /* @__PURE__ */ React__default.createElement(SessionProvider, { basePath: "/api/tina/auth" }, /* @__PURE__ */ React__default.createElement(
30662
31797
  BranchDataProvider,
30663
31798
  {
@@ -31820,6 +32955,7 @@ const CollectionListPage = () => {
31820
32955
  const [vars, setVars] = React__default.useState({
31821
32956
  collection: collectionName,
31822
32957
  relativePath: "",
32958
+ relativePathWithoutExtension: "",
31823
32959
  newRelativePath: "",
31824
32960
  filterField: "",
31825
32961
  folderName: "",
@@ -31861,6 +32997,7 @@ const CollectionListPage = () => {
31861
32997
  ...old,
31862
32998
  collection: collectionName,
31863
32999
  relativePath: "",
33000
+ relativePathWithoutExtension: "",
31864
33001
  newRelativePath: "",
31865
33002
  filterField: "",
31866
33003
  startsWith: "",
@@ -31886,6 +33023,7 @@ const CollectionListPage = () => {
31886
33023
  collectionName === vars.collection ? vars : {
31887
33024
  collection: collectionName,
31888
33025
  relativePath: "",
33026
+ relativePathWithoutExtension: "",
31889
33027
  newRelativePath: "",
31890
33028
  filterField: "",
31891
33029
  startsWith: "",
@@ -31923,6 +33061,23 @@ const CollectionListPage = () => {
31923
33061
  DeleteModal,
31924
33062
  {
31925
33063
  filename: vars.relativePath,
33064
+ checkRefsFunc: async () => {
33065
+ var _a2, _b2;
33066
+ try {
33067
+ const doc = await admin.fetchDocument(
33068
+ collection.name,
33069
+ vars.relativePath,
33070
+ true
33071
+ );
33072
+ return (_b2 = (_a2 = doc == null ? void 0 : doc.document) == null ? void 0 : _a2._sys) == null ? void 0 : _b2.hasReferences;
33073
+ } catch (error) {
33074
+ cms.alerts.error(
33075
+ "Document was not found, ask a developer for help or check the console for an error message"
33076
+ );
33077
+ console.error(error);
33078
+ throw error;
33079
+ }
33080
+ },
31926
33081
  deleteFunc: async () => {
31927
33082
  try {
31928
33083
  await admin.deleteDocument(vars);
@@ -31931,6 +33086,12 @@ const CollectionListPage = () => {
31931
33086
  );
31932
33087
  reFetchCollection();
31933
33088
  } catch (error) {
33089
+ if (error.message.indexOf("has references")) {
33090
+ cms.alerts.error(
33091
+ error.message.split("\n ").filter(Boolean)[1]
33092
+ );
33093
+ return;
33094
+ }
31934
33095
  cms.alerts.warn(
31935
33096
  "Document was not deleted, ask a developer for help or check the console for an error message"
31936
33097
  );
@@ -31950,7 +33111,9 @@ const CollectionListPage = () => {
31950
33111
  safeSubmit: async () => {
31951
33112
  try {
31952
33113
  await admin.deleteDocument(vars);
31953
- cms.alerts.info("Document was successfully deleted");
33114
+ cms.alerts.info(
33115
+ "Document was successfully deleted"
33116
+ );
31954
33117
  reFetchCollection();
31955
33118
  } catch (error) {
31956
33119
  cms.alerts.warn(
@@ -31964,7 +33127,7 @@ const CollectionListPage = () => {
31964
33127
  ), renameModalOpen && /* @__PURE__ */ React__default.createElement(
31965
33128
  RenameModal,
31966
33129
  {
31967
- filename: vars.relativePath,
33130
+ filename: vars.relativePathWithoutExtension,
31968
33131
  newRelativePath: vars.newRelativePath,
31969
33132
  setNewRelativePath: (newRelativePath) => {
31970
33133
  setVars((vars2) => {
@@ -31979,9 +33142,17 @@ const CollectionListPage = () => {
31979
33142
  relativePath: vars.relativePath,
31980
33143
  newRelativePath
31981
33144
  });
31982
- cms.alerts.info("Document was successfully renamed");
33145
+ cms.alerts.info(
33146
+ "Document was successfully renamed"
33147
+ );
31983
33148
  reFetchCollection();
31984
33149
  } catch (error) {
33150
+ if (error.message.indexOf("has references")) {
33151
+ cms.alerts.error(
33152
+ error.message.split("\n ").filter(Boolean)[1]
33153
+ );
33154
+ return;
33155
+ }
31985
33156
  cms.alerts.warn(
31986
33157
  "Document was not renamed, ask a developer for help or check the console for an error message"
31987
33158
  );
@@ -32073,7 +33244,9 @@ const CollectionListPage = () => {
32073
33244
  name: "sort",
32074
33245
  value: sortKey,
32075
33246
  onChange: (e) => {
32076
- const val = JSON.parse(e.target.value);
33247
+ const val = JSON.parse(
33248
+ e.target.value
33249
+ );
32077
33250
  setEndCursor("");
32078
33251
  setPrevCursors([]);
32079
33252
  window == null ? void 0 : window.localStorage.setItem(
@@ -32279,6 +33452,9 @@ const CollectionListPage = () => {
32279
33452
  setVars((old) => ({
32280
33453
  ...old,
32281
33454
  collection: collectionName,
33455
+ relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
33456
+ "/"
33457
+ ),
32282
33458
  relativePath: document2.node._sys.breadcrumbs.join(
32283
33459
  "/"
32284
33460
  ) + document2.node._sys.extension,
@@ -32301,6 +33477,9 @@ const CollectionListPage = () => {
32301
33477
  setVars((old) => ({
32302
33478
  ...old,
32303
33479
  collection: collectionName,
33480
+ relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
33481
+ "/"
33482
+ ),
32304
33483
  relativePath: document2.node._sys.breadcrumbs.join(
32305
33484
  "/"
32306
33485
  ) + document2.node._sys.extension,
@@ -32455,8 +33634,19 @@ const Breadcrumb = ({ folder, navigate, collectionName }) => {
32455
33634
  const NoDocumentsPlaceholder = () => {
32456
33635
  return /* @__PURE__ */ React__default.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__default.createElement("p", { className: "text-base italic font-medium text-gray-300" }, "No documents found."));
32457
33636
  };
32458
- const DeleteModal = ({ close: close2, deleteFunc, filename }) => {
32459
- return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Delete ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement("p", null, `Are you sure you want to delete ${filename}?`)), /* @__PURE__ */ React__default.createElement(ModalActions, null, /* @__PURE__ */ React__default.createElement(Button$1, { style: { flexGrow: 2 }, onClick: close2 }, "Cancel"), /* @__PURE__ */ React__default.createElement(
33637
+ const DeleteModal = ({
33638
+ close: close2,
33639
+ deleteFunc,
33640
+ checkRefsFunc,
33641
+ filename
33642
+ }) => {
33643
+ const [hasRefs, setHasRefs] = React__default.useState();
33644
+ useEffect(() => {
33645
+ checkRefsFunc().then((result) => {
33646
+ setHasRefs(result);
33647
+ });
33648
+ }, [filename, checkRefsFunc]);
33649
+ return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Delete ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement("p", null, `Are you sure you want to delete ${filename}?${hasRefs ? " References to this document will also be deleted." : ""}`)), /* @__PURE__ */ React__default.createElement(ModalActions, null, /* @__PURE__ */ React__default.createElement(Button$1, { style: { flexGrow: 2 }, onClick: close2 }, "Cancel"), /* @__PURE__ */ React__default.createElement(
32460
33650
  Button$1,
32461
33651
  {
32462
33652
  style: { flexGrow: 3 },
@@ -32502,7 +33692,7 @@ const RenameModal = ({
32502
33692
  newRelativePath,
32503
33693
  setNewRelativePath
32504
33694
  }) => {
32505
- return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "? TinaCMS uses the filename as the ID; renaming this file could result in unresolved references."), /* @__PURE__ */ React__default.createElement(
33695
+ return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "?"), /* @__PURE__ */ React__default.createElement(
32506
33696
  BaseTextField,
32507
33697
  {
32508
33698
  placeholder: "Enter a new name for the document's file",
@@ -32517,7 +33707,8 @@ const RenameModal = ({
32517
33707
  onClick: async () => {
32518
33708
  await renameFunc();
32519
33709
  close2();
32520
- }
33710
+ },
33711
+ disabled: !newRelativePath || newRelativePath === filename
32521
33712
  },
32522
33713
  "Rename"
32523
33714
  ))));
@@ -32844,7 +34035,10 @@ const useGetDocument = (cms, collectionName, relativePath2) => {
32844
34035
  const fetchDocument = async () => {
32845
34036
  if (api.isAuthenticated()) {
32846
34037
  try {
32847
- const response = await api.fetchDocument(collectionName, relativePath2);
34038
+ const response = await api.fetchDocument(
34039
+ collectionName,
34040
+ relativePath2
34041
+ );
32848
34042
  setDocument(response.document);
32849
34043
  } catch (error2) {
32850
34044
  cms.alerts.error(
@@ -33188,15 +34382,24 @@ const IndexingPage = () => {
33188
34382
  }
33189
34383
  }
33190
34384
  if (state === "creatingPR") {
33191
- const foo = await tinaApi.createPullRequest({
33192
- baseBranch,
33193
- branch,
33194
- title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
33195
- });
33196
- console.log("PR created", foo);
33197
- cms.alerts.success("Pull request created.");
33198
- localStorage.setItem("tina.createBranchState", "done");
33199
- setState("done");
34385
+ try {
34386
+ const foo = await tinaApi.createPullRequest({
34387
+ baseBranch,
34388
+ branch,
34389
+ title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
34390
+ });
34391
+ console.log("PR created", foo);
34392
+ cms.alerts.success("Pull request created.");
34393
+ localStorage.setItem("tina.createBranchState", "done");
34394
+ setState("done");
34395
+ } catch (e) {
34396
+ console.error(e);
34397
+ cms.alerts.error("Failed to create PR");
34398
+ setErrorMessage(
34399
+ "Failed to create PR, please try again. If the problem persists please contact support."
34400
+ );
34401
+ setState("error");
34402
+ }
33200
34403
  }
33201
34404
  if (state === "done") {
33202
34405
  window.location.href = back;
@@ -33818,5 +35021,6 @@ export {
33818
35021
  useScreenPlugin,
33819
35022
  useTinaAuthRedirect,
33820
35023
  wrapFieldWithError,
35024
+ wrapFieldWithNoHeader,
33821
35025
  wrapFieldsWithMeta
33822
35026
  };