tinacms 0.0.0-de1bef5-20250124020627 → 0.0.0-df15737-20250329200825

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/cn"), require("@udecode/plate"), require("@udecode/plate-common"), require("@udecode/plate-slash-command"), require("slate-react"), require("@udecode/plate-code-block"), require("@monaco-editor/react"), require("@headlessui/react"), require("class-variance-authority"), require("lucide-react"), require("mermaid"), require("@udecode/plate-heading"), require("@ariakit/react"), require("@udecode/plate-combobox"), require("@udecode/plate-table"), require("@udecode/plate-resizable"), require("@radix-ui/react-popover"), require("@radix-ui/react-slot"), require("@radix-ui/react-dropdown-menu"), require("@radix-ui/react-separator"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("react-color"), require("color-string"), require("react-dropzone"), require("clsx"), require("tailwind-merge"), require("cmdk"), require("is-hotkey"), require("slate"), require("lodash.get"), require("moment"), require("date-fns"), require("@udecode/plate-link"), require("@radix-ui/react-toolbar"), require("@radix-ui/react-tooltip"), require("@udecode/plate-paragraph"), require("@udecode/plate-block-quote"), require("@udecode/plate-floating"), require("@react-hook/window-size"), require("graphql"), require("graphql-tag"), require("@tinacms/schema-tools"), require("yup"), require("@graphql-inspector/core"), require("react-router-dom"), require("@tinacms/mdx")) : typeof define === "function" && define.amd ? define(["exports", "zod", "react", "react-dom", "@udecode/cn", "@udecode/plate", "@udecode/plate-common", "@udecode/plate-slash-command", "slate-react", "@udecode/plate-code-block", "@monaco-editor/react", "@headlessui/react", "class-variance-authority", "lucide-react", "mermaid", "@udecode/plate-heading", "@ariakit/react", "@udecode/plate-combobox", "@udecode/plate-table", "@udecode/plate-resizable", "@radix-ui/react-popover", "@radix-ui/react-slot", "@radix-ui/react-dropdown-menu", "@radix-ui/react-separator", "final-form-arrays", "final-form-set-field-data", "final-form", "react-final-form", "prop-types", "react-beautiful-dnd", "react-color", "color-string", "react-dropzone", "clsx", "tailwind-merge", "cmdk", "is-hotkey", "slate", "lodash.get", "moment", "date-fns", "@udecode/plate-link", "@radix-ui/react-toolbar", "@radix-ui/react-tooltip", "@udecode/plate-paragraph", "@udecode/plate-block-quote", "@udecode/plate-floating", "@react-hook/window-size", "graphql", "graphql-tag", "@tinacms/schema-tools", "yup", "@graphql-inspector/core", "react-router-dom", "@tinacms/mdx"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP));
3
- })(this, function(exports2, zod, React, reactDom, cn$1, plate, plateCommon, plateSlashCommand, slateReact, plateCodeBlock, MonacoEditor, react, classVarianceAuthority, lucideReact, mermaid, plateHeading, react$1, plateCombobox, plateTable, plateResizable, PopoverPrimitive, reactSlot, DropdownMenuPrimitive, SeparatorPrimitive, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, pkg$1, pkg, dropzone, clsx, tailwindMerge, cmdk, isHotkey, slate, get, moment, dateFns, plateLink, ToolbarPrimitive, TooltipPrimitive, plateParagraph, plateBlockQuote, plateFloating, windowSize, graphql, gql, schemaTools, yup, core, reactRouterDom, mdx) {
2
+ typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("zod"), require("react"), require("react-dom"), require("@udecode/cn"), require("@udecode/plate"), require("@udecode/plate-common"), require("@udecode/plate-slash-command"), require("slate-react"), require("@udecode/plate-code-block"), require("@monaco-editor/react"), require("@headlessui/react"), require("class-variance-authority"), require("lucide-react"), require("mermaid"), require("@udecode/plate-heading"), require("@ariakit/react"), require("@udecode/plate-combobox"), require("@udecode/plate-table"), require("@udecode/plate-resizable"), require("@radix-ui/react-popover"), require("@radix-ui/react-slot"), require("@radix-ui/react-dropdown-menu"), require("@radix-ui/react-separator"), require("final-form-arrays"), require("final-form-set-field-data"), require("final-form"), require("react-final-form"), require("prop-types"), require("react-beautiful-dnd"), require("react-color"), require("color-string"), require("react-dropzone"), require("clsx"), require("tailwind-merge"), require("cmdk"), require("is-hotkey"), require("slate"), require("@react-hook/window-size"), require("lodash.get"), require("moment"), require("date-fns"), require("@udecode/plate-link"), require("@radix-ui/react-toolbar"), require("@radix-ui/react-tooltip"), require("@udecode/plate-paragraph"), require("@udecode/plate-block-quote"), require("@udecode/plate-floating"), require("graphql"), require("graphql-tag"), require("@tinacms/schema-tools"), require("@graphql-inspector/core"), require("yup"), require("react-router-dom"), require("@tinacms/mdx")) : typeof define === "function" && define.amd ? define(["exports", "zod", "react", "react-dom", "@udecode/cn", "@udecode/plate", "@udecode/plate-common", "@udecode/plate-slash-command", "slate-react", "@udecode/plate-code-block", "@monaco-editor/react", "@headlessui/react", "class-variance-authority", "lucide-react", "mermaid", "@udecode/plate-heading", "@ariakit/react", "@udecode/plate-combobox", "@udecode/plate-table", "@udecode/plate-resizable", "@radix-ui/react-popover", "@radix-ui/react-slot", "@radix-ui/react-dropdown-menu", "@radix-ui/react-separator", "final-form-arrays", "final-form-set-field-data", "final-form", "react-final-form", "prop-types", "react-beautiful-dnd", "react-color", "color-string", "react-dropzone", "clsx", "tailwind-merge", "cmdk", "is-hotkey", "slate", "@react-hook/window-size", "lodash.get", "moment", "date-fns", "@udecode/plate-link", "@radix-ui/react-toolbar", "@radix-ui/react-tooltip", "@udecode/plate-paragraph", "@udecode/plate-block-quote", "@udecode/plate-floating", "graphql", "graphql-tag", "@tinacms/schema-tools", "@graphql-inspector/core", "yup", "react-router-dom", "@tinacms/mdx"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.tinacms = {}, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP, global.NOOP));
3
+ })(this, function(exports2, zod, React, reactDom, cn$1, plate, plateCommon, plateSlashCommand, slateReact, plateCodeBlock, MonacoEditor, react, classVarianceAuthority, lucideReact, mermaid, plateHeading, react$1, plateCombobox, plateTable, plateResizable, PopoverPrimitive, reactSlot, DropdownMenuPrimitive, SeparatorPrimitive, arrayMutators, setFieldData, finalForm, reactFinalForm, PropTypes, reactBeautifulDnd, pkg$1, pkg, dropzone, clsx, tailwindMerge, cmdk, isHotkey, slate, windowSize, get, moment, dateFns, plateLink, ToolbarPrimitive, TooltipPrimitive, plateParagraph, plateBlockQuote, plateFloating, graphql, gql, schemaTools, core, yup, reactRouterDom, mdx) {
4
4
  "use strict";var __defProp = Object.defineProperty;
5
5
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
6
  var __publicField = (obj, key, value) => {
@@ -2943,7 +2943,7 @@ flowchart TD
2943
2943
  ),
2944
2944
  [plate.MARK_CODE]: CodeLeaf,
2945
2945
  [plate.MARK_UNDERLINE]: cn$1.withProps(plateCommon.PlateLeaf, { as: "u" }),
2946
- [plate.MARK_STRIKETHROUGH]: cn$1.withProps(plateCommon.PlateLeaf, { as: "s" }),
2946
+ [plate.MARK_STRIKETHROUGH]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React.createElement("s", { ...props.attributes, ...props }),
2947
2947
  [plate.MARK_ITALIC]: cn$1.withProps(plateCommon.PlateLeaf, { as: "em" }),
2948
2948
  [plate.MARK_BOLD]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React.createElement("strong", { ...props.attributes, ...props }),
2949
2949
  [plate.ELEMENT_HR]: ({
@@ -5197,7 +5197,7 @@ flowchart TD
5197
5197
  side: "bottom",
5198
5198
  className: cn(
5199
5199
  "rounded-md border bg-white p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
5200
- "max-h-[30vh] max-w-[30vh] overflow-y-auto",
5200
+ "max-h-[30vh] max-w-[30vw] overflow-y-auto",
5201
5201
  className
5202
5202
  ),
5203
5203
  ...props
@@ -5289,11 +5289,7 @@ flowchart TD
5289
5289
  const node = nodes.find((node2) => node2.id === value);
5290
5290
  return node ? node._internalSys.filename : null;
5291
5291
  };
5292
- const ComboboxDemo = ({
5293
- cms,
5294
- input,
5295
- field
5296
- }) => {
5292
+ const Combobox = ({ cms, input, field }) => {
5297
5293
  const [open2, setOpen] = React__namespace.useState(false);
5298
5294
  const [value, setValue] = React__namespace.useState(input.value);
5299
5295
  const [displayText, setDisplayText] = React__namespace.useState(null);
@@ -5309,7 +5305,9 @@ flowchart TD
5309
5305
  }, [value, input, optionSets]);
5310
5306
  React__namespace.useEffect(() => {
5311
5307
  if (field.experimental___filter && optionSets.length > 0) {
5312
- setFilteredOptionsList(field.experimental___filter(optionSets, void 0));
5308
+ setFilteredOptionsList(
5309
+ field.experimental___filter(optionSets, void 0)
5310
+ );
5313
5311
  } else {
5314
5312
  setFilteredOptionsList(optionSets);
5315
5313
  }
@@ -5317,17 +5315,17 @@ flowchart TD
5317
5315
  if (loading === true) {
5318
5316
  return /* @__PURE__ */ React__namespace.createElement(LoadingDots, { color: "var(--tina-color-primary)" });
5319
5317
  }
5320
- return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React__namespace.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React__namespace.createElement(
5318
+ return /* @__PURE__ */ React__namespace.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React__namespace.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React__namespace.createElement(
5321
5319
  Button,
5322
5320
  {
5323
5321
  variant: "outline",
5324
5322
  role: "combobox",
5325
5323
  "aria-expanded": open2,
5326
- className: "w-52 justify-between"
5324
+ className: "w-full justify-between"
5327
5325
  },
5328
5326
  /* @__PURE__ */ React__namespace.createElement("p", { className: "truncate" }, displayText ?? "Choose an option..."),
5329
5327
  open2 ? /* @__PURE__ */ React__namespace.createElement(IoMdArrowDropup, { size: 20 }) : /* @__PURE__ */ React__namespace.createElement(IoMdArrowDropdown, { size: 20 })
5330
- )), /* @__PURE__ */ React__namespace.createElement(PopoverContent, { className: "p-0 relative" }, /* @__PURE__ */ React__namespace.createElement(
5328
+ )), /* @__PURE__ */ React__namespace.createElement(PopoverContent, { className: "p-0 relative min-w-[var(--radix-popover-trigger-width)]" }, /* @__PURE__ */ React__namespace.createElement(
5331
5329
  Command,
5332
5330
  {
5333
5331
  shouldFilter: !field.experimental___filter,
@@ -5351,32 +5349,25 @@ flowchart TD
5351
5349
  }
5352
5350
  ),
5353
5351
  /* @__PURE__ */ React__namespace.createElement(CommandEmpty, null, "No reference found"),
5354
- /* @__PURE__ */ React__namespace.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React__namespace.createElement(
5355
- CommandGroup,
5356
- {
5357
- key: `${collection}-group`,
5358
- heading: collection
5359
- },
5360
- /* @__PURE__ */ React__namespace.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
5361
- const { id, _values } = node;
5362
- return /* @__PURE__ */ React__namespace.createElement(
5363
- OptionComponent,
5364
- {
5365
- id,
5366
- key: id,
5367
- value,
5368
- field,
5369
- _values,
5370
- node,
5371
- onSelect: (currentValue) => {
5372
- setValue(currentValue);
5373
- setOpen(false);
5374
- }
5352
+ /* @__PURE__ */ React__namespace.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React__namespace.createElement(CommandGroup, { key: `${collection}-group`, heading: collection }, /* @__PURE__ */ React__namespace.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
5353
+ const { id, _values } = node;
5354
+ return /* @__PURE__ */ React__namespace.createElement(
5355
+ OptionComponent,
5356
+ {
5357
+ id,
5358
+ key: id,
5359
+ value,
5360
+ field,
5361
+ _values,
5362
+ node,
5363
+ onSelect: (currentValue) => {
5364
+ setValue(currentValue);
5365
+ setOpen(false);
5375
5366
  }
5376
- );
5377
- }))
5378
- ))))
5379
- ))));
5367
+ }
5368
+ );
5369
+ }))))))
5370
+ )));
5380
5371
  };
5381
5372
  const useGetNode = (cms, id) => {
5382
5373
  const [document2, setDocument] = React__namespace.useState(
@@ -5449,7 +5440,7 @@ flowchart TD
5449
5440
  };
5450
5441
  const Reference = ({ input, field }) => {
5451
5442
  const cms = useCMS();
5452
- return /* @__PURE__ */ React__namespace.createElement("div", null, /* @__PURE__ */ React__namespace.createElement("div", { className: "relative group" }, /* @__PURE__ */ React__namespace.createElement(ComboboxDemo, { cms, input, field })), /* @__PURE__ */ React__namespace.createElement(ReferenceLink, { cms, input }));
5443
+ return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, /* @__PURE__ */ React__namespace.createElement("div", { className: "relative group" }, /* @__PURE__ */ React__namespace.createElement(Combobox, { cms, input, field })), /* @__PURE__ */ React__namespace.createElement(ReferenceLink, { cms, input }));
5453
5444
  };
5454
5445
  const ButtonToggle = ({
5455
5446
  input,
@@ -5686,7 +5677,9 @@ flowchart TD
5686
5677
  onClick: () => {
5687
5678
  const state = tinaForm.finalForm.getState();
5688
5679
  if (state.invalid === true) {
5689
- cms.alerts.error("Cannot navigate away from an invalid form.");
5680
+ cms.alerts.error(
5681
+ "Cannot navigate away from an invalid form."
5682
+ );
5690
5683
  return;
5691
5684
  }
5692
5685
  cms.dispatch({
@@ -6270,7 +6263,9 @@ flowchart TD
6270
6263
  onClick: () => {
6271
6264
  const state = tinaForm.finalForm.getState();
6272
6265
  if (state.invalid === true) {
6273
- cms.alerts.error("Cannot navigate away from an invalid form.");
6266
+ cms.alerts.error(
6267
+ "Cannot navigate away from an invalid form."
6268
+ );
6274
6269
  return;
6275
6270
  }
6276
6271
  cms.dispatch({
@@ -6752,28 +6747,28 @@ flowchart TD
6752
6747
  }
6753
6748
  renderDayHeaders() {
6754
6749
  const locale = this.props.viewDate.localeData();
6755
- let dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React.createElement("th", { key: day + index, className: "dow" }, day));
6750
+ const dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React.createElement("th", { key: day + index, className: "dow" }, day));
6756
6751
  return /* @__PURE__ */ React.createElement("tr", null, dayItems);
6757
6752
  }
6758
6753
  renderDays() {
6759
6754
  const date = this.props.viewDate;
6760
6755
  const startOfMonth = date.clone().startOf("month");
6761
6756
  const endOfMonth = date.clone().endOf("month");
6762
- let rows = [[], [], [], [], [], []];
6763
- let startDate = date.clone().subtract(1, "months");
6757
+ const rows = [[], [], [], [], [], []];
6758
+ const startDate = date.clone().subtract(1, "months");
6764
6759
  startDate.date(startDate.daysInMonth()).startOf("week");
6765
- let endDate = startDate.clone().add(42, "d");
6760
+ const endDate = startDate.clone().add(42, "d");
6766
6761
  let i = 0;
6767
6762
  while (startDate.isBefore(endDate)) {
6768
- let row = getRow$2(rows, i++);
6763
+ const row = getRow$2(rows, i++);
6769
6764
  row.push(this.renderDay(startDate, startOfMonth, endOfMonth));
6770
6765
  startDate.add(1, "d");
6771
6766
  }
6772
6767
  return rows.map((r, i2) => /* @__PURE__ */ React.createElement("tr", { key: `${endDate.month()}_${i2}` }, r));
6773
6768
  }
6774
6769
  renderDay(date, startOfMonth, endOfMonth) {
6775
- let selectedDate = this.props.selectedDate;
6776
- let dayProps = {
6770
+ const selectedDate = this.props.selectedDate;
6771
+ const dayProps = {
6777
6772
  key: date.format("M_D"),
6778
6773
  "data-value": date.date(),
6779
6774
  "data-month": date.month(),
@@ -6827,7 +6822,7 @@ flowchart TD
6827
6822
  }
6828
6823
  function getDaysOfWeek(locale) {
6829
6824
  const first = locale.firstDayOfWeek();
6830
- let dow = [];
6825
+ const dow = [];
6831
6826
  let i = 0;
6832
6827
  locale._weekdaysMin.forEach(function(day) {
6833
6828
  dow[(7 + i++ - first) % 7] = day;
@@ -6845,7 +6840,7 @@ flowchart TD
6845
6840
  return /* @__PURE__ */ React.createElement("div", { className: "rdtMonths" }, /* @__PURE__ */ React.createElement("table", null, /* @__PURE__ */ React.createElement("thead", null, this.renderNavigation())), /* @__PURE__ */ React.createElement("table", null, /* @__PURE__ */ React.createElement("tbody", null, this.renderMonths())));
6846
6841
  }
6847
6842
  renderNavigation() {
6848
- let year = this.props.viewDate.year();
6843
+ const year = this.props.viewDate.year();
6849
6844
  return /* @__PURE__ */ React.createElement(
6850
6845
  ViewNavigation,
6851
6846
  {
@@ -6858,9 +6853,9 @@ flowchart TD
6858
6853
  );
6859
6854
  }
6860
6855
  renderMonths() {
6861
- let rows = [[], [], []];
6856
+ const rows = [[], [], []];
6862
6857
  for (let month = 0; month < 12; month++) {
6863
- let row = getRow$1(rows, month);
6858
+ const row = getRow$1(rows, month);
6864
6859
  row.push(this.renderMonth(month));
6865
6860
  }
6866
6861
  return rows.map((months, i) => /* @__PURE__ */ React.createElement("tr", { key: i }, months));
@@ -6877,7 +6872,7 @@ flowchart TD
6877
6872
  if (selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month) {
6878
6873
  className += " rdtActive";
6879
6874
  }
6880
- let props = { key: month, className, "data-value": month, onClick };
6875
+ const props = { key: month, className, "data-value": month, onClick };
6881
6876
  if (this.props.renderMonth) {
6882
6877
  return this.props.renderMonth(
6883
6878
  props,
@@ -6889,11 +6884,11 @@ flowchart TD
6889
6884
  return /* @__PURE__ */ React.createElement("td", { ...props }, this.getMonthText(month));
6890
6885
  }
6891
6886
  isDisabledMonth(month) {
6892
- let isValidDate = this.props.isValidDate;
6887
+ const isValidDate = this.props.isValidDate;
6893
6888
  if (!isValidDate) {
6894
6889
  return false;
6895
6890
  }
6896
- let date = this.props.viewDate.clone().set({ month });
6891
+ const date = this.props.viewDate.clone().set({ month });
6897
6892
  let day = date.endOf("month").date() + 1;
6898
6893
  while (day-- > 1) {
6899
6894
  if (isValidDate(date.date(day))) {
@@ -6945,9 +6940,9 @@ flowchart TD
6945
6940
  }
6946
6941
  renderYears() {
6947
6942
  const viewYear = this.getViewYear();
6948
- let rows = [[], [], []];
6943
+ const rows = [[], [], []];
6949
6944
  for (let year = viewYear - 1; year < viewYear + 11; year++) {
6950
- let row = getRow(rows, year - viewYear);
6945
+ const row = getRow(rows, year - viewYear);
6951
6946
  row.push(this.renderYear(year));
6952
6947
  }
6953
6948
  return rows.map((years, i) => /* @__PURE__ */ React.createElement("tr", { key: i }, years));
@@ -6964,7 +6959,7 @@ flowchart TD
6964
6959
  if (selectedYear === year) {
6965
6960
  className += " rdtActive";
6966
6961
  }
6967
- let props = { key: year, className, "data-value": year, onClick };
6962
+ const props = { key: year, className, "data-value": year, onClick };
6968
6963
  return this.props.renderYear(
6969
6964
  props,
6970
6965
  year,
@@ -6978,15 +6973,15 @@ flowchart TD
6978
6973
  return this.props.selectedDate && this.props.selectedDate.year();
6979
6974
  }
6980
6975
  isDisabledYear(year) {
6981
- let cache = this.disabledYearsCache;
6976
+ const cache = this.disabledYearsCache;
6982
6977
  if (cache[year] !== void 0) {
6983
6978
  return cache[year];
6984
6979
  }
6985
- let isValidDate = this.props.isValidDate;
6980
+ const isValidDate = this.props.isValidDate;
6986
6981
  if (!isValidDate) {
6987
6982
  return false;
6988
6983
  }
6989
- let date = this.props.viewDate.clone().set({ year });
6984
+ const date = this.props.viewDate.clone().set({ year });
6990
6985
  let day = date.endOf("year").dayOfYear() + 1;
6991
6986
  while (day-- > 1) {
6992
6987
  if (isValidDate(date.dayOfYear(day))) {
@@ -7033,7 +7028,7 @@ flowchart TD
7033
7028
  }
7034
7029
  };
7035
7030
  function createConstraints(overrideTimeConstraints) {
7036
- let constraints = {};
7031
+ const constraints = {};
7037
7032
  Object.keys(timeConstraints).forEach((type) => {
7038
7033
  constraints[type] = {
7039
7034
  ...timeConstraints[type],
@@ -7049,7 +7044,7 @@ flowchart TD
7049
7044
  this.state = this.getTimeParts(props.selectedDate || props.viewDate);
7050
7045
  }
7051
7046
  render() {
7052
- let items2 = [];
7047
+ const items2 = [];
7053
7048
  const timeParts = this.state;
7054
7049
  this.getCounters().forEach((c, i) => {
7055
7050
  if (i && c !== "ampm") {
@@ -7111,8 +7106,8 @@ flowchart TD
7111
7106
  }
7112
7107
  if (type === "ampm")
7113
7108
  return this.toggleDayPart();
7114
- let update = {};
7115
- let body = document.body;
7109
+ const update = {};
7110
+ const body = document.body;
7116
7111
  update[type] = this[action](type);
7117
7112
  this.setState(update);
7118
7113
  this.timer = setTimeout(() => {
@@ -7155,8 +7150,8 @@ flowchart TD
7155
7150
  return pad(type, value);
7156
7151
  }
7157
7152
  getCounters() {
7158
- let counters = [];
7159
- let format2 = this.props.timeFormat;
7153
+ const counters = [];
7154
+ const format2 = this.props.timeFormat;
7160
7155
  if (format2.toLowerCase().indexOf("h") !== -1) {
7161
7156
  counters.push("hours");
7162
7157
  if (format2.indexOf("m") !== -1) {
@@ -7288,7 +7283,7 @@ flowchart TD
7288
7283
  __publicField(this, "_renderCalendar", () => {
7289
7284
  const props = this.props;
7290
7285
  const state = this.state;
7291
- let viewProps = {
7286
+ const viewProps = {
7292
7287
  viewDate: state.viewDate.clone(),
7293
7288
  selectedDate: this.getSelectedDate(),
7294
7289
  isValidDate: props.isValidDate,
@@ -7331,10 +7326,10 @@ flowchart TD
7331
7326
  __publicField(this, "viewToMethod", { days: "date", months: "month", years: "year" });
7332
7327
  __publicField(this, "nextView", { days: "time", months: "days", years: "months" });
7333
7328
  __publicField(this, "_updateDate", (e) => {
7334
- let state = this.state;
7335
- let currentView = state.currentView;
7336
- let updateOnView = this.getUpdateOn(this.getFormat("date"));
7337
- let viewDate = this.state.viewDate.clone();
7329
+ const state = this.state;
7330
+ const currentView = state.currentView;
7331
+ const updateOnView = this.getUpdateOn(this.getFormat("date"));
7332
+ const viewDate = this.state.viewDate.clone();
7338
7333
  viewDate[this.viewToMethod[currentView]](
7339
7334
  parseInt(e.target.getAttribute("data-value"), 10)
7340
7335
  );
@@ -7342,7 +7337,7 @@ flowchart TD
7342
7337
  viewDate.month(parseInt(e.target.getAttribute("data-month"), 10));
7343
7338
  viewDate.year(parseInt(e.target.getAttribute("data-year"), 10));
7344
7339
  }
7345
- let update = { viewDate };
7340
+ const update = { viewDate };
7346
7341
  if (currentView === updateOnView) {
7347
7342
  update.selectedDate = viewDate.clone();
7348
7343
  update.inputValue = viewDate.format(this.getFormat("datetime"));
@@ -7356,7 +7351,7 @@ flowchart TD
7356
7351
  this.setState(update);
7357
7352
  });
7358
7353
  __publicField(this, "_viewNavigate", (modifier, unit) => {
7359
- let viewDate = this.state.viewDate.clone();
7354
+ const viewDate = this.state.viewDate.clone();
7360
7355
  viewDate.add(modifier, unit);
7361
7356
  if (modifier > 0) {
7362
7357
  this.props.onNavigateForward(modifier, unit);
@@ -7366,7 +7361,7 @@ flowchart TD
7366
7361
  this.setState({ viewDate });
7367
7362
  });
7368
7363
  __publicField(this, "_setTime", (type, value) => {
7369
- let date = (this.getSelectedDate() || this.state.viewDate).clone();
7364
+ const date = (this.getSelectedDate() || this.state.viewDate).clone();
7370
7365
  date[type](value);
7371
7366
  if (!this.props.value) {
7372
7367
  this.setState({
@@ -7390,7 +7385,7 @@ flowchart TD
7390
7385
  });
7391
7386
  });
7392
7387
  __publicField(this, "_handleClickOutside", () => {
7393
- let props = this.props;
7388
+ const props = this.props;
7394
7389
  if (props.input && this.state.open && props.open === void 0 && props.closeOnClickOutside) {
7395
7390
  this._closeCalendar();
7396
7391
  }
@@ -7405,7 +7400,7 @@ flowchart TD
7405
7400
  return;
7406
7401
  const value = e.target ? e.target.value : e;
7407
7402
  const localMoment = this.localMoment(value, this.getFormat("datetime"));
7408
- let update = { inputValue: value };
7403
+ const update = { inputValue: value };
7409
7404
  if (localMoment.isValid()) {
7410
7405
  update.selectedDate = localMoment;
7411
7406
  update.viewDate = localMoment.clone().startOf("month");
@@ -7469,9 +7464,9 @@ flowchart TD
7469
7464
  return this.props.renderView(this.state.currentView, this._renderCalendar);
7470
7465
  }
7471
7466
  getInitialState() {
7472
- let props = this.props;
7473
- let inputFormat = this.getFormat("datetime");
7474
- let selectedDate = this.parseDate(
7467
+ const props = this.props;
7468
+ const inputFormat = this.getFormat("datetime");
7469
+ const selectedDate = this.parseDate(
7475
7470
  props.value || props.initialValue,
7476
7471
  inputFormat
7477
7472
  );
@@ -7502,7 +7497,7 @@ flowchart TD
7502
7497
  return this.getInitialDate();
7503
7498
  }
7504
7499
  getInitialDate() {
7505
- let m = this.localMoment();
7500
+ const m = this.localMoment();
7506
7501
  m.hour(0).minute(0).second(0).millisecond(0);
7507
7502
  return m;
7508
7503
  }
@@ -7522,8 +7517,8 @@ flowchart TD
7522
7517
  }
7523
7518
  getClassName() {
7524
7519
  let cn2 = "rdt";
7525
- let props = this.props;
7526
- let propCn = props.className;
7520
+ const props = this.props;
7521
+ const propCn = props.className;
7527
7522
  if (Array.isArray(propCn)) {
7528
7523
  cn2 += " " + propCn.join(" ");
7529
7524
  } else if (propCn) {
@@ -7556,14 +7551,14 @@ flowchart TD
7556
7551
  return viewModes.DAYS;
7557
7552
  }
7558
7553
  getLocaleData() {
7559
- let p = this.props;
7554
+ const p = this.props;
7560
7555
  return this.localMoment(
7561
7556
  p.value || p.defaultValue || /* @__PURE__ */ new Date()
7562
7557
  ).localeData();
7563
7558
  }
7564
7559
  getDateFormat() {
7565
7560
  const locale = this.getLocaleData();
7566
- let format2 = this.props.dateFormat;
7561
+ const format2 = this.props.dateFormat;
7567
7562
  if (format2 === true)
7568
7563
  return locale.longDateFormat("L");
7569
7564
  if (format2)
@@ -7572,7 +7567,7 @@ flowchart TD
7572
7567
  }
7573
7568
  getTimeFormat() {
7574
7569
  const locale = this.getLocaleData();
7575
- let format2 = this.props.timeFormat;
7570
+ const format2 = this.props.timeFormat;
7576
7571
  if (format2 === true) {
7577
7572
  return locale.longDateFormat("LT");
7578
7573
  }
@@ -7584,12 +7579,12 @@ flowchart TD
7584
7579
  } else if (type === "time") {
7585
7580
  return this.getTimeFormat();
7586
7581
  }
7587
- let dateFormat = this.getDateFormat();
7588
- let timeFormat = this.getTimeFormat();
7582
+ const dateFormat = this.getDateFormat();
7583
+ const timeFormat = this.getTimeFormat();
7589
7584
  return dateFormat && timeFormat ? dateFormat + " " + timeFormat : dateFormat || timeFormat;
7590
7585
  }
7591
7586
  updateTime(op, amount, type, toSelected) {
7592
- let update = {};
7587
+ const update = {};
7593
7588
  const date = toSelected ? "selectedDate" : "viewDate";
7594
7589
  update[date] = this.state[date].clone()[op](amount, type);
7595
7590
  this.setState(update);
@@ -7622,7 +7617,7 @@ flowchart TD
7622
7617
  if (prevProps === this.props)
7623
7618
  return;
7624
7619
  let needsUpdate = false;
7625
- let thisProps = this.props;
7620
+ const thisProps = this.props;
7626
7621
  ["locale", "utc", "displayZone", "dateFormat", "timeFormat"].forEach(
7627
7622
  function(p) {
7628
7623
  prevProps[p] !== thisProps[p] && (needsUpdate = true);
@@ -7638,8 +7633,8 @@ flowchart TD
7638
7633
  }
7639
7634
  regenerateDates() {
7640
7635
  const props = this.props;
7641
- let viewDate = this.state.viewDate.clone();
7642
- let selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
7636
+ const viewDate = this.state.viewDate.clone();
7637
+ const selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
7643
7638
  if (props.locale) {
7644
7639
  viewDate.locale(props.locale);
7645
7640
  selectedDate && selectedDate.locale(props.locale);
@@ -7654,7 +7649,7 @@ flowchart TD
7654
7649
  viewDate.locale();
7655
7650
  selectedDate && selectedDate.locale();
7656
7651
  }
7657
- let update = { viewDate, selectedDate };
7652
+ const update = { viewDate, selectedDate };
7658
7653
  if (selectedDate && selectedDate.isValid()) {
7659
7654
  update.inputValue = selectedDate.format(this.getFormat("datetime"));
7660
7655
  }
@@ -7663,7 +7658,7 @@ flowchart TD
7663
7658
  getSelectedDate() {
7664
7659
  if (this.props.value === void 0)
7665
7660
  return this.state.selectedDate;
7666
- let selectedDate = this.parseDate(
7661
+ const selectedDate = this.parseDate(
7667
7662
  this.props.value,
7668
7663
  this.getFormat("datetime")
7669
7664
  );
@@ -7682,7 +7677,7 @@ flowchart TD
7682
7677
  return "";
7683
7678
  }
7684
7679
  getInputValue() {
7685
- let selectedDate = this.getSelectedDate();
7680
+ const selectedDate = this.getSelectedDate();
7686
7681
  return selectedDate ? selectedDate.format(this.getFormat("datetime")) : this.state.inputValue;
7687
7682
  }
7688
7683
  /**
@@ -7692,7 +7687,7 @@ flowchart TD
7692
7687
  * @public
7693
7688
  */
7694
7689
  setViewDate(date) {
7695
- let logError = function() {
7690
+ const logError = function() {
7696
7691
  return log("Invalid date passed to the `setViewDate` method: " + date);
7697
7692
  };
7698
7693
  if (!date)
@@ -7788,7 +7783,7 @@ flowchart TD
7788
7783
  // Make moment accessible through the Datetime class
7789
7784
  __publicField(Datetime, "moment", moment);
7790
7785
  function log(message, method) {
7791
- let con = typeof window !== "undefined" && window.console;
7786
+ const con = typeof window !== "undefined" && window.console;
7792
7787
  if (!con)
7793
7788
  return;
7794
7789
  if (!method) {
@@ -8611,7 +8606,10 @@ flowchart TD
8611
8606
  label: "View in GitHub",
8612
8607
  Icon: /* @__PURE__ */ React__namespace.createElement(BiLinkExternal, { className: "w-5 h-auto text-blue-500 opacity-70" }),
8613
8608
  onMouseDown: () => {
8614
- window.open(branch.githubPullRequestUrl, "_blank");
8609
+ window.open(
8610
+ branch.githubPullRequestUrl,
8611
+ "_blank"
8612
+ );
8615
8613
  }
8616
8614
  },
8617
8615
  typeof previewFunction === "function" && ((_b2 = previewFunction({ branch: branch.name })) == null ? void 0 : _b2.url) && {
@@ -8917,7 +8915,9 @@ flowchart TD
8917
8915
  } else {
8918
8916
  events = event;
8919
8917
  }
8920
- const newListeners = events.map((event2) => new Listener(event2, callback));
8918
+ const newListeners = events.map(
8919
+ (event2) => new Listener(event2, callback)
8920
+ );
8921
8921
  newListeners.forEach((newListener) => this.listeners.add(newListener));
8922
8922
  return () => {
8923
8923
  newListeners.forEach((listener) => this.listeners.delete(listener));
@@ -9273,9 +9273,7 @@ flowchart TD
9273
9273
  const deleteStartTime = Date.now();
9274
9274
  while (true) {
9275
9275
  await new Promise((resolve) => setTimeout(resolve, 1e3));
9276
- const { error, message } = await this.api.getRequestStatus(
9277
- requestId
9278
- );
9276
+ const { error, message } = await this.api.getRequestStatus(requestId);
9279
9277
  if (error !== void 0) {
9280
9278
  if (error) {
9281
9279
  throw new Error(message);
@@ -9303,11 +9301,8 @@ flowchart TD
9303
9301
  const encodeUrlIfNeeded = (url) => {
9304
9302
  if (url) {
9305
9303
  try {
9306
- const parsed = new URL(url);
9307
- parsed.pathname = parsed.pathname.split("/").filter((part) => part !== "").map(encodeURIComponent).join("/");
9308
- return parsed.toString();
9304
+ return new URL(url).toString();
9309
9305
  } catch (e) {
9310
- console.error("Failed to parse URL:", e);
9311
9306
  return url;
9312
9307
  }
9313
9308
  } else {
@@ -9613,7 +9608,7 @@ flowchart TD
9613
9608
  return this.add("error", message, timeout);
9614
9609
  }
9615
9610
  };
9616
- const NoFormsPlaceholder = () => /* @__PURE__ */ React__namespace.createElement(
9611
+ const SidebarLoadingPlaceholder = () => /* @__PURE__ */ React__namespace.createElement(
9617
9612
  "div",
9618
9613
  {
9619
9614
  className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
@@ -9626,25 +9621,8 @@ flowchart TD
9626
9621
  animationDuration: "150ms"
9627
9622
  }
9628
9623
  },
9629
- /* @__PURE__ */ React__namespace.createElement(Emoji$1, { className: "pb-5" }, "🔎"),
9630
- /* @__PURE__ */ React__namespace.createElement("p", { className: "block pb-5" }, "Looks like there's ", /* @__PURE__ */ React__namespace.createElement("br", null), "nothing to edit on ", /* @__PURE__ */ React__namespace.createElement("br", null), "this page."),
9631
- /* @__PURE__ */ React__namespace.createElement("p", { className: "block" }, /* @__PURE__ */ React__namespace.createElement(
9632
- Button$1,
9633
- {
9634
- href: "https://tina.io/docs/tinacms-context/",
9635
- target: "_blank",
9636
- as: "a"
9637
- },
9638
- /* @__PURE__ */ React__namespace.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
9639
- " Contextual Editing"
9640
- ))
9641
- );
9642
- const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React__namespace.createElement(
9643
- "span",
9644
- {
9645
- className: `text-[24px] leading-none inline-block ${className}`,
9646
- ...props
9647
- }
9624
+ /* @__PURE__ */ React__namespace.createElement("p", { className: "block pb-5" }, "Please wait while TinaCMS", /* @__PURE__ */ React__namespace.createElement("br", null), "loads your content"),
9625
+ /* @__PURE__ */ React__namespace.createElement(LoadingDots, { color: "var(--tina-color-primary)" })
9648
9626
  );
9649
9627
  class SidebarState {
9650
9628
  constructor(events, options = {}) {
@@ -9659,7 +9637,7 @@ flowchart TD
9659
9637
  };
9660
9638
  this.position = options.position || "displace";
9661
9639
  this.renderNav = options.renderNav || true;
9662
- this.placeholder = options.placeholder || NoFormsPlaceholder;
9640
+ this.loadingPlaceholder = options.placeholder || SidebarLoadingPlaceholder;
9663
9641
  if ((_a = options.buttons) == null ? void 0 : _a.save) {
9664
9642
  this.buttons.save = options.buttons.save;
9665
9643
  }
@@ -9733,238 +9711,6 @@ flowchart TD
9733
9711
  children
9734
9712
  )));
9735
9713
  };
9736
- const Item = ({
9737
- item,
9738
- depth,
9739
- setActiveFormId
9740
- }) => {
9741
- const cms = useCMS();
9742
- const depths = ["pl-6", "pl-10", "pl-14"];
9743
- const form = React__namespace.useMemo(
9744
- () => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
9745
- [item.formId]
9746
- );
9747
- return /* @__PURE__ */ React__namespace.createElement(
9748
- "button",
9749
- {
9750
- type: "button",
9751
- key: item.path,
9752
- onClick: () => setActiveFormId(item.formId),
9753
- className: `${depths[depth] || "pl-12"} pr-6 py-3 w-full h-full bg-transparent border-none text-lg text-gray-700 group hover:bg-gray-50 transition-all ease-out duration-150 flex items-center justify-between gap-2`
9754
- },
9755
- /* @__PURE__ */ React__namespace.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
9756
- /* @__PURE__ */ React__namespace.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
9757
- );
9758
- };
9759
- const FormListItem = ({
9760
- item,
9761
- depth,
9762
- setActiveFormId
9763
- }) => {
9764
- var _a;
9765
- return /* @__PURE__ */ React__namespace.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React__namespace.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React__namespace.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
9766
- if (subItem.type === "document") {
9767
- return /* @__PURE__ */ React__namespace.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React__namespace.createElement(
9768
- Item,
9769
- {
9770
- setActiveFormId,
9771
- depth: depth + 1,
9772
- item: subItem
9773
- }
9774
- ));
9775
- }
9776
- })));
9777
- };
9778
- const FormLists = (props) => {
9779
- const cms = useCMS();
9780
- return /* @__PURE__ */ React__namespace.createElement(
9781
- react.Transition,
9782
- {
9783
- appear: true,
9784
- show: true,
9785
- as: "div",
9786
- enter: "transition-all ease-out duration-150",
9787
- enterFrom: "opacity-0 -translate-x-1/2",
9788
- enterTo: "opacity-100",
9789
- leave: "transition-all ease-out duration-150",
9790
- leaveFrom: "opacity-100",
9791
- leaveTo: "opacity-0 -translate-x-1/2"
9792
- },
9793
- cms.state.formLists.map((formList, index) => /* @__PURE__ */ React__namespace.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React__namespace.createElement(
9794
- FormList,
9795
- {
9796
- isEditing: props.isEditing,
9797
- setActiveFormId: (id) => {
9798
- cms.dispatch({ type: "forms:set-active-form-id", value: id });
9799
- },
9800
- formList
9801
- }
9802
- )))
9803
- );
9804
- };
9805
- const FormList = (props) => {
9806
- const cms = useCMS();
9807
- const listItems = React__namespace.useMemo(() => {
9808
- var _a;
9809
- const orderedListItems = [];
9810
- const globalItems = [];
9811
- const topItems = [];
9812
- props.formList.items.forEach((item) => {
9813
- if (item.type === "document") {
9814
- const form = cms.state.forms.find(
9815
- ({ tinaForm }) => tinaForm.id === item.formId
9816
- );
9817
- if (form.tinaForm.global) {
9818
- globalItems.push(item);
9819
- } else {
9820
- orderedListItems.push(item);
9821
- }
9822
- } else {
9823
- orderedListItems.push(item);
9824
- }
9825
- });
9826
- if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
9827
- topItems.push({ type: "list", label: "Documents" });
9828
- }
9829
- let extra = [];
9830
- if (globalItems.length) {
9831
- extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
9832
- }
9833
- return [...topItems, ...orderedListItems, ...extra];
9834
- }, [JSON.stringify(props.formList.items)]);
9835
- return /* @__PURE__ */ React__namespace.createElement("ul", null, /* @__PURE__ */ React__namespace.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
9836
- if (item.type === "list") {
9837
- return /* @__PURE__ */ React__namespace.createElement(
9838
- "div",
9839
- {
9840
- key: item.label,
9841
- className: `relative group text-left w-full bg-white shadow-sm
9842
- border-gray-100 px-6 -mt-px pb-3 ${index > 0 ? "pt-6 bg-gradient-to-b from-gray-50 via-white to-white" : "pt-3"}`
9843
- },
9844
- /* @__PURE__ */ React__namespace.createElement(
9845
- "span",
9846
- {
9847
- className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
9848
- },
9849
- item.label
9850
- )
9851
- );
9852
- }
9853
- return /* @__PURE__ */ React__namespace.createElement(
9854
- FormListItem,
9855
- {
9856
- setActiveFormId: (id) => props.setActiveFormId(id),
9857
- key: item.formId,
9858
- item,
9859
- depth: 0
9860
- }
9861
- );
9862
- })));
9863
- };
9864
- const FormsView = ({
9865
- children
9866
- }) => {
9867
- const cms = useCMS$1();
9868
- const { setFormIsPristine } = React__namespace.useContext(SidebarContext);
9869
- const isMultiform = cms.state.forms.length > 1;
9870
- const activeForm = cms.state.forms.find(
9871
- ({ tinaForm }) => tinaForm.id === cms.state.activeFormId
9872
- );
9873
- const isEditing = !!activeForm;
9874
- if (!cms.state.formLists.length) {
9875
- return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, " ", children, " ");
9876
- }
9877
- if (isMultiform && !activeForm) {
9878
- return /* @__PURE__ */ React__namespace.createElement(FormLists, { isEditing });
9879
- }
9880
- const formMetas = cms.plugins.all("form:meta");
9881
- return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, activeForm && /* @__PURE__ */ React__namespace.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React__namespace.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React__namespace.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, { key: meta.name }, /* @__PURE__ */ React__namespace.createElement(meta.Component, null))), /* @__PURE__ */ React__namespace.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
9882
- };
9883
- const FormWrapper$1 = ({ isEditing, children }) => {
9884
- return /* @__PURE__ */ React__namespace.createElement(
9885
- "div",
9886
- {
9887
- className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
9888
- style: isEditing ? {
9889
- transform: "none",
9890
- animationName: "fly-in-left",
9891
- animationDuration: "150ms",
9892
- animationDelay: "0",
9893
- animationIterationCount: 1,
9894
- animationTimingFunction: "ease-out"
9895
- } : {
9896
- transform: "translate3d(100%, 0, 0)"
9897
- }
9898
- },
9899
- children
9900
- );
9901
- };
9902
- const MultiformFormHeader = ({
9903
- activeForm
9904
- }) => {
9905
- const cms = useCMS$1();
9906
- const { formIsPristine } = React__namespace.useContext(SidebarContext);
9907
- return /* @__PURE__ */ React__namespace.createElement(
9908
- "div",
9909
- {
9910
- className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
9911
- },
9912
- /* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
9913
- "button",
9914
- {
9915
- type: "button",
9916
- className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
9917
- onClick: () => {
9918
- const state = activeForm.tinaForm.finalForm.getState();
9919
- if (state.invalid === true) {
9920
- cms.alerts.error("Cannot navigate away from an invalid form.");
9921
- } else {
9922
- cms.dispatch({ type: "forms:set-active-form-id", value: null });
9923
- }
9924
- }
9925
- },
9926
- /* @__PURE__ */ React__namespace.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
9927
- ), /* @__PURE__ */ React__namespace.createElement(
9928
- "button",
9929
- {
9930
- type: "button",
9931
- className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
9932
- onClick: () => {
9933
- const collectionName = cms.api.tina.schema.getCollectionByFullPath(
9934
- cms.state.activeFormId
9935
- ).name;
9936
- window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
9937
- }
9938
- },
9939
- /* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
9940
- ), /* @__PURE__ */ React__namespace.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
9941
- );
9942
- };
9943
- const FormHeader = ({ activeForm }) => {
9944
- const { formIsPristine } = React__namespace.useContext(SidebarContext);
9945
- const cms = useCMS$1();
9946
- const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
9947
- return /* @__PURE__ */ React__namespace.createElement(
9948
- "div",
9949
- {
9950
- className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
9951
- },
9952
- /* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
9953
- "button",
9954
- {
9955
- type: "button",
9956
- className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
9957
- onClick: () => {
9958
- const collectionName = cms.api.tina.schema.getCollectionByFullPath(
9959
- cms.state.activeFormId
9960
- ).name;
9961
- window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
9962
- }
9963
- },
9964
- /* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
9965
- ), shortFormLabel && /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
9966
- );
9967
- };
9968
9714
  function ImFilesEmpty(props) {
9969
9715
  return GenIcon({ "tag": "svg", "attr": { "version": "1.1", "viewBox": "0 0 16 16" }, "child": [{ "tag": "path", "attr": { "d": "M14.341 5.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.689 0.561 1.25 1.25 1.25h9.5c0.689 0 1.25-0.561 1.25-1.25v-7.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 4.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134v0zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-9.5c-0.136 0-0.25-0.114-0.25-0.25v-11.5c0-0.135 0.114-0.25 0.25-0.25 0 0 5.749-0 5.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v7.75z" }, "child": [] }, { "tag": "path", "attr": { "d": "M9.421 0.659c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.604 0.43 1.109 1 1.225v-12.725c0-0.135 0.115-0.25 0.25-0.25h7.607c-0.151-0.124-0.297-0.238-0.437-0.341z" }, "child": [] }] })(props);
9970
9716
  }
@@ -10207,7 +9953,7 @@ flowchart TD
10207
9953
  "Event Log"
10208
9954
  ));
10209
9955
  };
10210
- const version = "2.6.1";
9956
+ const version = "2.7.4";
10211
9957
  const Nav = ({
10212
9958
  isLocalMode,
10213
9959
  className = "",
@@ -10449,6 +10195,293 @@ flowchart TD
10449
10195
  /* @__PURE__ */ React__namespace.createElement("span", { className: "absolute top-1/2 left-1/2 h-4/6 w-px bg-gray-200 transform -translate-y-1/2 -translate-x-1/2 opacity-30 transition-opacity duration-150 ease-out group-hover:opacity-100" })
10450
10196
  );
10451
10197
  };
10198
+ const Item = ({
10199
+ item,
10200
+ depth,
10201
+ setActiveFormId
10202
+ }) => {
10203
+ const cms = useCMS();
10204
+ const depths = ["pl-6", "pl-10", "pl-14"];
10205
+ const form = React__namespace.useMemo(
10206
+ () => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
10207
+ [item.formId]
10208
+ );
10209
+ return /* @__PURE__ */ React__namespace.createElement(
10210
+ "button",
10211
+ {
10212
+ type: "button",
10213
+ key: item.path,
10214
+ onClick: () => setActiveFormId(item.formId),
10215
+ className: `${depths[depth] || "pl-12"} pr-6 py-3 w-full h-full bg-transparent border-none text-lg text-gray-700 group hover:bg-gray-50 transition-all ease-out duration-150 flex items-center justify-between gap-2`
10216
+ },
10217
+ /* @__PURE__ */ React__namespace.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
10218
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React__namespace.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
10219
+ );
10220
+ };
10221
+ const FormListItem = ({
10222
+ item,
10223
+ depth,
10224
+ setActiveFormId
10225
+ }) => {
10226
+ var _a;
10227
+ return /* @__PURE__ */ React__namespace.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React__namespace.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React__namespace.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
10228
+ if (subItem.type === "document") {
10229
+ return /* @__PURE__ */ React__namespace.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React__namespace.createElement(
10230
+ Item,
10231
+ {
10232
+ setActiveFormId,
10233
+ depth: depth + 1,
10234
+ item: subItem
10235
+ }
10236
+ ));
10237
+ }
10238
+ })));
10239
+ };
10240
+ const FormLists = (props) => {
10241
+ const cms = useCMS();
10242
+ return /* @__PURE__ */ React__namespace.createElement(
10243
+ react.Transition,
10244
+ {
10245
+ appear: true,
10246
+ show: true,
10247
+ as: "div",
10248
+ enter: "transition-all ease-out duration-150",
10249
+ enterFrom: "opacity-0 -translate-x-1/2",
10250
+ enterTo: "opacity-100",
10251
+ leave: "transition-all ease-out duration-150",
10252
+ leaveFrom: "opacity-100",
10253
+ leaveTo: "opacity-0 -translate-x-1/2"
10254
+ },
10255
+ cms.state.formLists.map((formList, index) => /* @__PURE__ */ React__namespace.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React__namespace.createElement(
10256
+ FormList,
10257
+ {
10258
+ isEditing: props.isEditing,
10259
+ setActiveFormId: (id) => {
10260
+ cms.dispatch({ type: "forms:set-active-form-id", value: id });
10261
+ },
10262
+ formList
10263
+ }
10264
+ )))
10265
+ );
10266
+ };
10267
+ const FormList = (props) => {
10268
+ const cms = useCMS();
10269
+ const listItems = React__namespace.useMemo(() => {
10270
+ var _a;
10271
+ const orderedListItems = [];
10272
+ const globalItems = [];
10273
+ const topItems = [];
10274
+ props.formList.items.forEach((item) => {
10275
+ if (item.type === "document") {
10276
+ const form = cms.state.forms.find(
10277
+ ({ tinaForm }) => tinaForm.id === item.formId
10278
+ );
10279
+ if (form.tinaForm.global) {
10280
+ globalItems.push(item);
10281
+ } else {
10282
+ orderedListItems.push(item);
10283
+ }
10284
+ } else {
10285
+ orderedListItems.push(item);
10286
+ }
10287
+ });
10288
+ if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
10289
+ topItems.push({ type: "list", label: "Documents" });
10290
+ }
10291
+ let extra = [];
10292
+ if (globalItems.length) {
10293
+ extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
10294
+ }
10295
+ return [...topItems, ...orderedListItems, ...extra];
10296
+ }, [JSON.stringify(props.formList.items)]);
10297
+ return /* @__PURE__ */ React__namespace.createElement("ul", null, /* @__PURE__ */ React__namespace.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
10298
+ if (item.type === "list") {
10299
+ return /* @__PURE__ */ React__namespace.createElement(
10300
+ "div",
10301
+ {
10302
+ key: item.label,
10303
+ className: `relative group text-left w-full bg-white shadow-sm
10304
+ border-gray-100 px-6 -mt-px pb-3 ${index > 0 ? "pt-6 bg-gradient-to-b from-gray-50 via-white to-white" : "pt-3"}`
10305
+ },
10306
+ /* @__PURE__ */ React__namespace.createElement(
10307
+ "span",
10308
+ {
10309
+ className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
10310
+ },
10311
+ item.label
10312
+ )
10313
+ );
10314
+ }
10315
+ return /* @__PURE__ */ React__namespace.createElement(
10316
+ FormListItem,
10317
+ {
10318
+ setActiveFormId: (id) => props.setActiveFormId(id),
10319
+ key: item.formId,
10320
+ item,
10321
+ depth: 0
10322
+ }
10323
+ );
10324
+ })));
10325
+ };
10326
+ const SidebarNoFormsPlaceholder = () => /* @__PURE__ */ React__namespace.createElement(
10327
+ "div",
10328
+ {
10329
+ className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
10330
+ style: {
10331
+ animationName: "fade-in",
10332
+ animationDelay: "300ms",
10333
+ animationTimingFunction: "ease-out",
10334
+ animationIterationCount: 1,
10335
+ animationFillMode: "both",
10336
+ animationDuration: "150ms"
10337
+ }
10338
+ },
10339
+ /* @__PURE__ */ React__namespace.createElement("p", { className: "block pb-5" }, "Looks like there's ", /* @__PURE__ */ React__namespace.createElement("br", null), "nothing to edit on ", /* @__PURE__ */ React__namespace.createElement("br", null), "this page."),
10340
+ /* @__PURE__ */ React__namespace.createElement("p", { className: "block pt-5" }, /* @__PURE__ */ React__namespace.createElement(
10341
+ Button$1,
10342
+ {
10343
+ href: "https://tina.io/docs/contextual-editing/overview",
10344
+ target: "_blank",
10345
+ as: "a"
10346
+ },
10347
+ /* @__PURE__ */ React__namespace.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
10348
+ " Contextual Editing Docs"
10349
+ ))
10350
+ );
10351
+ const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React__namespace.createElement(
10352
+ "span",
10353
+ {
10354
+ className: `text-[24px] leading-none inline-block ${className}`,
10355
+ ...props
10356
+ }
10357
+ );
10358
+ const minimumTimeToShowLoadingIndicator = 1e3;
10359
+ const FormsView = ({ loadingPlaceholder } = {}) => {
10360
+ const cms = useCMS$1();
10361
+ const { setFormIsPristine } = React__namespace.useContext(SidebarContext);
10362
+ const [isShowingLoading, setIsShowingLoading] = React__namespace.useState(true);
10363
+ const [initialLoadComplete, setInitialLoadComplete] = React__namespace.useState(false);
10364
+ React__namespace.useEffect(() => {
10365
+ if (cms.state.isLoadingContent) {
10366
+ setIsShowingLoading(true);
10367
+ const timer = setTimeout(() => {
10368
+ if (!cms.state.isLoadingContent) {
10369
+ setIsShowingLoading(false);
10370
+ setInitialLoadComplete(true);
10371
+ }
10372
+ }, minimumTimeToShowLoadingIndicator);
10373
+ return () => clearTimeout(timer);
10374
+ } else {
10375
+ const timer = setTimeout(() => {
10376
+ setIsShowingLoading(false);
10377
+ setInitialLoadComplete(true);
10378
+ }, minimumTimeToShowLoadingIndicator);
10379
+ return () => clearTimeout(timer);
10380
+ }
10381
+ }, [cms.state.isLoadingContent]);
10382
+ if (isShowingLoading || !initialLoadComplete) {
10383
+ const LoadingPlaceholder = loadingPlaceholder || SidebarLoadingPlaceholder;
10384
+ return /* @__PURE__ */ React__namespace.createElement(LoadingPlaceholder, null);
10385
+ }
10386
+ if (!cms.state.formLists.length) {
10387
+ return /* @__PURE__ */ React__namespace.createElement(SidebarNoFormsPlaceholder, null);
10388
+ }
10389
+ const isMultiform = cms.state.forms.length > 1;
10390
+ const activeForm = cms.state.forms.find(
10391
+ ({ tinaForm }) => tinaForm.id === cms.state.activeFormId
10392
+ );
10393
+ const isEditing = !!activeForm;
10394
+ if (isMultiform && !activeForm) {
10395
+ return /* @__PURE__ */ React__namespace.createElement(FormLists, { isEditing });
10396
+ }
10397
+ const formMetas = cms.plugins.all("form:meta");
10398
+ return /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, null, activeForm && /* @__PURE__ */ React__namespace.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React__namespace.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React__namespace.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React__namespace.createElement(React__namespace.Fragment, { key: meta.name }, /* @__PURE__ */ React__namespace.createElement(meta.Component, null))), /* @__PURE__ */ React__namespace.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
10399
+ };
10400
+ const FormWrapper$1 = ({ isEditing, children }) => {
10401
+ return /* @__PURE__ */ React__namespace.createElement(
10402
+ "div",
10403
+ {
10404
+ className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
10405
+ style: isEditing ? {
10406
+ transform: "none",
10407
+ animationName: "fly-in-left",
10408
+ animationDuration: "150ms",
10409
+ animationDelay: "0",
10410
+ animationIterationCount: 1,
10411
+ animationTimingFunction: "ease-out"
10412
+ } : {
10413
+ transform: "translate3d(100%, 0, 0)"
10414
+ }
10415
+ },
10416
+ children
10417
+ );
10418
+ };
10419
+ const MultiformFormHeader = ({
10420
+ activeForm
10421
+ }) => {
10422
+ const cms = useCMS$1();
10423
+ const { formIsPristine } = React__namespace.useContext(SidebarContext);
10424
+ return /* @__PURE__ */ React__namespace.createElement(
10425
+ "div",
10426
+ {
10427
+ className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
10428
+ },
10429
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
10430
+ "button",
10431
+ {
10432
+ type: "button",
10433
+ className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
10434
+ onClick: () => {
10435
+ const state = activeForm.tinaForm.finalForm.getState();
10436
+ if (state.invalid === true) {
10437
+ cms.alerts.error("Cannot navigate away from an invalid form.");
10438
+ } else {
10439
+ cms.dispatch({ type: "forms:set-active-form-id", value: null });
10440
+ }
10441
+ }
10442
+ },
10443
+ /* @__PURE__ */ React__namespace.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
10444
+ ), /* @__PURE__ */ React__namespace.createElement(
10445
+ "button",
10446
+ {
10447
+ type: "button",
10448
+ className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
10449
+ onClick: () => {
10450
+ const collectionName = cms.api.tina.schema.getCollectionByFullPath(
10451
+ cms.state.activeFormId
10452
+ ).name;
10453
+ window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
10454
+ }
10455
+ },
10456
+ /* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
10457
+ ), /* @__PURE__ */ React__namespace.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
10458
+ );
10459
+ };
10460
+ const FormHeader = ({ activeForm }) => {
10461
+ const { formIsPristine } = React__namespace.useContext(SidebarContext);
10462
+ const cms = useCMS$1();
10463
+ const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
10464
+ return /* @__PURE__ */ React__namespace.createElement(
10465
+ "div",
10466
+ {
10467
+ className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
10468
+ },
10469
+ /* @__PURE__ */ React__namespace.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React__namespace.createElement(
10470
+ "button",
10471
+ {
10472
+ type: "button",
10473
+ className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
10474
+ onClick: () => {
10475
+ const collectionName = cms.api.tina.schema.getCollectionByFullPath(
10476
+ cms.state.activeFormId
10477
+ ).name;
10478
+ window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
10479
+ }
10480
+ },
10481
+ /* @__PURE__ */ React__namespace.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
10482
+ ), shortFormLabel && /* @__PURE__ */ React__namespace.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React__namespace.createElement(FormStatus, { pristine: formIsPristine }))
10483
+ );
10484
+ };
10452
10485
  const SidebarContext = React__namespace.createContext(null);
10453
10486
  const minPreviewWidth = 440;
10454
10487
  const minSidebarWidth = 360;
@@ -10667,7 +10700,7 @@ flowchart TD
10667
10700
  isLocalMode: (_d = (_c = cms.api) == null ? void 0 : _c.tina) == null ? void 0 : _d.isLocalMode,
10668
10701
  branchingEnabled
10669
10702
  }
10670
- ), /* @__PURE__ */ React__namespace.createElement(FormsView, null, /* @__PURE__ */ React__namespace.createElement(sidebar.placeholder, null)), activeScreen && /* @__PURE__ */ React__namespace.createElement(
10703
+ ), /* @__PURE__ */ React__namespace.createElement(FormsView, { loadingPlaceholder: sidebar.loadingPlaceholder }), activeScreen && /* @__PURE__ */ React__namespace.createElement(
10671
10704
  ScreenPluginModal,
10672
10705
  {
10673
10706
  screen: activeScreen,
@@ -10843,7 +10876,7 @@ flowchart TD
10843
10876
  className: "h-5 w-auto -mx-1 text-blue-500",
10844
10877
  stroke: "currentColor",
10845
10878
  fill: "currentColor",
10846
- "stroke-width": "0",
10879
+ strokeWidth: "0",
10847
10880
  viewBox: "0 0 24 24",
10848
10881
  xmlns: "http://www.w3.org/2000/svg"
10849
10882
  },
@@ -11433,7 +11466,10 @@ flowchart TD
11433
11466
  const observer = new IntersectionObserver((entries) => {
11434
11467
  const target = entries[0];
11435
11468
  if (target.isIntersecting && list.nextOffset) {
11436
- setOffsetHistory((offsetHistory2) => [...offsetHistory2, list.nextOffset]);
11469
+ setOffsetHistory((offsetHistory2) => [
11470
+ ...offsetHistory2,
11471
+ list.nextOffset
11472
+ ]);
11437
11473
  }
11438
11474
  });
11439
11475
  if (loaderRef.current) {
@@ -12028,6 +12064,7 @@ flowchart TD
12028
12064
  forms: [],
12029
12065
  formLists: [],
12030
12066
  editingMode: "basic",
12067
+ isLoadingContent: false,
12031
12068
  quickEditSupported: false,
12032
12069
  sidebarDisplayState: ((_a = cms == null ? void 0 : cms.sidebar) == null ? void 0 : _a.defaultState) || "open"
12033
12070
  };
@@ -12087,7 +12124,12 @@ flowchart TD
12087
12124
  }
12088
12125
  });
12089
12126
  }
12090
- return { ...state, activeFormId, formLists: nextFormLists };
12127
+ return {
12128
+ ...state,
12129
+ activeFormId,
12130
+ formLists: nextFormLists,
12131
+ isLoadingContent: false
12132
+ };
12091
12133
  }
12092
12134
  case "form-lists:remove": {
12093
12135
  const nextFormLists = state.formLists.filter(
@@ -12156,6 +12198,9 @@ flowchart TD
12156
12198
  }
12157
12199
  return { ...state, sidebarDisplayState: action.value };
12158
12200
  }
12201
+ case "sidebar:set-loading-state": {
12202
+ return { ...state, isLoadingContent: action.value };
12203
+ }
12159
12204
  default:
12160
12205
  throw new Error(`Unhandled action ${action.type}`);
12161
12206
  }
@@ -12397,7 +12442,9 @@ flowchart TD
12397
12442
  if (activeEle) {
12398
12443
  setDisplay(true);
12399
12444
  setPosition(activeEle.getBoundingClientRect());
12400
- const iframe = document.getElementById("tina-iframe");
12445
+ const iframe = document.getElementById(
12446
+ "tina-iframe"
12447
+ );
12401
12448
  if (iframe) {
12402
12449
  setIframePosition(iframe.getBoundingClientRect());
12403
12450
  }
@@ -12839,7 +12886,6 @@ flowchart TD
12839
12886
  }) => {
12840
12887
  const cms = useCMS$1();
12841
12888
  const tinaApi = cms.api.tina;
12842
- tinaApi.branch;
12843
12889
  const [disabled, setDisabled] = React__namespace.useState(false);
12844
12890
  const [newBranchName, setNewBranchName] = React__namespace.useState("");
12845
12891
  const [error, setError] = React__namespace.useState("");
@@ -12865,10 +12911,10 @@ flowchart TD
12865
12911
  const newUrl = window.location.href.replace(hash, newHash);
12866
12912
  window.location.href = newUrl;
12867
12913
  };
12868
- return /* @__PURE__ */ React__namespace.createElement(Modal, null, /* @__PURE__ */ React__namespace.createElement(PopupModal, null, /* @__PURE__ */ React__namespace.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React__namespace.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React__namespace.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__namespace.createElement("p", { className: "text-base text-gray-700 mb-2" }, "This branch is ", /* @__PURE__ */ React__namespace.createElement("strong", null, "protected"), ". Create a new branch to save your changes."), /* @__PURE__ */ React__namespace.createElement(
12914
+ return /* @__PURE__ */ React__namespace.createElement(Modal, null, /* @__PURE__ */ React__namespace.createElement(PopupModal, null, /* @__PURE__ */ React__namespace.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React__namespace.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React__namespace.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__namespace.createElement("p", { className: "text-lg text-gray-700 font-bold mb-2" }, "This content is protected 🚧"), /* @__PURE__ */ React__namespace.createElement("p", { className: "text-sm text-gray-700 mb-4" }, "To make changes, you need to create a copy then get it approved and merged for it to go live."), /* @__PURE__ */ React__namespace.createElement(
12869
12915
  PrefixedTextField,
12870
12916
  {
12871
- placeholder: "Branch Name",
12917
+ placeholder: "e.g. {{PAGE-NAME}}-updates",
12872
12918
  value: newBranchName,
12873
12919
  onChange: (e) => {
12874
12920
  setError("");
@@ -13015,7 +13061,9 @@ flowchart TD
13015
13061
  const { fieldName } = useTemplates();
13016
13062
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13017
13063
  useHotkey("enter", () => {
13018
- plateCommon.insertNodes(editor, [{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13064
+ plateCommon.insertNodes(editor, [
13065
+ { type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13066
+ ]);
13019
13067
  });
13020
13068
  return /* @__PURE__ */ React.createElement("span", { ...attributes, className: "" }, children, element.url ? /* @__PURE__ */ React.createElement(
13021
13069
  "div",
@@ -13158,7 +13206,9 @@ flowchart TD
13158
13206
  const { templates, fieldName } = useTemplates();
13159
13207
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13160
13208
  useHotkey("enter", () => {
13161
- plateCommon.insertNodes(editor, [{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13209
+ plateCommon.insertNodes(editor, [
13210
+ { type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13211
+ ]);
13162
13212
  });
13163
13213
  useHotkey("space", () => {
13164
13214
  plateCommon.insertNodes(editor, [{ text: " " }], {
@@ -13214,7 +13264,9 @@ flowchart TD
13214
13264
  const { templates, fieldName } = useTemplates();
13215
13265
  const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
13216
13266
  useHotkey("enter", () => {
13217
- plateCommon.insertNodes(editor, [{ type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }]);
13267
+ plateCommon.insertNodes(editor, [
13268
+ { type: plate.ELEMENT_PARAGRAPH, children: [{ text: "" }] }
13269
+ ]);
13218
13270
  });
13219
13271
  const activeTemplate = templates.find(
13220
13272
  (template) => template.name === element.name
@@ -13560,6 +13612,11 @@ flowchart TD
13560
13612
  mode: "mark",
13561
13613
  type: plate.MARK_CODE,
13562
13614
  match: "`"
13615
+ },
13616
+ {
13617
+ mode: "mark",
13618
+ type: plate.MARK_STRIKETHROUGH,
13619
+ match: ["~~", "~"]
13563
13620
  }
13564
13621
  ];
13565
13622
  const autoformatRules = [
@@ -13701,16 +13758,14 @@ flowchart TD
13701
13758
  })
13702
13759
  ];
13703
13760
  const plugins = [
13761
+ plate.createBasicMarksPlugin(),
13704
13762
  plate.createHeadingPlugin(),
13705
13763
  plate.createParagraphPlugin(),
13706
13764
  createCodeBlockPlugin(),
13707
13765
  createHTMLBlockPlugin(),
13708
13766
  createHTMLInlinePlugin(),
13709
13767
  plate.createBlockquotePlugin(),
13710
- plate.createBoldPlugin(),
13711
- plate.createItalicPlugin(),
13712
13768
  plate.createUnderlinePlugin(),
13713
- plate.createCodePlugin(),
13714
13769
  plate.createListPlugin(),
13715
13770
  plate.createIndentListPlugin(),
13716
13771
  plate.createHorizontalRulePlugin(),
@@ -14070,7 +14125,9 @@ flowchart TD
14070
14125
  const CONTAINER_MD_BREAKPOINT = 448;
14071
14126
  const FLOAT_BUTTON_WIDTH = 25;
14072
14127
  const HEADING_LABEL = "Headings";
14073
- const ToolbarContext = React.createContext(void 0);
14128
+ const ToolbarContext = React.createContext(
14129
+ void 0
14130
+ );
14074
14131
  const ToolbarProvider = ({
14075
14132
  tinaForm,
14076
14133
  templates,
@@ -14220,7 +14277,7 @@ flowchart TD
14220
14277
  const CodeBlockToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
14221
14278
  const state = useCodeBlockToolbarButtonState();
14222
14279
  const { props } = useCodeBlockToolbarButton(state);
14223
- return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.codeBlock, null));
14280
+ return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Code Block", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.codeBlock, null));
14224
14281
  });
14225
14282
  const useImageToolbarButtonState = () => {
14226
14283
  const editor = plateCommon.useEditorState();
@@ -14252,36 +14309,54 @@ flowchart TD
14252
14309
  const ImageToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
14253
14310
  const state = useImageToolbarButtonState();
14254
14311
  const { props } = useImageToolbarButton(state);
14255
- return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.image, null));
14256
- });
14257
- const IndentListToolbarButton = cn$1.withRef(({ nodeType = plate.ELEMENT_UL }, ref) => {
14258
- const editor = plateCommon.useEditorState();
14259
- const state = plate.useListToolbarButtonState({ nodeType });
14260
- const { props } = plate.useListToolbarButton(state);
14261
- return /* @__PURE__ */ React.createElement(
14262
- ToolbarButton,
14263
- {
14264
- ref,
14265
- tooltip: nodeType === plate.ELEMENT_UL ? "Bulleted List" : "Numbered List",
14266
- ...props,
14267
- onClick: (e) => {
14268
- e.preventDefault();
14269
- e.stopPropagation();
14270
- plate.toggleList(editor, { type: nodeType });
14271
- }
14272
- },
14273
- nodeType === plate.ELEMENT_UL ? /* @__PURE__ */ React.createElement(Icons.ul, null) : /* @__PURE__ */ React.createElement(Icons.ol, null)
14274
- );
14312
+ return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Image", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.image, null));
14275
14313
  });
14314
+ const UnorderedListToolbarButton = cn$1.withRef(
14315
+ (props, ref) => {
14316
+ const editor = plateCommon.useEditorState();
14317
+ const state = plate.useListToolbarButtonState({ nodeType: plate.ELEMENT_UL });
14318
+ const { props: buttonProps } = plate.useListToolbarButton(state);
14319
+ return /* @__PURE__ */ React.createElement(
14320
+ ToolbarButton,
14321
+ {
14322
+ ref,
14323
+ tooltip: "Bulleted List",
14324
+ ...buttonProps,
14325
+ onClick: (e) => {
14326
+ e.preventDefault();
14327
+ e.stopPropagation();
14328
+ plate.toggleList(editor, { type: plate.ELEMENT_UL });
14329
+ }
14330
+ },
14331
+ /* @__PURE__ */ React.createElement(Icons.ul, null)
14332
+ );
14333
+ }
14334
+ );
14335
+ const OrderedListToolbarButton = cn$1.withRef(
14336
+ (props, ref) => {
14337
+ const editor = plateCommon.useEditorState();
14338
+ const state = plate.useListToolbarButtonState({ nodeType: plate.ELEMENT_OL });
14339
+ const { props: buttonProps } = plate.useListToolbarButton(state);
14340
+ return /* @__PURE__ */ React.createElement(
14341
+ ToolbarButton,
14342
+ {
14343
+ ref,
14344
+ tooltip: "Numbered List",
14345
+ ...buttonProps,
14346
+ onClick: (e) => {
14347
+ e.preventDefault();
14348
+ e.stopPropagation();
14349
+ plate.toggleList(editor, { type: plate.ELEMENT_OL });
14350
+ }
14351
+ },
14352
+ /* @__PURE__ */ React.createElement(Icons.ol, null)
14353
+ );
14354
+ }
14355
+ );
14276
14356
  const LinkToolbarButton = cn$1.withRef((rest, ref) => {
14277
14357
  const state = plateLink.useLinkToolbarButtonState();
14278
14358
  const { props } = plateLink.useLinkToolbarButton(state);
14279
- return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Link", ...props, ...rest }, /* @__PURE__ */ React.createElement(Icons.link, null));
14280
- });
14281
- const MarkToolbarButton = cn$1.withRef(({ clear, nodeType, ...rest }, ref) => {
14282
- const state = plateCommon.useMarkToolbarButtonState({ clear, nodeType });
14283
- const { props } = plateCommon.useMarkToolbarButton(state);
14284
- return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest });
14359
+ return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest, tooltip: "Link" }, /* @__PURE__ */ React.createElement(Icons.link, null));
14285
14360
  });
14286
14361
  const useMermaidToolbarButtonState = () => {
14287
14362
  const editor = plateCommon.useEditorState();
@@ -14362,7 +14437,7 @@ flowchart TD
14362
14437
  const QuoteToolbarButton = cn$1.withRef(({ clear, ...rest }, ref) => {
14363
14438
  const state = useBlockQuoteToolbarButtonState();
14364
14439
  const { props } = useBlockQuoteToolbarButton(state);
14365
- return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Link", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.quote, null));
14440
+ return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, tooltip: "Quote (⌘+⇧+.)", ...rest, ...props }, /* @__PURE__ */ React.createElement(Icons.quote, null));
14366
14441
  });
14367
14442
  const useRawMarkdownToolbarButton = () => {
14368
14443
  const { setRawMode } = useEditorContext();
@@ -14382,7 +14457,7 @@ flowchart TD
14382
14457
  ToolbarButton,
14383
14458
  {
14384
14459
  ref,
14385
- tooltip: "Link",
14460
+ tooltip: "Raw Markdown",
14386
14461
  ...rest,
14387
14462
  ...props,
14388
14463
  "data-testid": "markdown-button"
@@ -14527,7 +14602,7 @@ flowchart TD
14527
14602
  key: template.name,
14528
14603
  onMouseDown: (e) => {
14529
14604
  e.preventDefault();
14530
- close();
14605
+ setOpen(false);
14531
14606
  insertMDX(editor, template);
14532
14607
  },
14533
14608
  className: ""
@@ -14535,6 +14610,15 @@ flowchart TD
14535
14610
  template.label || template.name
14536
14611
  ))));
14537
14612
  };
14613
+ const MarkToolbarButton = cn$1.withRef(({ clear, nodeType, ...rest }, ref) => {
14614
+ const state = plateCommon.useMarkToolbarButtonState({ clear, nodeType });
14615
+ const { props } = plateCommon.useMarkToolbarButton(state);
14616
+ return /* @__PURE__ */ React.createElement(ToolbarButton, { ref, ...props, ...rest });
14617
+ });
14618
+ const BoldToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: plate.MARK_BOLD }, /* @__PURE__ */ React.createElement(Icons.bold, null));
14619
+ const StrikethroughToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Strikethrough", nodeType: plate.MARK_STRIKETHROUGH }, /* @__PURE__ */ React.createElement(Icons.strikethrough, null));
14620
+ const ItalicToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: plate.MARK_ITALIC }, /* @__PURE__ */ React.createElement(Icons.italic, null));
14621
+ const CodeToolbarButton = () => /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: plate.MARK_CODE }, /* @__PURE__ */ React.createElement(Icons.code, null));
14538
14622
  const toolbarItems = {
14539
14623
  heading: {
14540
14624
  label: HEADING_LABEL,
@@ -14555,32 +14639,37 @@ flowchart TD
14555
14639
  quote: {
14556
14640
  label: "Quote",
14557
14641
  width: () => STANDARD_ICON_WIDTH,
14558
- Component: /* @__PURE__ */ React.createElement(QuoteToolbarButton, { tooltip: "Quote Quote (⌘+⇧+.)" })
14642
+ Component: /* @__PURE__ */ React.createElement(QuoteToolbarButton, null)
14559
14643
  },
14560
14644
  ul: {
14561
14645
  label: "Unordered List",
14562
14646
  width: () => STANDARD_ICON_WIDTH,
14563
- Component: /* @__PURE__ */ React.createElement(IndentListToolbarButton, { nodeType: plate.ELEMENT_UL })
14647
+ Component: /* @__PURE__ */ React.createElement(UnorderedListToolbarButton, null)
14564
14648
  },
14565
14649
  ol: {
14566
14650
  label: "Ordered List",
14567
14651
  width: () => STANDARD_ICON_WIDTH,
14568
- Component: /* @__PURE__ */ React.createElement(IndentListToolbarButton, { nodeType: plate.ELEMENT_OL })
14652
+ Component: /* @__PURE__ */ React.createElement(OrderedListToolbarButton, null)
14569
14653
  },
14570
14654
  bold: {
14571
14655
  label: "Bold",
14572
14656
  width: () => STANDARD_ICON_WIDTH,
14573
- Component: /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: plate.MARK_BOLD }, /* @__PURE__ */ React.createElement(Icons.bold, null))
14657
+ Component: /* @__PURE__ */ React.createElement(BoldToolbarButton, null)
14658
+ },
14659
+ strikethrough: {
14660
+ label: "Strikethrough",
14661
+ width: () => STANDARD_ICON_WIDTH,
14662
+ Component: /* @__PURE__ */ React.createElement(StrikethroughToolbarButton, null)
14574
14663
  },
14575
14664
  italic: {
14576
14665
  label: "Italic",
14577
14666
  width: () => STANDARD_ICON_WIDTH,
14578
- Component: /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: plate.MARK_ITALIC }, /* @__PURE__ */ React.createElement(Icons.italic, null))
14667
+ Component: /* @__PURE__ */ React.createElement(ItalicToolbarButton, null)
14579
14668
  },
14580
14669
  code: {
14581
14670
  label: "Code",
14582
14671
  width: () => STANDARD_ICON_WIDTH,
14583
- Component: /* @__PURE__ */ React.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: plate.MARK_CODE }, /* @__PURE__ */ React.createElement(Icons.code, null))
14672
+ Component: /* @__PURE__ */ React.createElement(CodeToolbarButton, null)
14584
14673
  },
14585
14674
  codeBlock: {
14586
14675
  label: "Code Block",
@@ -16229,132 +16318,1209 @@ flowchart TD
16229
16318
  "হয়"
16230
16319
  ];
16231
16320
  const bre = [
16321
+ "'blam",
16322
+ "'d",
16323
+ "'m",
16324
+ "'r",
16325
+ "'ta",
16326
+ "'vat",
16327
+ "'z",
16328
+ "'zo",
16232
16329
  "a",
16233
- "ainda",
16234
- "alem",
16235
- "ambas",
16236
- "ambos",
16237
- "antes",
16238
- "ao",
16239
- "aonde",
16240
- "aos",
16241
- "apos",
16242
- "aquele",
16243
- "aqueles",
16244
- "as",
16245
- "assim",
16246
- "com",
16247
- "como",
16248
- "contra",
16249
- "contudo",
16250
- "cuja",
16251
- "cujas",
16252
- "cujo",
16253
- "cujos",
16330
+ "a:",
16331
+ "aba",
16332
+ "abalamour",
16333
+ "abaoe",
16334
+ "ac'hane",
16335
+ "ac'hanoc'h",
16336
+ "ac'hanomp",
16337
+ "ac'hanon",
16338
+ "ac'hanout",
16339
+ "adal",
16340
+ "adalek",
16341
+ "adarre",
16342
+ "ae",
16343
+ "aec'h",
16344
+ "aed",
16345
+ "aemp",
16346
+ "aen",
16347
+ "aent",
16348
+ "aes",
16349
+ "afe",
16350
+ "afec'h",
16351
+ "afed",
16352
+ "afemp",
16353
+ "afen",
16354
+ "afent",
16355
+ "afes",
16356
+ "ag",
16357
+ "ah",
16358
+ "aimp",
16359
+ "aint",
16360
+ "aio",
16361
+ "aiou",
16362
+ "aje",
16363
+ "ajec'h",
16364
+ "ajed",
16365
+ "ajemp",
16366
+ "ajen",
16367
+ "ajent",
16368
+ "ajes",
16369
+ "al",
16370
+ "alato",
16371
+ "alies",
16372
+ "aliesañ",
16373
+ "alkent",
16374
+ "all",
16375
+ "allas",
16376
+ "allo",
16377
+ "allô",
16378
+ "am",
16379
+ "amañ",
16380
+ "amzer",
16381
+ "an",
16382
+ "anezhañ",
16383
+ "anezhe",
16384
+ "anezhi",
16385
+ "anezho",
16386
+ "anvet",
16387
+ "aon",
16388
+ "aotren",
16389
+ "ar",
16390
+ "arall",
16391
+ "araok",
16392
+ "araoki",
16393
+ "araozañ",
16394
+ "araozo",
16395
+ "araozoc'h",
16396
+ "araozomp",
16397
+ "araozon",
16398
+ "araozor",
16399
+ "araozout",
16400
+ "arbenn",
16401
+ "arre",
16402
+ "atalek",
16403
+ "atav",
16404
+ "az",
16405
+ "azalek",
16406
+ "azirazañ",
16407
+ "azirazi",
16408
+ "azirazo",
16409
+ "azirazoc'h",
16410
+ "azirazomp",
16411
+ "azirazon",
16412
+ "azirazor",
16413
+ "azirazout",
16414
+ "b:",
16415
+ "ba",
16416
+ "ba'l",
16417
+ "ba'n",
16418
+ "ba'r",
16419
+ "bad",
16420
+ "bah",
16421
+ "bal",
16422
+ "ban",
16423
+ "bar",
16424
+ "bastañ",
16425
+ "befe",
16426
+ "bell",
16427
+ "benaos",
16428
+ "benn",
16429
+ "bennag",
16430
+ "bennak",
16431
+ "bennozh",
16432
+ "bep",
16433
+ "bepred",
16434
+ "berr",
16435
+ "berzh",
16436
+ "bet",
16437
+ "betek",
16438
+ "betra",
16439
+ "bev",
16440
+ "bevet",
16441
+ "bez",
16442
+ "bezañ",
16443
+ "beze",
16444
+ "bezent",
16445
+ "bezet",
16446
+ "bezh",
16447
+ "bezit",
16448
+ "bezomp",
16449
+ "bihan",
16450
+ "bije",
16451
+ "biou",
16452
+ "biskoazh",
16453
+ "blam",
16454
+ "bo",
16455
+ "boa",
16456
+ "bominapl",
16457
+ "boudoudom",
16458
+ "bouez",
16459
+ "boull",
16460
+ "boum",
16461
+ "bout",
16462
+ "bras",
16463
+ "brasañ",
16464
+ "brav",
16465
+ "bravo",
16466
+ "bremañ",
16467
+ "bres",
16468
+ "brokenn",
16469
+ "bronn",
16470
+ "brrr",
16471
+ "brutal",
16472
+ "buhezek",
16473
+ "c'h:",
16474
+ "c'haout",
16475
+ "c'he",
16476
+ "c'hem",
16477
+ "c'herz",
16478
+ "c'heñver",
16479
+ "c'hichen",
16480
+ "c'hiz",
16481
+ "c'hoazh",
16482
+ "c'horre",
16483
+ "c'houde",
16484
+ "c'houst",
16485
+ "c'hreiz",
16486
+ "c'hwec'h",
16487
+ "c'hwec'hvet",
16488
+ "c'hwezek",
16489
+ "c'hwi",
16490
+ "ch:",
16491
+ "chaous",
16492
+ "chik",
16493
+ "chit",
16494
+ "chom",
16495
+ "chut",
16496
+ "d'",
16497
+ "d'al",
16498
+ "d'an",
16499
+ "d'ar",
16500
+ "d'az",
16501
+ "d'e",
16502
+ "d'he",
16503
+ "d'ho",
16504
+ "d'hol",
16505
+ "d'hon",
16506
+ "d'hor",
16507
+ "d'o",
16508
+ "d'ober",
16509
+ "d'ul",
16510
+ "d'un",
16511
+ "d'ur",
16512
+ "d:",
16254
16513
  "da",
16255
- "das",
16256
- "de",
16257
- "dela",
16258
- "dele",
16259
- "deles",
16260
- "demais",
16261
- "depois",
16262
- "desde",
16263
- "desta",
16264
- "deste",
16265
- "dispoe",
16266
- "dispoem",
16267
- "diversa",
16268
- "diversas",
16269
- "diversos",
16514
+ "dak",
16515
+ "daka",
16516
+ "dal",
16517
+ "dalbezh",
16518
+ "dalc'hmat",
16519
+ "dalit",
16520
+ "damdost",
16521
+ "damheñvel",
16522
+ "damm",
16523
+ "dan",
16524
+ "danvez",
16525
+ "dao",
16526
+ "daol",
16527
+ "daonet",
16528
+ "daou",
16529
+ "daoust",
16530
+ "daouzek",
16531
+ "daouzekvet",
16532
+ "darn",
16533
+ "dastrewiñ",
16534
+ "dav",
16535
+ "davedoc'h",
16536
+ "davedomp",
16537
+ "davedon",
16538
+ "davedor",
16539
+ "davedout",
16540
+ "davet",
16541
+ "davetañ",
16542
+ "davete",
16543
+ "daveti",
16544
+ "daveto",
16545
+ "defe",
16546
+ "dehou",
16547
+ "dek",
16548
+ "dekvet",
16549
+ "den",
16550
+ "deoc'h",
16551
+ "deomp",
16552
+ "deor",
16553
+ "derc'hel",
16554
+ "deus",
16555
+ "dez",
16556
+ "deze",
16557
+ "dezhañ",
16558
+ "dezhe",
16559
+ "dezhi",
16560
+ "dezho",
16561
+ "di",
16562
+ "diabarzh",
16563
+ "diagent",
16564
+ "diar",
16565
+ "diaraok",
16566
+ "diavaez",
16567
+ "dibaoe",
16568
+ "dibaot",
16569
+ "dibar",
16570
+ "dic'halañ",
16571
+ "didiac'h",
16572
+ "dienn",
16573
+ "difer",
16574
+ "diganeoc'h",
16575
+ "diganeomp",
16576
+ "diganeor",
16577
+ "diganimp",
16578
+ "diganin",
16579
+ "diganit",
16580
+ "digant",
16581
+ "digantañ",
16582
+ "digante",
16583
+ "diganti",
16584
+ "diganto",
16585
+ "digemmesk",
16586
+ "diget",
16587
+ "digor",
16588
+ "digoret",
16589
+ "dija",
16590
+ "dije",
16591
+ "dimp",
16592
+ "din",
16593
+ "dinaou",
16594
+ "dindan",
16595
+ "dindanañ",
16596
+ "dindani",
16597
+ "dindano",
16598
+ "dindanoc'h",
16599
+ "dindanomp",
16600
+ "dindanon",
16601
+ "dindanor",
16602
+ "dindanout",
16603
+ "dioutañ",
16604
+ "dioute",
16605
+ "diouti",
16606
+ "diouto",
16607
+ "diouzh",
16608
+ "diouzhin",
16609
+ "diouzhit",
16610
+ "diouzhoc'h",
16611
+ "diouzhomp",
16612
+ "diouzhor",
16613
+ "dirak",
16614
+ "dirazañ",
16615
+ "dirazi",
16616
+ "dirazo",
16617
+ "dirazoc'h",
16618
+ "dirazomp",
16619
+ "dirazon",
16620
+ "dirazor",
16621
+ "dirazout",
16622
+ "disheñvel",
16623
+ "dispar",
16624
+ "distank",
16625
+ "dister",
16626
+ "disterañ",
16627
+ "disterig",
16628
+ "distro",
16629
+ "dit",
16630
+ "divaez",
16631
+ "diwar",
16632
+ "diwezhat",
16633
+ "diwezhañ",
16270
16634
  "do",
16271
- "dos",
16272
- "durante",
16635
+ "doa",
16636
+ "doare",
16637
+ "dont",
16638
+ "dost",
16639
+ "doue",
16640
+ "douetus",
16641
+ "douez",
16642
+ "doug",
16643
+ "draou",
16644
+ "draoñ",
16645
+ "dre",
16646
+ "drede",
16647
+ "dreist",
16648
+ "dreistañ",
16649
+ "dreisti",
16650
+ "dreisto",
16651
+ "dreistoc'h",
16652
+ "dreistomp",
16653
+ "dreiston",
16654
+ "dreistor",
16655
+ "dreistout",
16656
+ "drek",
16657
+ "dreñv",
16658
+ "dring",
16659
+ "dro",
16660
+ "du",
16273
16661
  "e",
16274
- "ela",
16275
- "elas",
16276
- "ele",
16277
- "eles",
16662
+ "e:",
16663
+ "eas",
16664
+ "ebet",
16665
+ "ec'h",
16666
+ "edo",
16667
+ "edoc'h",
16668
+ "edod",
16669
+ "edomp",
16670
+ "edon",
16671
+ "edont",
16672
+ "edos",
16673
+ "eer",
16674
+ "eeun",
16675
+ "efed",
16676
+ "egedoc'h",
16677
+ "egedomp",
16678
+ "egedon",
16679
+ "egedor",
16680
+ "egedout",
16681
+ "eget",
16682
+ "egetañ",
16683
+ "egete",
16684
+ "egeti",
16685
+ "egeto",
16686
+ "eh",
16687
+ "eil",
16688
+ "eilvet",
16689
+ "eizh",
16690
+ "eizhvet",
16691
+ "ejoc'h",
16692
+ "ejod",
16693
+ "ejomp",
16694
+ "ejont",
16695
+ "ejout",
16696
+ "el",
16278
16697
  "em",
16279
- "entao",
16280
- "entre",
16281
- "essa",
16282
- "essas",
16283
- "esse",
16284
- "esses",
16285
- "esta",
16286
- "estas",
16287
- "este",
16288
- "estes",
16698
+ "emaint",
16699
+ "emaoc'h",
16700
+ "emaomp",
16701
+ "emaon",
16702
+ "emaout",
16703
+ "emañ",
16704
+ "eme",
16705
+ "emeur",
16706
+ "emezañ",
16707
+ "emezi",
16708
+ "emezo",
16709
+ "emezoc'h",
16710
+ "emezomp",
16711
+ "emezon",
16712
+ "emezout",
16713
+ "emporzhiañ",
16714
+ "en",
16715
+ "end",
16716
+ "endan",
16717
+ "endra",
16718
+ "enep",
16719
+ "ennañ",
16720
+ "enni",
16721
+ "enno",
16722
+ "ennoc'h",
16723
+ "ennomp",
16724
+ "ennon",
16725
+ "ennor",
16726
+ "ennout",
16727
+ "enta",
16728
+ "eo",
16729
+ "eomp",
16730
+ "eont",
16731
+ "eor",
16732
+ "eot",
16733
+ "er",
16734
+ "erbet",
16735
+ "erfin",
16736
+ "esa",
16737
+ "esae",
16738
+ "espar",
16739
+ "estlamm",
16740
+ "estrañj",
16741
+ "eta",
16742
+ "etre",
16743
+ "etreoc'h",
16744
+ "etrezo",
16745
+ "etrezoc'h",
16746
+ "etrezomp",
16747
+ "etrezor",
16748
+ "euh",
16749
+ "eur",
16750
+ "eus",
16751
+ "evel",
16752
+ "evelato",
16753
+ "eveldoc'h",
16754
+ "eveldomp",
16755
+ "eveldon",
16756
+ "eveldor",
16757
+ "eveldout",
16758
+ "evelkent",
16759
+ "eveltañ",
16760
+ "evelte",
16761
+ "evelti",
16762
+ "evelto",
16763
+ "evidoc'h",
16764
+ "evidomp",
16765
+ "evidon",
16766
+ "evidor",
16767
+ "evidout",
16768
+ "evit",
16769
+ "evitañ",
16770
+ "evite",
16771
+ "eviti",
16772
+ "evito",
16773
+ "ez",
16774
+ "eñ",
16775
+ "f:",
16776
+ "fac'h",
16777
+ "fall",
16778
+ "fed",
16779
+ "feiz",
16780
+ "fenn",
16781
+ "fezh",
16782
+ "fin",
16783
+ "finsalvet",
16784
+ "foei",
16785
+ "fouilhezañ",
16786
+ "g:",
16787
+ "gallout",
16788
+ "ganeoc'h",
16789
+ "ganeomp",
16790
+ "ganin",
16791
+ "ganit",
16792
+ "gant",
16793
+ "gantañ",
16794
+ "ganti",
16795
+ "ganto",
16796
+ "gaout",
16797
+ "gast",
16798
+ "gein",
16799
+ "gellout",
16800
+ "genndost",
16801
+ "gentañ",
16802
+ "ger",
16803
+ "gerz",
16804
+ "get",
16805
+ "geñver",
16806
+ "gichen",
16807
+ "gin",
16808
+ "giz",
16809
+ "glan",
16810
+ "gloev",
16811
+ "goll",
16812
+ "gorre",
16813
+ "goude",
16814
+ "gouez",
16815
+ "gouezit",
16816
+ "gouezomp",
16817
+ "goulz",
16818
+ "gounnar",
16819
+ "gour",
16820
+ "goust",
16821
+ "gouze",
16822
+ "gouzout",
16823
+ "gra",
16824
+ "grak",
16825
+ "grec'h",
16826
+ "greiz",
16827
+ "grenn",
16828
+ "greomp",
16829
+ "grit",
16830
+ "groñs",
16831
+ "gutez",
16832
+ "gwall",
16833
+ "gwashoc'h",
16834
+ "gwazh",
16835
+ "gwech",
16836
+ "gwechall",
16837
+ "gwechoù",
16838
+ "gwell",
16839
+ "gwezh",
16840
+ "gwezhall",
16841
+ "gwezharall",
16842
+ "gwezhoù",
16843
+ "gwig",
16844
+ "gwirionez",
16845
+ "gwitibunan",
16846
+ "gêr",
16847
+ "h:",
16289
16848
  "ha",
16290
- "isso",
16291
- "isto",
16292
- "logo",
16293
- "mais",
16294
- "mas",
16295
- "mediante",
16296
- "menos",
16297
- "mesma",
16298
- "mesmas",
16299
- "mesmo",
16300
- "mesmos",
16849
+ "hag",
16850
+ "han",
16851
+ "hanter",
16852
+ "hanterc'hantad",
16853
+ "hanterkantved",
16854
+ "harz",
16855
+ "hañ",
16856
+ "hañval",
16857
+ "he",
16858
+ "hebioù",
16859
+ "hec'h",
16860
+ "hei",
16861
+ "hein",
16862
+ "hem",
16863
+ "hemañ",
16864
+ "hen",
16865
+ "hend",
16866
+ "henhont",
16867
+ "henn",
16868
+ "hennezh",
16869
+ "hent",
16870
+ "hep",
16871
+ "hervez",
16872
+ "hervezañ",
16873
+ "hervezi",
16874
+ "hervezo",
16875
+ "hervezoc'h",
16876
+ "hervezomp",
16877
+ "hervezon",
16878
+ "hervezor",
16879
+ "hervezout",
16880
+ "heul",
16881
+ "heuliañ",
16882
+ "hevelep",
16883
+ "heverk",
16884
+ "heñvel",
16885
+ "heñvelat",
16886
+ "heñvelañ",
16887
+ "heñveliñ",
16888
+ "heñveloc'h",
16889
+ "heñvelout",
16890
+ "hi",
16891
+ "hilh",
16892
+ "hini",
16893
+ "hirie",
16894
+ "hirio",
16895
+ "hiziv",
16896
+ "hiziviken",
16897
+ "ho",
16898
+ "hoaliñ",
16899
+ "hoc'h",
16900
+ "hogen",
16901
+ "hogos",
16902
+ "hogozik",
16903
+ "hol",
16904
+ "holl",
16905
+ "holà",
16906
+ "homañ",
16907
+ "hon",
16908
+ "honhont",
16909
+ "honnezh",
16910
+ "hont",
16911
+ "hop",
16912
+ "hopala",
16913
+ "hor",
16914
+ "hou",
16915
+ "houp",
16916
+ "hudu",
16917
+ "hue",
16918
+ "hui",
16919
+ "hum",
16920
+ "hurrah",
16921
+ "i",
16922
+ "i:",
16923
+ "in",
16924
+ "int",
16925
+ "is",
16926
+ "ispisial",
16927
+ "isurzhiet",
16928
+ "it",
16929
+ "ivez",
16930
+ "izelañ",
16931
+ "j:",
16932
+ "just",
16933
+ "k:",
16934
+ "kae",
16935
+ "kaer",
16936
+ "kalon",
16937
+ "kalz",
16938
+ "kant",
16939
+ "kaout",
16940
+ "kar",
16941
+ "kazi",
16942
+ "keid",
16943
+ "kein",
16944
+ "keit",
16945
+ "kel",
16946
+ "kellies",
16947
+ "keloù",
16948
+ "kement",
16949
+ "ken",
16950
+ "kenkent",
16951
+ "kenkoulz",
16952
+ "kenment",
16953
+ "kent",
16954
+ "kentañ",
16955
+ "kentizh",
16956
+ "kentoc'h",
16957
+ "kentre",
16958
+ "ker",
16959
+ "kerkent",
16960
+ "kerz",
16961
+ "kerzh",
16962
+ "ket",
16963
+ "keta",
16964
+ "keñver",
16965
+ "keñverel",
16966
+ "keñverius",
16967
+ "kichen",
16968
+ "kichenik",
16969
+ "kit",
16970
+ "kiz",
16971
+ "klak",
16972
+ "klek",
16973
+ "klik",
16974
+ "komprenet",
16975
+ "komz",
16976
+ "kont",
16977
+ "korf",
16978
+ "korre",
16979
+ "koulskoude",
16980
+ "koulz",
16981
+ "koust",
16982
+ "krak",
16983
+ "krampouezh",
16984
+ "krec'h",
16985
+ "kreiz",
16986
+ "kuit",
16987
+ "kwir",
16988
+ "l:",
16989
+ "la",
16990
+ "laez",
16991
+ "laoskel",
16992
+ "laouen",
16993
+ "lavar",
16994
+ "lavaret",
16995
+ "lavarout",
16996
+ "lec'h",
16997
+ "lein",
16998
+ "leizh",
16999
+ "lerc'h",
17000
+ "leun",
17001
+ "leuskel",
17002
+ "lew",
17003
+ "lies",
17004
+ "liesañ",
17005
+ "lod",
17006
+ "lusk",
17007
+ "lâr",
17008
+ "lârout",
17009
+ "m:",
17010
+ "ma",
17011
+ "ma'z",
17012
+ "mac'h",
17013
+ "mac'hat",
17014
+ "mac'hañ",
17015
+ "mac'hoc'h",
17016
+ "mad",
17017
+ "maez",
17018
+ "maksimal",
17019
+ "mann",
17020
+ "mar",
17021
+ "mard",
17022
+ "marg",
17023
+ "marzh",
17024
+ "mat",
17025
+ "mañ",
17026
+ "me",
17027
+ "memes",
17028
+ "memestra",
17029
+ "merkapl",
17030
+ "mersi",
17031
+ "mes",
17032
+ "mesk",
17033
+ "met",
17034
+ "meur",
17035
+ "mil",
17036
+ "minimal",
17037
+ "moan",
17038
+ "moaniaat",
17039
+ "mod",
17040
+ "mont",
17041
+ "mout",
17042
+ "mui",
17043
+ "muiañ",
17044
+ "muioc'h",
17045
+ "n",
17046
+ "n'",
17047
+ "n:",
16301
17048
  "na",
16302
- "nao",
16303
- "nas",
16304
- "nem",
16305
- "nesse",
16306
- "neste",
16307
- "nos",
17049
+ "nag",
17050
+ "naontek",
17051
+ "naturel",
17052
+ "nav",
17053
+ "navet",
17054
+ "ne",
17055
+ "nebeudig",
17056
+ "nebeut",
17057
+ "nebeutañ",
17058
+ "nebeutoc'h",
17059
+ "neketa",
17060
+ "nemedoc'h",
17061
+ "nemedomp",
17062
+ "nemedon",
17063
+ "nemedor",
17064
+ "nemedout",
17065
+ "nemet",
17066
+ "nemetañ",
17067
+ "nemete",
17068
+ "nemeti",
17069
+ "nemeto",
17070
+ "nemeur",
17071
+ "neoac'h",
17072
+ "nepell",
17073
+ "nerzh",
17074
+ "nes",
17075
+ "neseser",
17076
+ "netra",
17077
+ "neubeudoù",
17078
+ "neuhe",
17079
+ "neuze",
17080
+ "nevez",
17081
+ "newazh",
17082
+ "nez",
17083
+ "ni",
17084
+ "nikun",
17085
+ "niverus",
17086
+ "nul",
16308
17087
  "o",
16309
- "os",
16310
- "ou",
16311
- "outra",
16312
- "outras",
16313
- "outro",
16314
- "outros",
16315
- "pelas",
16316
- "pelo",
16317
- "pelos",
16318
- "perante",
16319
- "pois",
16320
- "por",
16321
- "porque",
16322
- "portanto",
16323
- "propios",
16324
- "proprio",
16325
- "quais",
16326
- "qual",
16327
- "qualquer",
16328
- "quando",
16329
- "quanto",
16330
- "que",
16331
- "quem",
16332
- "quer",
17088
+ "o:",
17089
+ "oa",
17090
+ "oac'h",
17091
+ "oad",
17092
+ "oamp",
17093
+ "oan",
17094
+ "oant",
17095
+ "oar",
17096
+ "oas",
17097
+ "ober",
17098
+ "oc'h",
17099
+ "oc'ho",
17100
+ "oc'hola",
17101
+ "oc'hpenn",
17102
+ "oh",
17103
+ "ohe",
17104
+ "ollé",
17105
+ "olole",
17106
+ "olé",
17107
+ "omp",
17108
+ "on",
17109
+ "ordin",
17110
+ "ordinal",
17111
+ "ouejoc'h",
17112
+ "ouejod",
17113
+ "ouejomp",
17114
+ "ouejont",
17115
+ "ouejout",
17116
+ "ouek",
17117
+ "ouezas",
17118
+ "ouezi",
17119
+ "ouezimp",
17120
+ "ouezin",
17121
+ "ouezint",
17122
+ "ouezis",
17123
+ "ouezo",
17124
+ "ouezoc'h",
17125
+ "ouezor",
17126
+ "ouf",
17127
+ "oufe",
17128
+ "oufec'h",
17129
+ "oufed",
17130
+ "oufemp",
17131
+ "oufen",
17132
+ "oufent",
17133
+ "oufes",
17134
+ "ouie",
17135
+ "ouiec'h",
17136
+ "ouied",
17137
+ "ouiemp",
17138
+ "ouien",
17139
+ "ouient",
17140
+ "ouies",
17141
+ "ouije",
17142
+ "ouijec'h",
17143
+ "ouijed",
17144
+ "ouijemp",
17145
+ "ouijen",
17146
+ "ouijent",
17147
+ "ouijes",
17148
+ "out",
17149
+ "outañ",
17150
+ "outi",
17151
+ "outo",
17152
+ "ouzer",
17153
+ "ouzh",
17154
+ "ouzhin",
17155
+ "ouzhit",
17156
+ "ouzhoc'h",
17157
+ "ouzhomp",
17158
+ "ouzhor",
17159
+ "ouzhpenn",
17160
+ "ouzhpennik",
17161
+ "ouzoc'h",
17162
+ "ouzomp",
17163
+ "ouzon",
17164
+ "ouzont",
17165
+ "ouzout",
17166
+ "p'",
17167
+ "p:",
17168
+ "pa",
17169
+ "pad",
17170
+ "padal",
17171
+ "paf",
17172
+ "pan",
17173
+ "panevedeoc'h",
17174
+ "panevedo",
17175
+ "panevedomp",
17176
+ "panevedon",
17177
+ "panevedout",
17178
+ "panevet",
17179
+ "panevetañ",
17180
+ "paneveti",
17181
+ "pas",
17182
+ "paseet",
17183
+ "pe",
17184
+ "peadra",
17185
+ "peder",
17186
+ "pedervet",
17187
+ "pedervetvet",
17188
+ "pefe",
17189
+ "pegeit",
17190
+ "pegement",
17191
+ "pegen",
17192
+ "pegiz",
17193
+ "pegoulz",
17194
+ "pehini",
17195
+ "pelec'h",
17196
+ "pell",
17197
+ "pemod",
17198
+ "pemp",
17199
+ "pempved",
17200
+ "pemzek",
17201
+ "penaos",
17202
+ "penn",
17203
+ "peogwir",
17204
+ "peotramant",
17205
+ "pep",
17206
+ "perak",
17207
+ "perc'hennañ",
17208
+ "pergen",
17209
+ "permetiñ",
17210
+ "peseurt",
17211
+ "pet",
17212
+ "petiaoul",
17213
+ "petoare",
17214
+ "petra",
17215
+ "peur",
17216
+ "peurgetket",
17217
+ "peurheñvel",
17218
+ "peurliesañ",
17219
+ "peurvuiañ",
17220
+ "peus",
17221
+ "peustost",
17222
+ "peuz",
17223
+ "pevar",
17224
+ "pevare",
17225
+ "pevarevet",
17226
+ "pevarzek",
17227
+ "pez",
17228
+ "peze",
17229
+ "pezh",
17230
+ "pff",
17231
+ "pfft",
17232
+ "pfut",
17233
+ "picher",
17234
+ "pif",
17235
+ "pife",
17236
+ "pign",
17237
+ "pije",
17238
+ "pikol",
17239
+ "pitiaoul",
17240
+ "piv",
17241
+ "plaouf",
17242
+ "plok",
17243
+ "plouf",
17244
+ "po",
17245
+ "poa",
17246
+ "poelladus",
17247
+ "pof",
17248
+ "pok",
17249
+ "posupl",
17250
+ "pouah",
17251
+ "pourc'henn",
17252
+ "prest",
17253
+ "prestik",
17254
+ "prim",
17255
+ "prin",
17256
+ "provostapl",
17257
+ "pst",
17258
+ "pu",
17259
+ "pur",
17260
+ "r:",
17261
+ "ra",
17262
+ "rae",
17263
+ "raec'h",
17264
+ "raed",
17265
+ "raemp",
17266
+ "raen",
17267
+ "raent",
17268
+ "raes",
17269
+ "rafe",
17270
+ "rafec'h",
17271
+ "rafed",
17272
+ "rafemp",
17273
+ "rafen",
17274
+ "rafent",
17275
+ "rafes",
17276
+ "rag",
17277
+ "raimp",
17278
+ "raint",
17279
+ "raio",
17280
+ "raje",
17281
+ "rajec'h",
17282
+ "rajed",
17283
+ "rajemp",
17284
+ "rajen",
17285
+ "rajent",
17286
+ "rajes",
17287
+ "rak",
17288
+ "ral",
17289
+ "ran",
17290
+ "rankout",
17291
+ "raok",
17292
+ "razh",
17293
+ "re",
17294
+ "reas",
17295
+ "reer",
17296
+ "regennoù",
17297
+ "reiñ",
17298
+ "rejoc'h",
17299
+ "rejod",
17300
+ "rejomp",
17301
+ "rejont",
17302
+ "rejout",
17303
+ "rener",
17304
+ "rentañ",
17305
+ "reoc'h",
17306
+ "reomp",
17307
+ "reont",
17308
+ "reor",
17309
+ "reot",
17310
+ "resis",
17311
+ "ret",
17312
+ "reve",
17313
+ "rez",
17314
+ "ri",
17315
+ "rik",
17316
+ "rin",
17317
+ "ris",
17318
+ "rit",
17319
+ "rouez",
17320
+ "s:",
17321
+ "sac'h",
17322
+ "sant",
17323
+ "sav",
17324
+ "sañset",
16333
17325
  "se",
16334
- "seja",
16335
- "sem",
16336
- "sendo",
16337
- "seu",
16338
- "seus",
16339
- "sob",
16340
- "sobre",
16341
- "sua",
16342
- "suas",
17326
+ "sed",
17327
+ "seitek",
17328
+ "seizh",
17329
+ "seizhvet",
17330
+ "sell",
17331
+ "sellit",
17332
+ "ser",
17333
+ "setu",
17334
+ "seul",
17335
+ "seurt",
17336
+ "siwazh",
17337
+ "skignañ",
17338
+ "skoaz",
17339
+ "skouer",
17340
+ "sort",
17341
+ "souden",
17342
+ "souvitañ",
17343
+ "soñj",
17344
+ "speriañ",
17345
+ "spririñ",
17346
+ "stad",
17347
+ "stlabezañ",
17348
+ "stop",
17349
+ "stranañ",
17350
+ "strewiñ",
17351
+ "strishaat",
17352
+ "stumm",
17353
+ "sujed",
17354
+ "surtoud",
17355
+ "t:",
17356
+ "ta",
17357
+ "taer",
17358
+ "tailh",
17359
+ "tak",
16343
17360
  "tal",
16344
- "tambem",
16345
- "teu",
17361
+ "talvoudegezh",
17362
+ "tamm",
17363
+ "tanav",
17364
+ "taol",
17365
+ "te",
17366
+ "techet",
17367
+ "teir",
17368
+ "teirvet",
17369
+ "telt",
17370
+ "teltenn",
16346
17371
  "teus",
16347
- "toda",
16348
- "todas",
16349
- "todo",
16350
- "todos",
16351
- "tua",
16352
- "tuas",
16353
- "tudo",
16354
- "um",
16355
- "uma",
16356
- "umas",
16357
- "uns"
17372
+ "teut",
17373
+ "teuteu",
17374
+ "ti",
17375
+ "tik",
17376
+ "toa",
17377
+ "tok",
17378
+ "tost",
17379
+ "tostig",
17380
+ "toud",
17381
+ "touesk",
17382
+ "touez",
17383
+ "toull",
17384
+ "tra",
17385
+ "trantenn",
17386
+ "traoñ",
17387
+ "trawalc'h",
17388
+ "tre",
17389
+ "trede",
17390
+ "tregont",
17391
+ "tremenet",
17392
+ "tri",
17393
+ "trivet",
17394
+ "triwec'h",
17395
+ "trizek",
17396
+ "tro",
17397
+ "trugarez",
17398
+ "trumm",
17399
+ "tsoin",
17400
+ "tsouin",
17401
+ "tu",
17402
+ "tud",
17403
+ "u:",
17404
+ "ugent",
17405
+ "uhel",
17406
+ "uhelañ",
17407
+ "ul",
17408
+ "un",
17409
+ "unan",
17410
+ "unanez",
17411
+ "unanig",
17412
+ "unnek",
17413
+ "unnekvet",
17414
+ "ur",
17415
+ "urzh",
17416
+ "us",
17417
+ "v:",
17418
+ "va",
17419
+ "vale",
17420
+ "van",
17421
+ "vare",
17422
+ "vat",
17423
+ "vefe",
17424
+ "vefec'h",
17425
+ "vefed",
17426
+ "vefemp",
17427
+ "vefen",
17428
+ "vefent",
17429
+ "vefes",
17430
+ "vesk",
17431
+ "vete",
17432
+ "vez",
17433
+ "vezan",
17434
+ "vezañ",
17435
+ "veze",
17436
+ "vezec'h",
17437
+ "vezed",
17438
+ "vezemp",
17439
+ "vezen",
17440
+ "vezent",
17441
+ "vezer",
17442
+ "vezes",
17443
+ "vezez",
17444
+ "vezit",
17445
+ "vezomp",
17446
+ "vezont",
17447
+ "vi",
17448
+ "vihan",
17449
+ "vihanañ",
17450
+ "vije",
17451
+ "vijec'h",
17452
+ "vijed",
17453
+ "vijemp",
17454
+ "vijen",
17455
+ "vijent",
17456
+ "vijes",
17457
+ "viken",
17458
+ "vimp",
17459
+ "vin",
17460
+ "vint",
17461
+ "vior",
17462
+ "viot",
17463
+ "virviken",
17464
+ "viskoazh",
17465
+ "vlan",
17466
+ "vlaou",
17467
+ "vo",
17468
+ "vod",
17469
+ "voe",
17470
+ "voec'h",
17471
+ "voed",
17472
+ "voemp",
17473
+ "voen",
17474
+ "voent",
17475
+ "voes",
17476
+ "vont",
17477
+ "vostapl",
17478
+ "vrac'h",
17479
+ "vrasañ",
17480
+ "vremañ",
17481
+ "w:",
17482
+ "walc'h",
17483
+ "war",
17484
+ "warnañ",
17485
+ "warni",
17486
+ "warno",
17487
+ "warnoc'h",
17488
+ "warnomp",
17489
+ "warnon",
17490
+ "warnor",
17491
+ "warnout",
17492
+ "wazh",
17493
+ "wech",
17494
+ "wechoù",
17495
+ "well",
17496
+ "y:",
17497
+ "you",
17498
+ "youadenn",
17499
+ "youc'hadenn",
17500
+ "youc'hou",
17501
+ "z:",
17502
+ "za",
17503
+ "zan",
17504
+ "zaw",
17505
+ "zeu",
17506
+ "zi",
17507
+ "ziar",
17508
+ "zigarez",
17509
+ "ziget",
17510
+ "zindan",
17511
+ "zioc'h",
17512
+ "ziouzh",
17513
+ "zirak",
17514
+ "zivout",
17515
+ "ziwar",
17516
+ "ziwezhañ",
17517
+ "zo",
17518
+ "zoken",
17519
+ "zokenoc'h",
17520
+ "zouesk",
17521
+ "zouez",
17522
+ "zro",
17523
+ "zu"
16358
17524
  ];
16359
17525
  const bul = [
16360
17526
  "а",
@@ -28010,22 +29176,32 @@ flowchart TD
28010
29176
  "şöyle"
28011
29177
  ];
28012
29178
  const ukr = [
29179
+ "а",
29180
+ "або",
28013
29181
  "авжеж",
28014
29182
  "адже",
29183
+ "аж",
28015
29184
  "але",
29185
+ "ані",
28016
29186
  "б",
28017
29187
  "без",
29188
+ "би",
29189
+ "бо",
28018
29190
  "був",
28019
29191
  "була",
28020
29192
  "були",
28021
29193
  "було",
28022
29194
  "бути",
28023
29195
  "більш",
29196
+ "в",
28024
29197
  "вам",
29198
+ "вами",
28025
29199
  "вас",
28026
29200
  "весь",
29201
+ "вже",
28027
29202
  "вздовж",
28028
29203
  "ви",
29204
+ "від",
28029
29205
  "вниз",
28030
29206
  "внизу",
28031
29207
  "вона",
@@ -28034,55 +29210,138 @@ flowchart TD
28034
29210
  "все",
28035
29211
  "всередині",
28036
29212
  "всіх",
29213
+ "вся",
28037
29214
  "від",
28038
29215
  "він",
28039
29216
  "да",
28040
29217
  "давай",
28041
29218
  "давати",
28042
29219
  "де",
29220
+ "десь",
28043
29221
  "дещо",
28044
29222
  "для",
28045
29223
  "до",
29224
+ "є",
29225
+ "ж",
29226
+ "же",
28046
29227
  "з",
29228
+ "за",
28047
29229
  "завжди",
28048
29230
  "замість",
29231
+ "зі",
29232
+ "і",
29233
+ "із",
29234
+ "інших",
29235
+ "її",
29236
+ "їй",
29237
+ "їм",
29238
+ "їх",
28049
29239
  "й",
29240
+ "його",
29241
+ "йому",
28050
29242
  "коли",
28051
29243
  "ледве",
29244
+ "лиш",
28052
29245
  "майже",
29246
+ "мене",
29247
+ "мені",
28053
29248
  "ми",
29249
+ "між",
29250
+ "мій",
29251
+ "мною",
29252
+ "мов",
29253
+ "мого",
29254
+ "моєї",
29255
+ "моє",
29256
+ "може",
29257
+ "мої",
29258
+ "моїх",
29259
+ "моя",
29260
+ "на",
29261
+ "над",
28054
29262
  "навколо",
28055
29263
  "навіть",
28056
29264
  "нам",
29265
+ "нами",
29266
+ "нас",
29267
+ "наче",
29268
+ "наш",
29269
+ "не",
29270
+ "нє",
29271
+ "неї",
29272
+ "нема",
29273
+ "немов",
29274
+ "неначе",
29275
+ "нею",
29276
+ "ним",
29277
+ "ними",
29278
+ "них",
29279
+ "ні",
29280
+ "ніби",
29281
+ "ніщо",
29282
+ "нього",
29283
+ "о",
29284
+ "ось",
28057
29285
  "от",
28058
29286
  "отже",
28059
29287
  "отож",
29288
+ "під",
29289
+ "по",
28060
29290
  "поза",
28061
29291
  "про",
28062
29292
  "під",
29293
+ "сам",
29294
+ "сама",
29295
+ "свій",
29296
+ "свої",
29297
+ "своя",
29298
+ "свою",
29299
+ "себе",
29300
+ "собі",
28063
29301
  "та",
29302
+ "там",
28064
29303
  "так",
29304
+ "така",
28065
29305
  "такий",
28066
29306
  "також",
29307
+ "твій",
29308
+ "твого",
29309
+ "твоєї",
29310
+ "твої",
29311
+ "твоя",
28067
29312
  "те",
29313
+ "тебе",
28068
29314
  "ти",
29315
+ "ті",
29316
+ "тільки",
29317
+ "то",
29318
+ "тобі",
29319
+ "тобою",
28069
29320
  "тобто",
29321
+ "тоді",
28070
29322
  "тож",
29323
+ "той",
28071
29324
  "тощо",
29325
+ "тут",
29326
+ "у",
29327
+ "хіба",
29328
+ "хоч",
28072
29329
  "хоча",
28073
29330
  "це",
28074
29331
  "цей",
29332
+ "ці",
29333
+ "ця",
28075
29334
  "чи",
28076
29335
  "чого",
29336
+ "ще",
28077
29337
  "що",
29338
+ "щоб",
29339
+ "щось",
29340
+ "я",
28078
29341
  "як",
29342
+ "яка",
28079
29343
  "який",
28080
- "якої",
28081
- "є",
28082
- "із",
28083
- "інших",
28084
- "їх",
28085
- "її"
29344
+ "якої"
28086
29345
  ];
28087
29346
  const urd = [
28088
29347
  "آئی",
@@ -29080,7 +30339,14 @@ flowchart TD
29080
30339
  const AUTH_TOKEN_KEY = "tinacms-auth";
29081
30340
  const authenticate = (clientId, frontendUrl) => {
29082
30341
  return new Promise((resolve) => {
29083
- let authTab;
30342
+ const origin = `${window.location.protocol}//${window.location.host}`;
30343
+ const authTab = popupWindow(
30344
+ `${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
30345
+ "_blank",
30346
+ window,
30347
+ 1e3,
30348
+ 700
30349
+ );
29084
30350
  window.addEventListener("message", function(e) {
29085
30351
  if (e.data.source === TINA_LOGIN_EVENT) {
29086
30352
  if (authTab) {
@@ -29093,14 +30359,6 @@ flowchart TD
29093
30359
  });
29094
30360
  }
29095
30361
  });
29096
- const origin = `${window.location.protocol}//${window.location.host}`;
29097
- authTab = popupWindow(
29098
- `${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
29099
- "_blank",
29100
- window,
29101
- 1e3,
29102
- 700
29103
- );
29104
30362
  });
29105
30363
  };
29106
30364
  const DefaultSessionProvider = ({
@@ -29806,56 +31064,6 @@ mutation addPendingDocumentMutation(
29806
31064
  !submitting && name
29807
31065
  );
29808
31066
  };
29809
- const TINA_AUTH_CONFIG = "tina_auth_config";
29810
- const useTinaAuthRedirect = () => {
29811
- React.useEffect(() => {
29812
- const urlParams = new URLSearchParams(window.location.search);
29813
- const config = {
29814
- code: urlParams.get("code") || "",
29815
- scope: urlParams.get("scope") || "email",
29816
- state: urlParams.get("state")
29817
- };
29818
- if (!config.code) {
29819
- return;
29820
- }
29821
- localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
29822
- }, []);
29823
- };
29824
- const createClient = ({
29825
- clientId,
29826
- isLocalClient = true,
29827
- branch,
29828
- tinaioConfig,
29829
- schema,
29830
- apiUrl,
29831
- tinaGraphQLVersion
29832
- }) => {
29833
- return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
29834
- clientId: clientId || "",
29835
- branch: branch || "main",
29836
- tokenStorage: "LOCAL_STORAGE",
29837
- tinaioConfig,
29838
- schema,
29839
- tinaGraphQLVersion
29840
- });
29841
- };
29842
- function assertShape(value, yupSchema, errorMessage) {
29843
- const shape = yupSchema(yup__namespace);
29844
- try {
29845
- shape.validateSync(value);
29846
- } catch (e) {
29847
- const message = errorMessage || `Failed to assertShape - ${e.message}`;
29848
- throw new Error(message);
29849
- }
29850
- }
29851
- function safeAssertShape(value, yupSchema) {
29852
- try {
29853
- assertShape(value, yupSchema);
29854
- return true;
29855
- } catch (e) {
29856
- return false;
29857
- }
29858
- }
29859
31067
  class TinaAdminApi {
29860
31068
  constructor(cms) {
29861
31069
  var _a, _b, _c, _d;
@@ -30202,6 +31410,56 @@ mutation addPendingDocumentMutation(
30202
31410
  );
30203
31411
  }
30204
31412
  }
31413
+ const createClient = ({
31414
+ clientId,
31415
+ isLocalClient = true,
31416
+ branch,
31417
+ tinaioConfig,
31418
+ schema,
31419
+ apiUrl,
31420
+ tinaGraphQLVersion
31421
+ }) => {
31422
+ return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
31423
+ clientId: clientId || "",
31424
+ branch: branch || "main",
31425
+ tokenStorage: "LOCAL_STORAGE",
31426
+ tinaioConfig,
31427
+ schema,
31428
+ tinaGraphQLVersion
31429
+ });
31430
+ };
31431
+ function assertShape(value, yupSchema, errorMessage) {
31432
+ const shape = yupSchema(yup__namespace);
31433
+ try {
31434
+ shape.validateSync(value);
31435
+ } catch (e) {
31436
+ const message = errorMessage || `Failed to assertShape - ${e.message}`;
31437
+ throw new Error(message);
31438
+ }
31439
+ }
31440
+ function safeAssertShape(value, yupSchema) {
31441
+ try {
31442
+ assertShape(value, yupSchema);
31443
+ return true;
31444
+ } catch (e) {
31445
+ return false;
31446
+ }
31447
+ }
31448
+ const TINA_AUTH_CONFIG = "tina_auth_config";
31449
+ const useTinaAuthRedirect = () => {
31450
+ React.useEffect(() => {
31451
+ const urlParams = new URLSearchParams(window.location.search);
31452
+ const config = {
31453
+ code: urlParams.get("code") || "",
31454
+ scope: urlParams.get("scope") || "email",
31455
+ state: urlParams.get("state")
31456
+ };
31457
+ if (!config.code) {
31458
+ return;
31459
+ }
31460
+ localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
31461
+ }, []);
31462
+ };
30205
31463
  function sleep(ms) {
30206
31464
  return new Promise((resolve) => setTimeout(resolve, ms));
30207
31465
  }
@@ -30538,6 +31796,9 @@ mutation addPendingDocumentMutation(
30538
31796
  cms.flags.set("branch-switcher", true);
30539
31797
  client.usingEditorialWorkflow = true;
30540
31798
  client.protectedBranches = project.protectedBranches;
31799
+ if (!project.metadata[currentBranch]) {
31800
+ setCurrentBranch(project.defaultBranch || "main");
31801
+ }
30541
31802
  }
30542
31803
  });
30543
31804
  };
@@ -30550,7 +31811,7 @@ mutation addPendingDocumentMutation(
30550
31811
  }
30551
31812
  });
30552
31813
  return unsubscribe;
30553
- }, [isTinaCloud, cms]);
31814
+ }, [currentBranch, isTinaCloud, cms]);
30554
31815
  return /* @__PURE__ */ React.createElement(SessionProvider, { basePath: "/api/tina/auth" }, /* @__PURE__ */ React.createElement(
30555
31816
  BranchDataProvider,
30556
31817
  {
@@ -31403,6 +32664,35 @@ This will work when developing locally but NOT when deployed to production.
31403
32664
  }) => {
31404
32665
  return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center items-center h-screen bg-gray-100" }, /* @__PURE__ */ React.createElement("div", { className: "text-red-500 text-4xl mb-6 flex items-center" }, /* @__PURE__ */ React.createElement(BiError, { className: "w-12 h-auto fill-current text-red-400 opacity-70 mr-1" }), " ", title), /* @__PURE__ */ React.createElement("p", { className: "text-gray-700 text-xl mb-8" }, errorMessage), /* @__PURE__ */ React.createElement(Button$1, { variant: "danger", onClick: () => window.location.reload() }, /* @__PURE__ */ React.createElement(BiSync, { className: "w-7 h-auto fill-current opacity-70 mr-1" }), " Reload"));
31405
32666
  };
32667
+ const isValidSortKey = (sortKey, collection) => {
32668
+ if (collection.fields) {
32669
+ const sortKeys = collection.fields.map((x) => x.name);
32670
+ return sortKeys.includes(sortKey);
32671
+ } else if (collection.templates) {
32672
+ const collectionMap = {};
32673
+ const conflictedFields = /* @__PURE__ */ new Set();
32674
+ for (const template of collection.templates) {
32675
+ for (const field of template.fields) {
32676
+ if (collectionMap[field.name]) {
32677
+ if (collectionMap[field.name].type !== field.type) {
32678
+ conflictedFields.add(field.name);
32679
+ }
32680
+ } else {
32681
+ collectionMap[field.name] = field;
32682
+ }
32683
+ }
32684
+ }
32685
+ for (const key in conflictedFields) {
32686
+ delete collectionMap[key];
32687
+ }
32688
+ for (const key in collectionMap) {
32689
+ if (key === sortKey) {
32690
+ return true;
32691
+ }
32692
+ }
32693
+ return false;
32694
+ }
32695
+ };
31406
32696
  const useGetCollection = (cms, collectionName, includeDocuments = true, folder, after = "", sortKey, filterArgs) => {
31407
32697
  const api = new TinaAdminApi(cms);
31408
32698
  const schema = cms.api.tina.schema;
@@ -31414,10 +32704,9 @@ This will work when developing locally but NOT when deployed to production.
31414
32704
  React.useEffect(() => {
31415
32705
  let cancelled = false;
31416
32706
  const fetchCollection = async () => {
31417
- var _a;
31418
32707
  if (await api.isAuthenticated() && !folder.loading && !cancelled) {
31419
32708
  const { name, order } = JSON.parse(sortKey || "{}");
31420
- const validSortKey = ((_a = collectionExtra.fields) == null ? void 0 : _a.map((x) => x.name).includes(name)) ? name : void 0;
32709
+ const validSortKey = isValidSortKey(name, collectionExtra) ? name : void 0;
31421
32710
  try {
31422
32711
  const collection2 = await api.fetchCollection(
31423
32712
  collectionName,
@@ -31713,6 +33002,7 @@ This will work when developing locally but NOT when deployed to production.
31713
33002
  const [vars, setVars] = React.useState({
31714
33003
  collection: collectionName,
31715
33004
  relativePath: "",
33005
+ relativePathWithoutExtension: "",
31716
33006
  newRelativePath: "",
31717
33007
  filterField: "",
31718
33008
  folderName: "",
@@ -31754,6 +33044,7 @@ This will work when developing locally but NOT when deployed to production.
31754
33044
  ...old,
31755
33045
  collection: collectionName,
31756
33046
  relativePath: "",
33047
+ relativePathWithoutExtension: "",
31757
33048
  newRelativePath: "",
31758
33049
  filterField: "",
31759
33050
  startsWith: "",
@@ -31779,6 +33070,7 @@ This will work when developing locally but NOT when deployed to production.
31779
33070
  collectionName === vars.collection ? vars : {
31780
33071
  collection: collectionName,
31781
33072
  relativePath: "",
33073
+ relativePathWithoutExtension: "",
31782
33074
  newRelativePath: "",
31783
33075
  filterField: "",
31784
33076
  startsWith: "",
@@ -31866,7 +33158,9 @@ This will work when developing locally but NOT when deployed to production.
31866
33158
  safeSubmit: async () => {
31867
33159
  try {
31868
33160
  await admin.deleteDocument(vars);
31869
- cms.alerts.info("Document was successfully deleted");
33161
+ cms.alerts.info(
33162
+ "Document was successfully deleted"
33163
+ );
31870
33164
  reFetchCollection();
31871
33165
  } catch (error) {
31872
33166
  cms.alerts.warn(
@@ -31880,7 +33174,7 @@ This will work when developing locally but NOT when deployed to production.
31880
33174
  ), renameModalOpen && /* @__PURE__ */ React.createElement(
31881
33175
  RenameModal,
31882
33176
  {
31883
- filename: vars.relativePath,
33177
+ filename: vars.relativePathWithoutExtension,
31884
33178
  newRelativePath: vars.newRelativePath,
31885
33179
  setNewRelativePath: (newRelativePath) => {
31886
33180
  setVars((vars2) => {
@@ -31895,7 +33189,9 @@ This will work when developing locally but NOT when deployed to production.
31895
33189
  relativePath: vars.relativePath,
31896
33190
  newRelativePath
31897
33191
  });
31898
- cms.alerts.info("Document was successfully renamed");
33192
+ cms.alerts.info(
33193
+ "Document was successfully renamed"
33194
+ );
31899
33195
  reFetchCollection();
31900
33196
  } catch (error) {
31901
33197
  if (error.message.indexOf("has references")) {
@@ -31995,7 +33291,9 @@ This will work when developing locally but NOT when deployed to production.
31995
33291
  name: "sort",
31996
33292
  value: sortKey,
31997
33293
  onChange: (e) => {
31998
- const val = JSON.parse(e.target.value);
33294
+ const val = JSON.parse(
33295
+ e.target.value
33296
+ );
31999
33297
  setEndCursor("");
32000
33298
  setPrevCursors([]);
32001
33299
  window == null ? void 0 : window.localStorage.setItem(
@@ -32201,6 +33499,9 @@ This will work when developing locally but NOT when deployed to production.
32201
33499
  setVars((old) => ({
32202
33500
  ...old,
32203
33501
  collection: collectionName,
33502
+ relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
33503
+ "/"
33504
+ ),
32204
33505
  relativePath: document2.node._sys.breadcrumbs.join(
32205
33506
  "/"
32206
33507
  ) + document2.node._sys.extension,
@@ -32223,6 +33524,9 @@ This will work when developing locally but NOT when deployed to production.
32223
33524
  setVars((old) => ({
32224
33525
  ...old,
32225
33526
  collection: collectionName,
33527
+ relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
33528
+ "/"
33529
+ ),
32226
33530
  relativePath: document2.node._sys.breadcrumbs.join(
32227
33531
  "/"
32228
33532
  ) + document2.node._sys.extension,
@@ -32435,7 +33739,7 @@ This will work when developing locally but NOT when deployed to production.
32435
33739
  newRelativePath,
32436
33740
  setNewRelativePath
32437
33741
  }) => {
32438
- return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React.createElement("strong", null, filename), "? TinaCMS uses the filename as the ID; renaming this file could result in unresolved references."), /* @__PURE__ */ React.createElement(
33742
+ return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React.createElement("strong", null, filename), "?"), /* @__PURE__ */ React.createElement(
32439
33743
  BaseTextField,
32440
33744
  {
32441
33745
  placeholder: "Enter a new name for the document's file",
@@ -32450,7 +33754,8 @@ This will work when developing locally but NOT when deployed to production.
32450
33754
  onClick: async () => {
32451
33755
  await renameFunc();
32452
33756
  close2();
32453
- }
33757
+ },
33758
+ disabled: !newRelativePath || newRelativePath === filename
32454
33759
  },
32455
33760
  "Rename"
32456
33761
  ))));
@@ -32777,7 +34082,10 @@ This will work when developing locally but NOT when deployed to production.
32777
34082
  const fetchDocument = async () => {
32778
34083
  if (api.isAuthenticated()) {
32779
34084
  try {
32780
- const response = await api.fetchDocument(collectionName, relativePath2);
34085
+ const response = await api.fetchDocument(
34086
+ collectionName,
34087
+ relativePath2
34088
+ );
32781
34089
  setDocument(response.document);
32782
34090
  } catch (error2) {
32783
34091
  cms.alerts.error(
@@ -33121,15 +34429,24 @@ This will work when developing locally but NOT when deployed to production.
33121
34429
  }
33122
34430
  }
33123
34431
  if (state === "creatingPR") {
33124
- const foo = await tinaApi.createPullRequest({
33125
- baseBranch,
33126
- branch,
33127
- title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
33128
- });
33129
- console.log("PR created", foo);
33130
- cms.alerts.success("Pull request created.");
33131
- localStorage.setItem("tina.createBranchState", "done");
33132
- setState("done");
34432
+ try {
34433
+ const foo = await tinaApi.createPullRequest({
34434
+ baseBranch,
34435
+ branch,
34436
+ title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
34437
+ });
34438
+ console.log("PR created", foo);
34439
+ cms.alerts.success("Pull request created.");
34440
+ localStorage.setItem("tina.createBranchState", "done");
34441
+ setState("done");
34442
+ } catch (e) {
34443
+ console.error(e);
34444
+ cms.alerts.error("Failed to create PR");
34445
+ setErrorMessage(
34446
+ "Failed to create PR, please try again. If the problem persists please contact support."
34447
+ );
34448
+ setState("error");
34449
+ }
33133
34450
  }
33134
34451
  if (state === "done") {
33135
34452
  window.location.href = back;