tinacms 0.0.0-a4a2eeb-20250102014725 → 0.0.0-a577386-20250401050543
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api.d.ts +1 -0
- package/dist/admin/components/GetCollection.d.ts +2 -2
- package/dist/auth/TinaCloudProvider.d.ts +1 -1
- package/dist/client.d.ts +1 -4
- package/dist/client.js +71 -41
- package/dist/client.mjs +48 -30
- package/dist/hooks/create-page-plugin.d.ts +1 -1
- package/dist/index.d.ts +1 -61
- package/dist/index.js +1970 -617
- package/dist/index.mjs +1976 -623
- package/dist/{node-cache-4c336858.mjs → node-cache-5e8db9f0.mjs} +23 -10
- package/dist/react.d.ts +1 -33
- package/dist/react.js +13 -1
- package/dist/react.mjs +13 -1
- package/dist/rich-text/index.d.ts +1 -142
- package/dist/rich-text/prism.d.ts +1 -10
- package/dist/toolkit/fields/components/reference/reference-select.d.ts +2 -2
- package/dist/toolkit/fields/plugins/mdx-field-plugin/index.d.ts +4 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/indent-list-toolbar-button.d.ts +17 -5
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/components/plate-ui/mark-toolbar-button.d.ts +4 -18
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/index.d.ts +1 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/plugins/ui/components.d.ts +6 -11
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-overrides.d.ts +5 -1
- package/dist/toolkit/fields/plugins/mdx-field-plugin/plate/toolbar/toolbar-provider.d.ts +2 -2
- package/dist/toolkit/react-sidebar/components/sidebar-body.d.ts +5 -4
- package/dist/toolkit/react-sidebar/components/sidebar-loading-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/components/sidebar-no-forms-placeholder.d.ts +2 -0
- package/dist/toolkit/react-sidebar/sidebar.d.ts +2 -2
- package/dist/toolkit/tina-state.d.ts +4 -0
- package/dist/unifiedClient/index.d.ts +8 -1
- package/package.json +35 -34
- package/dist/toolkit/react-sidebar/components/no-forms-placeholder.d.ts +0 -8
package/dist/index.mjs
CHANGED
|
@@ -9,18 +9,18 @@ import * as React from "react";
|
|
|
9
9
|
import React__default, { useState, useCallback, useEffect, useRef, createContext, forwardRef, useContext, useMemo, startTransition } from "react";
|
|
10
10
|
import { createPortal } from "react-dom";
|
|
11
11
|
import { withRef, cn as cn$1, withVariants, withProps, withCn, createPrimitiveElement } from "@udecode/cn";
|
|
12
|
-
import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin,
|
|
13
|
-
import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, useMarkToolbarButtonState, useMarkToolbarButton,
|
|
12
|
+
import { toggleList, ELEMENT_UL, ELEMENT_OL, ELEMENT_H1 as ELEMENT_H1$1, ELEMENT_H2 as ELEMENT_H2$1, ELEMENT_H3 as ELEMENT_H3$1, ELEMENT_H4, ELEMENT_H5, ELEMENT_H6, ELEMENT_PARAGRAPH, ELEMENT_BLOCKQUOTE, ELEMENT_CODE_BLOCK, ELEMENT_CODE_LINE, ELEMENT_CODE_SYNTAX, ELEMENT_LI, ELEMENT_LINK, MARK_CODE, MARK_UNDERLINE, MARK_STRIKETHROUGH, MARK_ITALIC, MARK_BOLD, ELEMENT_HR, ELEMENT_TABLE, ELEMENT_TR, ELEMENT_TD, ELEMENT_TH, unwrapList, ELEMENT_TODO_LI, createTrailingBlockPlugin, createAutoformatPlugin, createExitBreakPlugin, KEYS_HEADING, createResetNodePlugin, createBasicMarksPlugin, createHeadingPlugin, createParagraphPlugin, createBlockquotePlugin, createUnderlinePlugin, createListPlugin, createIndentListPlugin, createHorizontalRulePlugin, createNodeIdPlugin, createTablePlugin, getListItemEntry, useListToolbarButtonState, useListToolbarButton } from "@udecode/plate";
|
|
13
|
+
import { PlateElement, isCollapsed, findNodePath, getPointAfter, insertNodes, ELEMENT_DEFAULT, focusEditor, getPointBefore, setNodes, isElement, PlateLeaf, createPluginFactory, useComposedRef, useEditorRef, createPointRef, insertText, moveSelection, toggleNodeType, useElement, useRemoveNodeButton, useEditorSelector, isSelectionExpanded, withHOC, normalizeEditor, getBlockAbove, queryNode, getParentNode, isType, someNode, isSelectionAtBlockStart, setElements, insertNode, getPluginType, isBlock, isBlockAboveEmpty, findNode, PlateContent, getNodeEntries, useEditorState, collapseSelection, insertEmptyElement, useMarkToolbarButtonState, useMarkToolbarButton, usePlateSelectors, useEventEditorSelectors, PortalBody, useFormInputProps, createPlugins, Plate } from "@udecode/plate-common";
|
|
14
14
|
import { ELEMENT_SLASH_INPUT, createSlashPlugin } from "@udecode/plate-slash-command";
|
|
15
15
|
import { useSelected, useReadOnly, ReactEditor } from "slate-react";
|
|
16
16
|
import { useCodeBlockElementState, useCodeSyntaxLeaf, ELEMENT_CODE_BLOCK as ELEMENT_CODE_BLOCK$1 } from "@udecode/plate-code-block";
|
|
17
17
|
import MonacoEditor, { loader, useMonaco } from "@monaco-editor/react";
|
|
18
|
-
import { Combobox, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
|
|
18
|
+
import { Combobox as Combobox$1, ComboboxInput, ComboboxButton, Transition, ComboboxOptions, ComboboxOption, Popover as Popover$3, PopoverButton, PopoverPanel, TransitionChild, Disclosure, DisclosureButton, DisclosurePanel, Menu, MenuButton, MenuItems, MenuItem } from "@headlessui/react";
|
|
19
19
|
import { cva } from "class-variance-authority";
|
|
20
20
|
import { Eye, SquarePen, Plus, AlignCenter as AlignCenter$1, AlignJustify, AlignLeft as AlignLeft$1, AlignRight as AlignRight$1, ChevronDown, PaintBucket, Quote, Check, ChevronRight, ChevronsUpDown, X, FileCode, Baseline, RectangleVertical, Combine, Ungroup, MessageSquare, MessageSquarePlus, Trash, GripVertical, Edit2, Smile, ExternalLink, Heading1, Heading2, Heading3, Heading4, Heading5, Heading6, Indent, Keyboard, WrapText, Minus, MoreHorizontal, Outdent, Pilcrow, RotateCcw, RectangleHorizontal, Search, Settings, Strikethrough, Subscript, Superscript, Table, Text, Underline, Link2Off, Moon, SunMedium, Twitter } from "lucide-react";
|
|
21
21
|
import mermaid from "mermaid";
|
|
22
22
|
import { ELEMENT_H1, ELEMENT_H2, ELEMENT_H3, ELEMENT_H4 as ELEMENT_H4$1, ELEMENT_H5 as ELEMENT_H5$1, ELEMENT_H6 as ELEMENT_H6$1 } from "@udecode/plate-heading";
|
|
23
|
-
import { useComboboxContext, Combobox as Combobox$
|
|
23
|
+
import { useComboboxContext, Combobox as Combobox$2, useComboboxStore, ComboboxProvider, Portal, ComboboxPopover, ComboboxItem } from "@ariakit/react";
|
|
24
24
|
import { useHTMLInputCursorState, useComboboxInput, filterWords } from "@udecode/plate-combobox";
|
|
25
25
|
import { useTableCellElementState, useTableCellElement, useTableCellElementResizableState, useTableCellElementResizable, useTableBordersDropdownMenuContentState, useTableMergeState, TableProvider, useTableElementState, useTableElement, mergeTableCells, unmergeTableCells, ELEMENT_TABLE as ELEMENT_TABLE$1, getTableColumnCount, insertTable, deleteTable, insertTableColumn, deleteColumn, insertTableRow, deleteRow } from "@udecode/plate-table";
|
|
26
26
|
import { ResizeHandle as ResizeHandle$1 } from "@udecode/plate-resizable";
|
|
@@ -43,6 +43,7 @@ import { twMerge } from "tailwind-merge";
|
|
|
43
43
|
import { Command as Command$1 } from "cmdk";
|
|
44
44
|
import { isHotkey } from "is-hotkey";
|
|
45
45
|
import { Transforms, Element, Range, Path, Node, Editor as Editor$1 } from "slate";
|
|
46
|
+
import { useWindowWidth } from "@react-hook/window-size";
|
|
46
47
|
import get from "lodash.get";
|
|
47
48
|
import moment from "moment";
|
|
48
49
|
import { formatDistanceToNow } from "date-fns";
|
|
@@ -52,13 +53,12 @@ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
|
52
53
|
import { ELEMENT_PARAGRAPH as ELEMENT_PARAGRAPH$1 } from "@udecode/plate-paragraph";
|
|
53
54
|
import { ELEMENT_BLOCKQUOTE as ELEMENT_BLOCKQUOTE$1 } from "@udecode/plate-block-quote";
|
|
54
55
|
import { useFloatingToolbarState, offset, flip, useFloatingToolbar } from "@udecode/plate-floating";
|
|
55
|
-
import { useWindowWidth } from "@react-hook/window-size";
|
|
56
56
|
import { getIntrospectionQuery, buildClientSchema, print, parse as parse$3, buildSchema } from "graphql";
|
|
57
57
|
import gql from "graphql-tag";
|
|
58
58
|
import { TinaSchema, addNamespaceToSchema, parseURL, resolveForm, normalizePath, validateSchema } from "@tinacms/schema-tools";
|
|
59
59
|
import { NAMER, resolveField } from "@tinacms/schema-tools";
|
|
60
|
-
import * as yup from "yup";
|
|
61
60
|
import { diff } from "@graphql-inspector/core";
|
|
61
|
+
import * as yup from "yup";
|
|
62
62
|
import { NavLink, useNavigate, useLocation, useParams, Link, useSearchParams, HashRouter, Routes, Route } from "react-router-dom";
|
|
63
63
|
import { stringifyMDX } from "@tinacms/mdx";
|
|
64
64
|
const ModalProvider = ({ children }) => {
|
|
@@ -992,7 +992,7 @@ const Autocomplete = ({
|
|
|
992
992
|
}
|
|
993
993
|
}, [items2, query]);
|
|
994
994
|
return /* @__PURE__ */ React__default.createElement(
|
|
995
|
-
Combobox,
|
|
995
|
+
Combobox$1,
|
|
996
996
|
{
|
|
997
997
|
value,
|
|
998
998
|
onChange,
|
|
@@ -2173,7 +2173,7 @@ const InlineComboboxInput = forwardRef(({ className, ...props }, propRef) => {
|
|
|
2173
2173
|
},
|
|
2174
2174
|
value || ""
|
|
2175
2175
|
), /* @__PURE__ */ React__default.createElement(
|
|
2176
|
-
Combobox$
|
|
2176
|
+
Combobox$2,
|
|
2177
2177
|
{
|
|
2178
2178
|
autoSelect: true,
|
|
2179
2179
|
className: cn$1(
|
|
@@ -2970,7 +2970,7 @@ const Components = () => {
|
|
|
2970
2970
|
),
|
|
2971
2971
|
[MARK_CODE]: CodeLeaf,
|
|
2972
2972
|
[MARK_UNDERLINE]: withProps(PlateLeaf, { as: "u" }),
|
|
2973
|
-
[MARK_STRIKETHROUGH]:
|
|
2973
|
+
[MARK_STRIKETHROUGH]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("s", { ...props.attributes, ...props }),
|
|
2974
2974
|
[MARK_ITALIC]: withProps(PlateLeaf, { as: "em" }),
|
|
2975
2975
|
[MARK_BOLD]: ({ editor, leaf, text, ...props }) => /* @__PURE__ */ React__default.createElement("strong", { ...props.attributes, ...props }),
|
|
2976
2976
|
[ELEMENT_HR]: ({
|
|
@@ -5224,7 +5224,7 @@ const PopoverContent = React.forwardRef(({ className, align = "center", sideOffs
|
|
|
5224
5224
|
side: "bottom",
|
|
5225
5225
|
className: cn(
|
|
5226
5226
|
"rounded-md border bg-white p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
|
5227
|
-
"max-h-[30vh] max-w-[
|
|
5227
|
+
"max-h-[30vh] max-w-[30vw] overflow-y-auto",
|
|
5228
5228
|
className
|
|
5229
5229
|
),
|
|
5230
5230
|
...props
|
|
@@ -5316,11 +5316,7 @@ const getFilename = (optionSets, value) => {
|
|
|
5316
5316
|
const node = nodes.find((node2) => node2.id === value);
|
|
5317
5317
|
return node ? node._internalSys.filename : null;
|
|
5318
5318
|
};
|
|
5319
|
-
const
|
|
5320
|
-
cms,
|
|
5321
|
-
input,
|
|
5322
|
-
field
|
|
5323
|
-
}) => {
|
|
5319
|
+
const Combobox = ({ cms, input, field }) => {
|
|
5324
5320
|
const [open2, setOpen] = React.useState(false);
|
|
5325
5321
|
const [value, setValue] = React.useState(input.value);
|
|
5326
5322
|
const [displayText, setDisplayText] = React.useState(null);
|
|
@@ -5336,7 +5332,9 @@ const ComboboxDemo = ({
|
|
|
5336
5332
|
}, [value, input, optionSets]);
|
|
5337
5333
|
React.useEffect(() => {
|
|
5338
5334
|
if (field.experimental___filter && optionSets.length > 0) {
|
|
5339
|
-
setFilteredOptionsList(
|
|
5335
|
+
setFilteredOptionsList(
|
|
5336
|
+
field.experimental___filter(optionSets, void 0)
|
|
5337
|
+
);
|
|
5340
5338
|
} else {
|
|
5341
5339
|
setFilteredOptionsList(optionSets);
|
|
5342
5340
|
}
|
|
@@ -5344,17 +5342,17 @@ const ComboboxDemo = ({
|
|
|
5344
5342
|
if (loading === true) {
|
|
5345
5343
|
return /* @__PURE__ */ React.createElement(LoadingDots, { color: "var(--tina-color-primary)" });
|
|
5346
5344
|
}
|
|
5347
|
-
return /* @__PURE__ */ React.createElement(
|
|
5345
|
+
return /* @__PURE__ */ React.createElement(Popover, { open: open2, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(PopoverTrigger, { asChild: true }, /* @__PURE__ */ React.createElement(
|
|
5348
5346
|
Button,
|
|
5349
5347
|
{
|
|
5350
5348
|
variant: "outline",
|
|
5351
5349
|
role: "combobox",
|
|
5352
5350
|
"aria-expanded": open2,
|
|
5353
|
-
className: "w-
|
|
5351
|
+
className: "w-full justify-between"
|
|
5354
5352
|
},
|
|
5355
5353
|
/* @__PURE__ */ React.createElement("p", { className: "truncate" }, displayText ?? "Choose an option..."),
|
|
5356
5354
|
open2 ? /* @__PURE__ */ React.createElement(IoMdArrowDropup, { size: 20 }) : /* @__PURE__ */ React.createElement(IoMdArrowDropdown, { size: 20 })
|
|
5357
|
-
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative" }, /* @__PURE__ */ React.createElement(
|
|
5355
|
+
)), /* @__PURE__ */ React.createElement(PopoverContent, { className: "p-0 relative min-w-[var(--radix-popover-trigger-width)]" }, /* @__PURE__ */ React.createElement(
|
|
5358
5356
|
Command,
|
|
5359
5357
|
{
|
|
5360
5358
|
shouldFilter: !field.experimental___filter,
|
|
@@ -5378,32 +5376,25 @@ const ComboboxDemo = ({
|
|
|
5378
5376
|
}
|
|
5379
5377
|
),
|
|
5380
5378
|
/* @__PURE__ */ React.createElement(CommandEmpty, null, "No reference found"),
|
|
5381
|
-
/* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5392
|
-
|
|
5393
|
-
|
|
5394
|
-
|
|
5395
|
-
field,
|
|
5396
|
-
_values,
|
|
5397
|
-
node,
|
|
5398
|
-
onSelect: (currentValue) => {
|
|
5399
|
-
setValue(currentValue);
|
|
5400
|
-
setOpen(false);
|
|
5401
|
-
}
|
|
5379
|
+
/* @__PURE__ */ React.createElement(CommandList, null, filteredOptionsList.length > 0 && (filteredOptionsList == null ? void 0 : filteredOptionsList.map(({ collection, edges }) => /* @__PURE__ */ React.createElement(CommandGroup, { key: `${collection}-group`, heading: collection }, /* @__PURE__ */ React.createElement(CommandList, null, edges == null ? void 0 : edges.map(({ node }) => {
|
|
5380
|
+
const { id, _values } = node;
|
|
5381
|
+
return /* @__PURE__ */ React.createElement(
|
|
5382
|
+
OptionComponent,
|
|
5383
|
+
{
|
|
5384
|
+
id,
|
|
5385
|
+
key: id,
|
|
5386
|
+
value,
|
|
5387
|
+
field,
|
|
5388
|
+
_values,
|
|
5389
|
+
node,
|
|
5390
|
+
onSelect: (currentValue) => {
|
|
5391
|
+
setValue(currentValue);
|
|
5392
|
+
setOpen(false);
|
|
5402
5393
|
}
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
))))
|
|
5406
|
-
)))
|
|
5394
|
+
}
|
|
5395
|
+
);
|
|
5396
|
+
}))))))
|
|
5397
|
+
)));
|
|
5407
5398
|
};
|
|
5408
5399
|
const useGetNode = (cms, id) => {
|
|
5409
5400
|
const [document2, setDocument] = React.useState(
|
|
@@ -5476,7 +5467,7 @@ const ReferenceLink = ({ cms, input }) => {
|
|
|
5476
5467
|
};
|
|
5477
5468
|
const Reference = ({ input, field }) => {
|
|
5478
5469
|
const cms = useCMS();
|
|
5479
|
-
return /* @__PURE__ */ React.createElement(
|
|
5470
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "relative group" }, /* @__PURE__ */ React.createElement(Combobox, { cms, input, field })), /* @__PURE__ */ React.createElement(ReferenceLink, { cms, input }));
|
|
5480
5471
|
};
|
|
5481
5472
|
const ButtonToggle = ({
|
|
5482
5473
|
input,
|
|
@@ -5713,7 +5704,9 @@ const Item$2 = ({
|
|
|
5713
5704
|
onClick: () => {
|
|
5714
5705
|
const state = tinaForm.finalForm.getState();
|
|
5715
5706
|
if (state.invalid === true) {
|
|
5716
|
-
cms.alerts.error(
|
|
5707
|
+
cms.alerts.error(
|
|
5708
|
+
"Cannot navigate away from an invalid form."
|
|
5709
|
+
);
|
|
5717
5710
|
return;
|
|
5718
5711
|
}
|
|
5719
5712
|
cms.dispatch({
|
|
@@ -6297,7 +6290,9 @@ const BlockListItem = ({
|
|
|
6297
6290
|
onClick: () => {
|
|
6298
6291
|
const state = tinaForm.finalForm.getState();
|
|
6299
6292
|
if (state.invalid === true) {
|
|
6300
|
-
cms.alerts.error(
|
|
6293
|
+
cms.alerts.error(
|
|
6294
|
+
"Cannot navigate away from an invalid form."
|
|
6295
|
+
);
|
|
6301
6296
|
return;
|
|
6302
6297
|
}
|
|
6303
6298
|
cms.dispatch({
|
|
@@ -6779,28 +6774,28 @@ class DaysView extends React__default.Component {
|
|
|
6779
6774
|
}
|
|
6780
6775
|
renderDayHeaders() {
|
|
6781
6776
|
const locale = this.props.viewDate.localeData();
|
|
6782
|
-
|
|
6777
|
+
const dayItems = getDaysOfWeek(locale).map((day, index) => /* @__PURE__ */ React__default.createElement("th", { key: day + index, className: "dow" }, day));
|
|
6783
6778
|
return /* @__PURE__ */ React__default.createElement("tr", null, dayItems);
|
|
6784
6779
|
}
|
|
6785
6780
|
renderDays() {
|
|
6786
6781
|
const date = this.props.viewDate;
|
|
6787
6782
|
const startOfMonth = date.clone().startOf("month");
|
|
6788
6783
|
const endOfMonth = date.clone().endOf("month");
|
|
6789
|
-
|
|
6790
|
-
|
|
6784
|
+
const rows = [[], [], [], [], [], []];
|
|
6785
|
+
const startDate = date.clone().subtract(1, "months");
|
|
6791
6786
|
startDate.date(startDate.daysInMonth()).startOf("week");
|
|
6792
|
-
|
|
6787
|
+
const endDate = startDate.clone().add(42, "d");
|
|
6793
6788
|
let i = 0;
|
|
6794
6789
|
while (startDate.isBefore(endDate)) {
|
|
6795
|
-
|
|
6790
|
+
const row = getRow$2(rows, i++);
|
|
6796
6791
|
row.push(this.renderDay(startDate, startOfMonth, endOfMonth));
|
|
6797
6792
|
startDate.add(1, "d");
|
|
6798
6793
|
}
|
|
6799
6794
|
return rows.map((r, i2) => /* @__PURE__ */ React__default.createElement("tr", { key: `${endDate.month()}_${i2}` }, r));
|
|
6800
6795
|
}
|
|
6801
6796
|
renderDay(date, startOfMonth, endOfMonth) {
|
|
6802
|
-
|
|
6803
|
-
|
|
6797
|
+
const selectedDate = this.props.selectedDate;
|
|
6798
|
+
const dayProps = {
|
|
6804
6799
|
key: date.format("M_D"),
|
|
6805
6800
|
"data-value": date.date(),
|
|
6806
6801
|
"data-month": date.month(),
|
|
@@ -6854,7 +6849,7 @@ function getRow$2(rows, day) {
|
|
|
6854
6849
|
}
|
|
6855
6850
|
function getDaysOfWeek(locale) {
|
|
6856
6851
|
const first = locale.firstDayOfWeek();
|
|
6857
|
-
|
|
6852
|
+
const dow = [];
|
|
6858
6853
|
let i = 0;
|
|
6859
6854
|
locale._weekdaysMin.forEach(function(day) {
|
|
6860
6855
|
dow[(7 + i++ - first) % 7] = day;
|
|
@@ -6872,7 +6867,7 @@ class MonthsView extends React__default.Component {
|
|
|
6872
6867
|
return /* @__PURE__ */ React__default.createElement("div", { className: "rdtMonths" }, /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("thead", null, this.renderNavigation())), /* @__PURE__ */ React__default.createElement("table", null, /* @__PURE__ */ React__default.createElement("tbody", null, this.renderMonths())));
|
|
6873
6868
|
}
|
|
6874
6869
|
renderNavigation() {
|
|
6875
|
-
|
|
6870
|
+
const year = this.props.viewDate.year();
|
|
6876
6871
|
return /* @__PURE__ */ React__default.createElement(
|
|
6877
6872
|
ViewNavigation,
|
|
6878
6873
|
{
|
|
@@ -6885,9 +6880,9 @@ class MonthsView extends React__default.Component {
|
|
|
6885
6880
|
);
|
|
6886
6881
|
}
|
|
6887
6882
|
renderMonths() {
|
|
6888
|
-
|
|
6883
|
+
const rows = [[], [], []];
|
|
6889
6884
|
for (let month = 0; month < 12; month++) {
|
|
6890
|
-
|
|
6885
|
+
const row = getRow$1(rows, month);
|
|
6891
6886
|
row.push(this.renderMonth(month));
|
|
6892
6887
|
}
|
|
6893
6888
|
return rows.map((months, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, months));
|
|
@@ -6904,7 +6899,7 @@ class MonthsView extends React__default.Component {
|
|
|
6904
6899
|
if (selectedDate && selectedDate.year() === this.props.viewDate.year() && selectedDate.month() === month) {
|
|
6905
6900
|
className += " rdtActive";
|
|
6906
6901
|
}
|
|
6907
|
-
|
|
6902
|
+
const props = { key: month, className, "data-value": month, onClick };
|
|
6908
6903
|
if (this.props.renderMonth) {
|
|
6909
6904
|
return this.props.renderMonth(
|
|
6910
6905
|
props,
|
|
@@ -6916,11 +6911,11 @@ class MonthsView extends React__default.Component {
|
|
|
6916
6911
|
return /* @__PURE__ */ React__default.createElement("td", { ...props }, this.getMonthText(month));
|
|
6917
6912
|
}
|
|
6918
6913
|
isDisabledMonth(month) {
|
|
6919
|
-
|
|
6914
|
+
const isValidDate = this.props.isValidDate;
|
|
6920
6915
|
if (!isValidDate) {
|
|
6921
6916
|
return false;
|
|
6922
6917
|
}
|
|
6923
|
-
|
|
6918
|
+
const date = this.props.viewDate.clone().set({ month });
|
|
6924
6919
|
let day = date.endOf("month").date() + 1;
|
|
6925
6920
|
while (day-- > 1) {
|
|
6926
6921
|
if (isValidDate(date.date(day))) {
|
|
@@ -6972,9 +6967,9 @@ class YearsView extends React__default.Component {
|
|
|
6972
6967
|
}
|
|
6973
6968
|
renderYears() {
|
|
6974
6969
|
const viewYear = this.getViewYear();
|
|
6975
|
-
|
|
6970
|
+
const rows = [[], [], []];
|
|
6976
6971
|
for (let year = viewYear - 1; year < viewYear + 11; year++) {
|
|
6977
|
-
|
|
6972
|
+
const row = getRow(rows, year - viewYear);
|
|
6978
6973
|
row.push(this.renderYear(year));
|
|
6979
6974
|
}
|
|
6980
6975
|
return rows.map((years, i) => /* @__PURE__ */ React__default.createElement("tr", { key: i }, years));
|
|
@@ -6991,7 +6986,7 @@ class YearsView extends React__default.Component {
|
|
|
6991
6986
|
if (selectedYear === year) {
|
|
6992
6987
|
className += " rdtActive";
|
|
6993
6988
|
}
|
|
6994
|
-
|
|
6989
|
+
const props = { key: year, className, "data-value": year, onClick };
|
|
6995
6990
|
return this.props.renderYear(
|
|
6996
6991
|
props,
|
|
6997
6992
|
year,
|
|
@@ -7005,15 +7000,15 @@ class YearsView extends React__default.Component {
|
|
|
7005
7000
|
return this.props.selectedDate && this.props.selectedDate.year();
|
|
7006
7001
|
}
|
|
7007
7002
|
isDisabledYear(year) {
|
|
7008
|
-
|
|
7003
|
+
const cache = this.disabledYearsCache;
|
|
7009
7004
|
if (cache[year] !== void 0) {
|
|
7010
7005
|
return cache[year];
|
|
7011
7006
|
}
|
|
7012
|
-
|
|
7007
|
+
const isValidDate = this.props.isValidDate;
|
|
7013
7008
|
if (!isValidDate) {
|
|
7014
7009
|
return false;
|
|
7015
7010
|
}
|
|
7016
|
-
|
|
7011
|
+
const date = this.props.viewDate.clone().set({ year });
|
|
7017
7012
|
let day = date.endOf("year").dayOfYear() + 1;
|
|
7018
7013
|
while (day-- > 1) {
|
|
7019
7014
|
if (isValidDate(date.dayOfYear(day))) {
|
|
@@ -7060,7 +7055,7 @@ const timeConstraints = {
|
|
|
7060
7055
|
}
|
|
7061
7056
|
};
|
|
7062
7057
|
function createConstraints(overrideTimeConstraints) {
|
|
7063
|
-
|
|
7058
|
+
const constraints = {};
|
|
7064
7059
|
Object.keys(timeConstraints).forEach((type) => {
|
|
7065
7060
|
constraints[type] = {
|
|
7066
7061
|
...timeConstraints[type],
|
|
@@ -7076,7 +7071,7 @@ class TimeView extends React__default.Component {
|
|
|
7076
7071
|
this.state = this.getTimeParts(props.selectedDate || props.viewDate);
|
|
7077
7072
|
}
|
|
7078
7073
|
render() {
|
|
7079
|
-
|
|
7074
|
+
const items2 = [];
|
|
7080
7075
|
const timeParts = this.state;
|
|
7081
7076
|
this.getCounters().forEach((c, i) => {
|
|
7082
7077
|
if (i && c !== "ampm") {
|
|
@@ -7138,8 +7133,8 @@ class TimeView extends React__default.Component {
|
|
|
7138
7133
|
}
|
|
7139
7134
|
if (type === "ampm")
|
|
7140
7135
|
return this.toggleDayPart();
|
|
7141
|
-
|
|
7142
|
-
|
|
7136
|
+
const update = {};
|
|
7137
|
+
const body = document.body;
|
|
7143
7138
|
update[type] = this[action](type);
|
|
7144
7139
|
this.setState(update);
|
|
7145
7140
|
this.timer = setTimeout(() => {
|
|
@@ -7182,8 +7177,8 @@ class TimeView extends React__default.Component {
|
|
|
7182
7177
|
return pad(type, value);
|
|
7183
7178
|
}
|
|
7184
7179
|
getCounters() {
|
|
7185
|
-
|
|
7186
|
-
|
|
7180
|
+
const counters = [];
|
|
7181
|
+
const format2 = this.props.timeFormat;
|
|
7187
7182
|
if (format2.toLowerCase().indexOf("h") !== -1) {
|
|
7188
7183
|
counters.push("hours");
|
|
7189
7184
|
if (format2.indexOf("m") !== -1) {
|
|
@@ -7315,7 +7310,7 @@ class Datetime extends React__default.Component {
|
|
|
7315
7310
|
__publicField(this, "_renderCalendar", () => {
|
|
7316
7311
|
const props = this.props;
|
|
7317
7312
|
const state = this.state;
|
|
7318
|
-
|
|
7313
|
+
const viewProps = {
|
|
7319
7314
|
viewDate: state.viewDate.clone(),
|
|
7320
7315
|
selectedDate: this.getSelectedDate(),
|
|
7321
7316
|
isValidDate: props.isValidDate,
|
|
@@ -7358,10 +7353,10 @@ class Datetime extends React__default.Component {
|
|
|
7358
7353
|
__publicField(this, "viewToMethod", { days: "date", months: "month", years: "year" });
|
|
7359
7354
|
__publicField(this, "nextView", { days: "time", months: "days", years: "months" });
|
|
7360
7355
|
__publicField(this, "_updateDate", (e) => {
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7364
|
-
|
|
7356
|
+
const state = this.state;
|
|
7357
|
+
const currentView = state.currentView;
|
|
7358
|
+
const updateOnView = this.getUpdateOn(this.getFormat("date"));
|
|
7359
|
+
const viewDate = this.state.viewDate.clone();
|
|
7365
7360
|
viewDate[this.viewToMethod[currentView]](
|
|
7366
7361
|
parseInt(e.target.getAttribute("data-value"), 10)
|
|
7367
7362
|
);
|
|
@@ -7369,7 +7364,7 @@ class Datetime extends React__default.Component {
|
|
|
7369
7364
|
viewDate.month(parseInt(e.target.getAttribute("data-month"), 10));
|
|
7370
7365
|
viewDate.year(parseInt(e.target.getAttribute("data-year"), 10));
|
|
7371
7366
|
}
|
|
7372
|
-
|
|
7367
|
+
const update = { viewDate };
|
|
7373
7368
|
if (currentView === updateOnView) {
|
|
7374
7369
|
update.selectedDate = viewDate.clone();
|
|
7375
7370
|
update.inputValue = viewDate.format(this.getFormat("datetime"));
|
|
@@ -7383,7 +7378,7 @@ class Datetime extends React__default.Component {
|
|
|
7383
7378
|
this.setState(update);
|
|
7384
7379
|
});
|
|
7385
7380
|
__publicField(this, "_viewNavigate", (modifier, unit) => {
|
|
7386
|
-
|
|
7381
|
+
const viewDate = this.state.viewDate.clone();
|
|
7387
7382
|
viewDate.add(modifier, unit);
|
|
7388
7383
|
if (modifier > 0) {
|
|
7389
7384
|
this.props.onNavigateForward(modifier, unit);
|
|
@@ -7393,7 +7388,7 @@ class Datetime extends React__default.Component {
|
|
|
7393
7388
|
this.setState({ viewDate });
|
|
7394
7389
|
});
|
|
7395
7390
|
__publicField(this, "_setTime", (type, value) => {
|
|
7396
|
-
|
|
7391
|
+
const date = (this.getSelectedDate() || this.state.viewDate).clone();
|
|
7397
7392
|
date[type](value);
|
|
7398
7393
|
if (!this.props.value) {
|
|
7399
7394
|
this.setState({
|
|
@@ -7417,7 +7412,7 @@ class Datetime extends React__default.Component {
|
|
|
7417
7412
|
});
|
|
7418
7413
|
});
|
|
7419
7414
|
__publicField(this, "_handleClickOutside", () => {
|
|
7420
|
-
|
|
7415
|
+
const props = this.props;
|
|
7421
7416
|
if (props.input && this.state.open && props.open === void 0 && props.closeOnClickOutside) {
|
|
7422
7417
|
this._closeCalendar();
|
|
7423
7418
|
}
|
|
@@ -7432,7 +7427,7 @@ class Datetime extends React__default.Component {
|
|
|
7432
7427
|
return;
|
|
7433
7428
|
const value = e.target ? e.target.value : e;
|
|
7434
7429
|
const localMoment = this.localMoment(value, this.getFormat("datetime"));
|
|
7435
|
-
|
|
7430
|
+
const update = { inputValue: value };
|
|
7436
7431
|
if (localMoment.isValid()) {
|
|
7437
7432
|
update.selectedDate = localMoment;
|
|
7438
7433
|
update.viewDate = localMoment.clone().startOf("month");
|
|
@@ -7496,9 +7491,9 @@ class Datetime extends React__default.Component {
|
|
|
7496
7491
|
return this.props.renderView(this.state.currentView, this._renderCalendar);
|
|
7497
7492
|
}
|
|
7498
7493
|
getInitialState() {
|
|
7499
|
-
|
|
7500
|
-
|
|
7501
|
-
|
|
7494
|
+
const props = this.props;
|
|
7495
|
+
const inputFormat = this.getFormat("datetime");
|
|
7496
|
+
const selectedDate = this.parseDate(
|
|
7502
7497
|
props.value || props.initialValue,
|
|
7503
7498
|
inputFormat
|
|
7504
7499
|
);
|
|
@@ -7529,7 +7524,7 @@ class Datetime extends React__default.Component {
|
|
|
7529
7524
|
return this.getInitialDate();
|
|
7530
7525
|
}
|
|
7531
7526
|
getInitialDate() {
|
|
7532
|
-
|
|
7527
|
+
const m = this.localMoment();
|
|
7533
7528
|
m.hour(0).minute(0).second(0).millisecond(0);
|
|
7534
7529
|
return m;
|
|
7535
7530
|
}
|
|
@@ -7549,8 +7544,8 @@ class Datetime extends React__default.Component {
|
|
|
7549
7544
|
}
|
|
7550
7545
|
getClassName() {
|
|
7551
7546
|
let cn2 = "rdt";
|
|
7552
|
-
|
|
7553
|
-
|
|
7547
|
+
const props = this.props;
|
|
7548
|
+
const propCn = props.className;
|
|
7554
7549
|
if (Array.isArray(propCn)) {
|
|
7555
7550
|
cn2 += " " + propCn.join(" ");
|
|
7556
7551
|
} else if (propCn) {
|
|
@@ -7583,14 +7578,14 @@ class Datetime extends React__default.Component {
|
|
|
7583
7578
|
return viewModes.DAYS;
|
|
7584
7579
|
}
|
|
7585
7580
|
getLocaleData() {
|
|
7586
|
-
|
|
7581
|
+
const p = this.props;
|
|
7587
7582
|
return this.localMoment(
|
|
7588
7583
|
p.value || p.defaultValue || /* @__PURE__ */ new Date()
|
|
7589
7584
|
).localeData();
|
|
7590
7585
|
}
|
|
7591
7586
|
getDateFormat() {
|
|
7592
7587
|
const locale = this.getLocaleData();
|
|
7593
|
-
|
|
7588
|
+
const format2 = this.props.dateFormat;
|
|
7594
7589
|
if (format2 === true)
|
|
7595
7590
|
return locale.longDateFormat("L");
|
|
7596
7591
|
if (format2)
|
|
@@ -7599,7 +7594,7 @@ class Datetime extends React__default.Component {
|
|
|
7599
7594
|
}
|
|
7600
7595
|
getTimeFormat() {
|
|
7601
7596
|
const locale = this.getLocaleData();
|
|
7602
|
-
|
|
7597
|
+
const format2 = this.props.timeFormat;
|
|
7603
7598
|
if (format2 === true) {
|
|
7604
7599
|
return locale.longDateFormat("LT");
|
|
7605
7600
|
}
|
|
@@ -7611,12 +7606,12 @@ class Datetime extends React__default.Component {
|
|
|
7611
7606
|
} else if (type === "time") {
|
|
7612
7607
|
return this.getTimeFormat();
|
|
7613
7608
|
}
|
|
7614
|
-
|
|
7615
|
-
|
|
7609
|
+
const dateFormat = this.getDateFormat();
|
|
7610
|
+
const timeFormat = this.getTimeFormat();
|
|
7616
7611
|
return dateFormat && timeFormat ? dateFormat + " " + timeFormat : dateFormat || timeFormat;
|
|
7617
7612
|
}
|
|
7618
7613
|
updateTime(op, amount, type, toSelected) {
|
|
7619
|
-
|
|
7614
|
+
const update = {};
|
|
7620
7615
|
const date = toSelected ? "selectedDate" : "viewDate";
|
|
7621
7616
|
update[date] = this.state[date].clone()[op](amount, type);
|
|
7622
7617
|
this.setState(update);
|
|
@@ -7649,7 +7644,7 @@ class Datetime extends React__default.Component {
|
|
|
7649
7644
|
if (prevProps === this.props)
|
|
7650
7645
|
return;
|
|
7651
7646
|
let needsUpdate = false;
|
|
7652
|
-
|
|
7647
|
+
const thisProps = this.props;
|
|
7653
7648
|
["locale", "utc", "displayZone", "dateFormat", "timeFormat"].forEach(
|
|
7654
7649
|
function(p) {
|
|
7655
7650
|
prevProps[p] !== thisProps[p] && (needsUpdate = true);
|
|
@@ -7665,8 +7660,8 @@ class Datetime extends React__default.Component {
|
|
|
7665
7660
|
}
|
|
7666
7661
|
regenerateDates() {
|
|
7667
7662
|
const props = this.props;
|
|
7668
|
-
|
|
7669
|
-
|
|
7663
|
+
const viewDate = this.state.viewDate.clone();
|
|
7664
|
+
const selectedDate = this.state.selectedDate && this.state.selectedDate.clone();
|
|
7670
7665
|
if (props.locale) {
|
|
7671
7666
|
viewDate.locale(props.locale);
|
|
7672
7667
|
selectedDate && selectedDate.locale(props.locale);
|
|
@@ -7681,7 +7676,7 @@ class Datetime extends React__default.Component {
|
|
|
7681
7676
|
viewDate.locale();
|
|
7682
7677
|
selectedDate && selectedDate.locale();
|
|
7683
7678
|
}
|
|
7684
|
-
|
|
7679
|
+
const update = { viewDate, selectedDate };
|
|
7685
7680
|
if (selectedDate && selectedDate.isValid()) {
|
|
7686
7681
|
update.inputValue = selectedDate.format(this.getFormat("datetime"));
|
|
7687
7682
|
}
|
|
@@ -7690,7 +7685,7 @@ class Datetime extends React__default.Component {
|
|
|
7690
7685
|
getSelectedDate() {
|
|
7691
7686
|
if (this.props.value === void 0)
|
|
7692
7687
|
return this.state.selectedDate;
|
|
7693
|
-
|
|
7688
|
+
const selectedDate = this.parseDate(
|
|
7694
7689
|
this.props.value,
|
|
7695
7690
|
this.getFormat("datetime")
|
|
7696
7691
|
);
|
|
@@ -7709,7 +7704,7 @@ class Datetime extends React__default.Component {
|
|
|
7709
7704
|
return "";
|
|
7710
7705
|
}
|
|
7711
7706
|
getInputValue() {
|
|
7712
|
-
|
|
7707
|
+
const selectedDate = this.getSelectedDate();
|
|
7713
7708
|
return selectedDate ? selectedDate.format(this.getFormat("datetime")) : this.state.inputValue;
|
|
7714
7709
|
}
|
|
7715
7710
|
/**
|
|
@@ -7719,7 +7714,7 @@ class Datetime extends React__default.Component {
|
|
|
7719
7714
|
* @public
|
|
7720
7715
|
*/
|
|
7721
7716
|
setViewDate(date) {
|
|
7722
|
-
|
|
7717
|
+
const logError = function() {
|
|
7723
7718
|
return log("Invalid date passed to the `setViewDate` method: " + date);
|
|
7724
7719
|
};
|
|
7725
7720
|
if (!date)
|
|
@@ -7815,7 +7810,7 @@ __publicField(Datetime, "defaultProps", {
|
|
|
7815
7810
|
// Make moment accessible through the Datetime class
|
|
7816
7811
|
__publicField(Datetime, "moment", moment);
|
|
7817
7812
|
function log(message, method) {
|
|
7818
|
-
|
|
7813
|
+
const con = typeof window !== "undefined" && window.console;
|
|
7819
7814
|
if (!con)
|
|
7820
7815
|
return;
|
|
7821
7816
|
if (!method) {
|
|
@@ -8638,7 +8633,10 @@ const BranchSelector = ({
|
|
|
8638
8633
|
label: "View in GitHub",
|
|
8639
8634
|
Icon: /* @__PURE__ */ React.createElement(BiLinkExternal, { className: "w-5 h-auto text-blue-500 opacity-70" }),
|
|
8640
8635
|
onMouseDown: () => {
|
|
8641
|
-
window.open(
|
|
8636
|
+
window.open(
|
|
8637
|
+
branch.githubPullRequestUrl,
|
|
8638
|
+
"_blank"
|
|
8639
|
+
);
|
|
8642
8640
|
}
|
|
8643
8641
|
},
|
|
8644
8642
|
typeof previewFunction === "function" && ((_b2 = previewFunction({ branch: branch.name })) == null ? void 0 : _b2.url) && {
|
|
@@ -8944,7 +8942,9 @@ class EventBus {
|
|
|
8944
8942
|
} else {
|
|
8945
8943
|
events = event;
|
|
8946
8944
|
}
|
|
8947
|
-
const newListeners = events.map(
|
|
8945
|
+
const newListeners = events.map(
|
|
8946
|
+
(event2) => new Listener(event2, callback)
|
|
8947
|
+
);
|
|
8948
8948
|
newListeners.forEach((newListener) => this.listeners.add(newListener));
|
|
8949
8949
|
return () => {
|
|
8950
8950
|
newListeners.forEach((listener) => this.listeners.delete(listener));
|
|
@@ -9300,9 +9300,7 @@ class TinaMediaStore {
|
|
|
9300
9300
|
const deleteStartTime = Date.now();
|
|
9301
9301
|
while (true) {
|
|
9302
9302
|
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
9303
|
-
const { error, message } = await this.api.getRequestStatus(
|
|
9304
|
-
requestId
|
|
9305
|
-
);
|
|
9303
|
+
const { error, message } = await this.api.getRequestStatus(requestId);
|
|
9306
9304
|
if (error !== void 0) {
|
|
9307
9305
|
if (error) {
|
|
9308
9306
|
throw new Error(message);
|
|
@@ -9327,6 +9325,17 @@ class TinaMediaStore {
|
|
|
9327
9325
|
}
|
|
9328
9326
|
}
|
|
9329
9327
|
}
|
|
9328
|
+
const encodeUrlIfNeeded = (url) => {
|
|
9329
|
+
if (url) {
|
|
9330
|
+
try {
|
|
9331
|
+
return new URL(url).toString();
|
|
9332
|
+
} catch (e) {
|
|
9333
|
+
return url;
|
|
9334
|
+
}
|
|
9335
|
+
} else {
|
|
9336
|
+
return url;
|
|
9337
|
+
}
|
|
9338
|
+
};
|
|
9330
9339
|
let MediaManager$1 = class MediaManager {
|
|
9331
9340
|
constructor(store, events) {
|
|
9332
9341
|
this.store = store;
|
|
@@ -9399,6 +9408,20 @@ let MediaManager$1 = class MediaManager {
|
|
|
9399
9408
|
try {
|
|
9400
9409
|
this.events.dispatch({ type: "media:list:start", ...options });
|
|
9401
9410
|
const media = await this.store.list(options);
|
|
9411
|
+
media.items = media.items.map((item) => {
|
|
9412
|
+
if (item.type === "dir") {
|
|
9413
|
+
return item;
|
|
9414
|
+
}
|
|
9415
|
+
if (item.thumbnails) {
|
|
9416
|
+
for (const [size, src] of Object.entries(item.thumbnails)) {
|
|
9417
|
+
item.thumbnails[size] = encodeUrlIfNeeded(src);
|
|
9418
|
+
}
|
|
9419
|
+
}
|
|
9420
|
+
return {
|
|
9421
|
+
...item,
|
|
9422
|
+
src: encodeUrlIfNeeded(item.src)
|
|
9423
|
+
};
|
|
9424
|
+
});
|
|
9402
9425
|
this.events.dispatch({ type: "media:list:success", ...options, media });
|
|
9403
9426
|
return media;
|
|
9404
9427
|
} catch (error) {
|
|
@@ -9612,7 +9635,7 @@ let Alerts$1 = class Alerts {
|
|
|
9612
9635
|
return this.add("error", message, timeout);
|
|
9613
9636
|
}
|
|
9614
9637
|
};
|
|
9615
|
-
const
|
|
9638
|
+
const SidebarLoadingPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
9616
9639
|
"div",
|
|
9617
9640
|
{
|
|
9618
9641
|
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
@@ -9625,25 +9648,8 @@ const NoFormsPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
|
9625
9648
|
animationDuration: "150ms"
|
|
9626
9649
|
}
|
|
9627
9650
|
},
|
|
9628
|
-
/* @__PURE__ */ React.createElement(
|
|
9629
|
-
/* @__PURE__ */ React.createElement(
|
|
9630
|
-
/* @__PURE__ */ React.createElement("p", { className: "block" }, /* @__PURE__ */ React.createElement(
|
|
9631
|
-
Button$1,
|
|
9632
|
-
{
|
|
9633
|
-
href: "https://tina.io/docs/tinacms-context/",
|
|
9634
|
-
target: "_blank",
|
|
9635
|
-
as: "a"
|
|
9636
|
-
},
|
|
9637
|
-
/* @__PURE__ */ React.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
9638
|
-
" Contextual Editing"
|
|
9639
|
-
))
|
|
9640
|
-
);
|
|
9641
|
-
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React.createElement(
|
|
9642
|
-
"span",
|
|
9643
|
-
{
|
|
9644
|
-
className: `text-[24px] leading-none inline-block ${className}`,
|
|
9645
|
-
...props
|
|
9646
|
-
}
|
|
9651
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pb-5" }, "Please wait while TinaCMS", /* @__PURE__ */ React.createElement("br", null), "loads your content"),
|
|
9652
|
+
/* @__PURE__ */ React.createElement(LoadingDots, { color: "var(--tina-color-primary)" })
|
|
9647
9653
|
);
|
|
9648
9654
|
class SidebarState {
|
|
9649
9655
|
constructor(events, options = {}) {
|
|
@@ -9658,7 +9664,7 @@ class SidebarState {
|
|
|
9658
9664
|
};
|
|
9659
9665
|
this.position = options.position || "displace";
|
|
9660
9666
|
this.renderNav = options.renderNav || true;
|
|
9661
|
-
this.
|
|
9667
|
+
this.loadingPlaceholder = options.placeholder || SidebarLoadingPlaceholder;
|
|
9662
9668
|
if ((_a = options.buttons) == null ? void 0 : _a.save) {
|
|
9663
9669
|
this.buttons.save = options.buttons.save;
|
|
9664
9670
|
}
|
|
@@ -9732,238 +9738,6 @@ const ModalLayout = ({ children, name, close: close2, layout }) => {
|
|
|
9732
9738
|
children
|
|
9733
9739
|
)));
|
|
9734
9740
|
};
|
|
9735
|
-
const Item = ({
|
|
9736
|
-
item,
|
|
9737
|
-
depth,
|
|
9738
|
-
setActiveFormId
|
|
9739
|
-
}) => {
|
|
9740
|
-
const cms = useCMS();
|
|
9741
|
-
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
9742
|
-
const form = React.useMemo(
|
|
9743
|
-
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
9744
|
-
[item.formId]
|
|
9745
|
-
);
|
|
9746
|
-
return /* @__PURE__ */ React.createElement(
|
|
9747
|
-
"button",
|
|
9748
|
-
{
|
|
9749
|
-
type: "button",
|
|
9750
|
-
key: item.path,
|
|
9751
|
-
onClick: () => setActiveFormId(item.formId),
|
|
9752
|
-
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`
|
|
9753
|
-
},
|
|
9754
|
-
/* @__PURE__ */ React.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
9755
|
-
/* @__PURE__ */ React.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
9756
|
-
);
|
|
9757
|
-
};
|
|
9758
|
-
const FormListItem = ({
|
|
9759
|
-
item,
|
|
9760
|
-
depth,
|
|
9761
|
-
setActiveFormId
|
|
9762
|
-
}) => {
|
|
9763
|
-
var _a;
|
|
9764
|
-
return /* @__PURE__ */ React.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
9765
|
-
if (subItem.type === "document") {
|
|
9766
|
-
return /* @__PURE__ */ React.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React.createElement(
|
|
9767
|
-
Item,
|
|
9768
|
-
{
|
|
9769
|
-
setActiveFormId,
|
|
9770
|
-
depth: depth + 1,
|
|
9771
|
-
item: subItem
|
|
9772
|
-
}
|
|
9773
|
-
));
|
|
9774
|
-
}
|
|
9775
|
-
})));
|
|
9776
|
-
};
|
|
9777
|
-
const FormLists = (props) => {
|
|
9778
|
-
const cms = useCMS();
|
|
9779
|
-
return /* @__PURE__ */ React.createElement(
|
|
9780
|
-
Transition,
|
|
9781
|
-
{
|
|
9782
|
-
appear: true,
|
|
9783
|
-
show: true,
|
|
9784
|
-
as: "div",
|
|
9785
|
-
enter: "transition-all ease-out duration-150",
|
|
9786
|
-
enterFrom: "opacity-0 -translate-x-1/2",
|
|
9787
|
-
enterTo: "opacity-100",
|
|
9788
|
-
leave: "transition-all ease-out duration-150",
|
|
9789
|
-
leaveFrom: "opacity-100",
|
|
9790
|
-
leaveTo: "opacity-0 -translate-x-1/2"
|
|
9791
|
-
},
|
|
9792
|
-
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React.createElement(
|
|
9793
|
-
FormList,
|
|
9794
|
-
{
|
|
9795
|
-
isEditing: props.isEditing,
|
|
9796
|
-
setActiveFormId: (id) => {
|
|
9797
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
9798
|
-
},
|
|
9799
|
-
formList
|
|
9800
|
-
}
|
|
9801
|
-
)))
|
|
9802
|
-
);
|
|
9803
|
-
};
|
|
9804
|
-
const FormList = (props) => {
|
|
9805
|
-
const cms = useCMS();
|
|
9806
|
-
const listItems = React.useMemo(() => {
|
|
9807
|
-
var _a;
|
|
9808
|
-
const orderedListItems = [];
|
|
9809
|
-
const globalItems = [];
|
|
9810
|
-
const topItems = [];
|
|
9811
|
-
props.formList.items.forEach((item) => {
|
|
9812
|
-
if (item.type === "document") {
|
|
9813
|
-
const form = cms.state.forms.find(
|
|
9814
|
-
({ tinaForm }) => tinaForm.id === item.formId
|
|
9815
|
-
);
|
|
9816
|
-
if (form.tinaForm.global) {
|
|
9817
|
-
globalItems.push(item);
|
|
9818
|
-
} else {
|
|
9819
|
-
orderedListItems.push(item);
|
|
9820
|
-
}
|
|
9821
|
-
} else {
|
|
9822
|
-
orderedListItems.push(item);
|
|
9823
|
-
}
|
|
9824
|
-
});
|
|
9825
|
-
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
9826
|
-
topItems.push({ type: "list", label: "Documents" });
|
|
9827
|
-
}
|
|
9828
|
-
let extra = [];
|
|
9829
|
-
if (globalItems.length) {
|
|
9830
|
-
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
9831
|
-
}
|
|
9832
|
-
return [...topItems, ...orderedListItems, ...extra];
|
|
9833
|
-
}, [JSON.stringify(props.formList.items)]);
|
|
9834
|
-
return /* @__PURE__ */ React.createElement("ul", null, /* @__PURE__ */ React.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
9835
|
-
if (item.type === "list") {
|
|
9836
|
-
return /* @__PURE__ */ React.createElement(
|
|
9837
|
-
"div",
|
|
9838
|
-
{
|
|
9839
|
-
key: item.label,
|
|
9840
|
-
className: `relative group text-left w-full bg-white shadow-sm
|
|
9841
|
-
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"}`
|
|
9842
|
-
},
|
|
9843
|
-
/* @__PURE__ */ React.createElement(
|
|
9844
|
-
"span",
|
|
9845
|
-
{
|
|
9846
|
-
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
9847
|
-
},
|
|
9848
|
-
item.label
|
|
9849
|
-
)
|
|
9850
|
-
);
|
|
9851
|
-
}
|
|
9852
|
-
return /* @__PURE__ */ React.createElement(
|
|
9853
|
-
FormListItem,
|
|
9854
|
-
{
|
|
9855
|
-
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
9856
|
-
key: item.formId,
|
|
9857
|
-
item,
|
|
9858
|
-
depth: 0
|
|
9859
|
-
}
|
|
9860
|
-
);
|
|
9861
|
-
})));
|
|
9862
|
-
};
|
|
9863
|
-
const FormsView = ({
|
|
9864
|
-
children
|
|
9865
|
-
}) => {
|
|
9866
|
-
const cms = useCMS$1();
|
|
9867
|
-
const { setFormIsPristine } = React.useContext(SidebarContext);
|
|
9868
|
-
const isMultiform = cms.state.forms.length > 1;
|
|
9869
|
-
const activeForm = cms.state.forms.find(
|
|
9870
|
-
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
9871
|
-
);
|
|
9872
|
-
const isEditing = !!activeForm;
|
|
9873
|
-
if (!cms.state.formLists.length) {
|
|
9874
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, " ", children, " ");
|
|
9875
|
-
}
|
|
9876
|
-
if (isMultiform && !activeForm) {
|
|
9877
|
-
return /* @__PURE__ */ React.createElement(FormLists, { isEditing });
|
|
9878
|
-
}
|
|
9879
|
-
const formMetas = cms.plugins.all("form:meta");
|
|
9880
|
-
return /* @__PURE__ */ React.createElement(React.Fragment, null, activeForm && /* @__PURE__ */ React.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React.createElement(React.Fragment, { key: meta.name }, /* @__PURE__ */ React.createElement(meta.Component, null))), /* @__PURE__ */ React.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
9881
|
-
};
|
|
9882
|
-
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
9883
|
-
return /* @__PURE__ */ React.createElement(
|
|
9884
|
-
"div",
|
|
9885
|
-
{
|
|
9886
|
-
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
9887
|
-
style: isEditing ? {
|
|
9888
|
-
transform: "none",
|
|
9889
|
-
animationName: "fly-in-left",
|
|
9890
|
-
animationDuration: "150ms",
|
|
9891
|
-
animationDelay: "0",
|
|
9892
|
-
animationIterationCount: 1,
|
|
9893
|
-
animationTimingFunction: "ease-out"
|
|
9894
|
-
} : {
|
|
9895
|
-
transform: "translate3d(100%, 0, 0)"
|
|
9896
|
-
}
|
|
9897
|
-
},
|
|
9898
|
-
children
|
|
9899
|
-
);
|
|
9900
|
-
};
|
|
9901
|
-
const MultiformFormHeader = ({
|
|
9902
|
-
activeForm
|
|
9903
|
-
}) => {
|
|
9904
|
-
const cms = useCMS$1();
|
|
9905
|
-
const { formIsPristine } = React.useContext(SidebarContext);
|
|
9906
|
-
return /* @__PURE__ */ React.createElement(
|
|
9907
|
-
"div",
|
|
9908
|
-
{
|
|
9909
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
9910
|
-
},
|
|
9911
|
-
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
9912
|
-
"button",
|
|
9913
|
-
{
|
|
9914
|
-
type: "button",
|
|
9915
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
9916
|
-
onClick: () => {
|
|
9917
|
-
const state = activeForm.tinaForm.finalForm.getState();
|
|
9918
|
-
if (state.invalid === true) {
|
|
9919
|
-
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
9920
|
-
} else {
|
|
9921
|
-
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
9922
|
-
}
|
|
9923
|
-
}
|
|
9924
|
-
},
|
|
9925
|
-
/* @__PURE__ */ React.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
9926
|
-
), /* @__PURE__ */ React.createElement(
|
|
9927
|
-
"button",
|
|
9928
|
-
{
|
|
9929
|
-
type: "button",
|
|
9930
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
9931
|
-
onClick: () => {
|
|
9932
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
9933
|
-
cms.state.activeFormId
|
|
9934
|
-
).name;
|
|
9935
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
9936
|
-
}
|
|
9937
|
-
},
|
|
9938
|
-
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
9939
|
-
), /* @__PURE__ */ React.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
9940
|
-
);
|
|
9941
|
-
};
|
|
9942
|
-
const FormHeader = ({ activeForm }) => {
|
|
9943
|
-
const { formIsPristine } = React.useContext(SidebarContext);
|
|
9944
|
-
const cms = useCMS$1();
|
|
9945
|
-
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
9946
|
-
return /* @__PURE__ */ React.createElement(
|
|
9947
|
-
"div",
|
|
9948
|
-
{
|
|
9949
|
-
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
9950
|
-
},
|
|
9951
|
-
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
9952
|
-
"button",
|
|
9953
|
-
{
|
|
9954
|
-
type: "button",
|
|
9955
|
-
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
9956
|
-
onClick: () => {
|
|
9957
|
-
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
9958
|
-
cms.state.activeFormId
|
|
9959
|
-
).name;
|
|
9960
|
-
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
9961
|
-
}
|
|
9962
|
-
},
|
|
9963
|
-
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
9964
|
-
), shortFormLabel && /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
9965
|
-
);
|
|
9966
|
-
};
|
|
9967
9741
|
function ImFilesEmpty(props) {
|
|
9968
9742
|
return GenIcon({ "tag": "svg", "attr": { "version": "1.1", "viewBox": "0 0 16 16" }, "child": [{ "tag": "path", "attr": { "d": "M14.341 5.579c-0.347-0.473-0.831-1.027-1.362-1.558s-1.085-1.015-1.558-1.362c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.689 0.561 1.25 1.25 1.25h9.5c0.689 0 1.25-0.561 1.25-1.25v-7.75c0-0.224-0.068-0.615-0.659-1.421zM12.271 4.729c0.48 0.48 0.856 0.912 1.134 1.271h-2.406v-2.405c0.359 0.278 0.792 0.654 1.271 1.134v0zM14 14.75c0 0.136-0.114 0.25-0.25 0.25h-9.5c-0.136 0-0.25-0.114-0.25-0.25v-11.5c0-0.135 0.114-0.25 0.25-0.25 0 0 5.749-0 5.75 0v3.5c0 0.276 0.224 0.5 0.5 0.5h3.5v7.75z" }, "child": [] }, { "tag": "path", "attr": { "d": "M9.421 0.659c-0.806-0.591-1.197-0.659-1.421-0.659h-5.75c-0.689 0-1.25 0.561-1.25 1.25v11.5c0 0.604 0.43 1.109 1 1.225v-12.725c0-0.135 0.115-0.25 0.25-0.25h7.607c-0.151-0.124-0.297-0.238-0.437-0.341z" }, "child": [] }] })(props);
|
|
9969
9743
|
}
|
|
@@ -10206,7 +9980,7 @@ const SyncStatus = ({ cms, setEventsOpen }) => {
|
|
|
10206
9980
|
"Event Log"
|
|
10207
9981
|
));
|
|
10208
9982
|
};
|
|
10209
|
-
const version = "2.
|
|
9983
|
+
const version = "2.7.4";
|
|
10210
9984
|
const Nav = ({
|
|
10211
9985
|
isLocalMode,
|
|
10212
9986
|
className = "",
|
|
@@ -10448,6 +10222,293 @@ const ResizeHandle = () => {
|
|
|
10448
10222
|
/* @__PURE__ */ React.createElement("span", { className: "absolute top-1/2 left-1/2 h-4/6 w-px bg-gray-200 transform -translate-y-1/2 -translate-x-1/2 opacity-30 transition-opacity duration-150 ease-out group-hover:opacity-100" })
|
|
10449
10223
|
);
|
|
10450
10224
|
};
|
|
10225
|
+
const Item = ({
|
|
10226
|
+
item,
|
|
10227
|
+
depth,
|
|
10228
|
+
setActiveFormId
|
|
10229
|
+
}) => {
|
|
10230
|
+
const cms = useCMS();
|
|
10231
|
+
const depths = ["pl-6", "pl-10", "pl-14"];
|
|
10232
|
+
const form = React.useMemo(
|
|
10233
|
+
() => cms.state.forms.find(({ tinaForm }) => item.formId === tinaForm.id),
|
|
10234
|
+
[item.formId]
|
|
10235
|
+
);
|
|
10236
|
+
return /* @__PURE__ */ React.createElement(
|
|
10237
|
+
"button",
|
|
10238
|
+
{
|
|
10239
|
+
type: "button",
|
|
10240
|
+
key: item.path,
|
|
10241
|
+
onClick: () => setActiveFormId(item.formId),
|
|
10242
|
+
className: `${depths[depth] || "pl-12"} pr-6 py-3 w-full h-full bg-transparent border-none text-lg text-gray-700 group hover:bg-gray-50 transition-all ease-out duration-150 flex items-center justify-between gap-2`
|
|
10243
|
+
},
|
|
10244
|
+
/* @__PURE__ */ React.createElement(BiEdit, { className: "opacity-70 w-5 h-auto text-blue-500 flex-none" }),
|
|
10245
|
+
/* @__PURE__ */ React.createElement("div", { className: "flex-1 flex flex-col gap-0.5 items-start" }, /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 font-sans text-xs font-semibold text-gray-700 whitespace-normal" }, form.tinaForm.label), /* @__PURE__ */ React.createElement("div", { className: "group-hover:text-blue-500 text-base truncate leading-tight text-gray-600" }, form.tinaForm.id))
|
|
10246
|
+
);
|
|
10247
|
+
};
|
|
10248
|
+
const FormListItem = ({
|
|
10249
|
+
item,
|
|
10250
|
+
depth,
|
|
10251
|
+
setActiveFormId
|
|
10252
|
+
}) => {
|
|
10253
|
+
var _a;
|
|
10254
|
+
return /* @__PURE__ */ React.createElement("div", { className: "divide-y divide-gray-200" }, /* @__PURE__ */ React.createElement(Item, { setActiveFormId, item, depth }), item.subItems && /* @__PURE__ */ React.createElement("ul", { className: "divide-y divide-gray-200" }, (_a = item.subItems) == null ? void 0 : _a.map((subItem) => {
|
|
10255
|
+
if (subItem.type === "document") {
|
|
10256
|
+
return /* @__PURE__ */ React.createElement("li", { key: subItem.formId }, /* @__PURE__ */ React.createElement(
|
|
10257
|
+
Item,
|
|
10258
|
+
{
|
|
10259
|
+
setActiveFormId,
|
|
10260
|
+
depth: depth + 1,
|
|
10261
|
+
item: subItem
|
|
10262
|
+
}
|
|
10263
|
+
));
|
|
10264
|
+
}
|
|
10265
|
+
})));
|
|
10266
|
+
};
|
|
10267
|
+
const FormLists = (props) => {
|
|
10268
|
+
const cms = useCMS();
|
|
10269
|
+
return /* @__PURE__ */ React.createElement(
|
|
10270
|
+
Transition,
|
|
10271
|
+
{
|
|
10272
|
+
appear: true,
|
|
10273
|
+
show: true,
|
|
10274
|
+
as: "div",
|
|
10275
|
+
enter: "transition-all ease-out duration-150",
|
|
10276
|
+
enterFrom: "opacity-0 -translate-x-1/2",
|
|
10277
|
+
enterTo: "opacity-100",
|
|
10278
|
+
leave: "transition-all ease-out duration-150",
|
|
10279
|
+
leaveFrom: "opacity-100",
|
|
10280
|
+
leaveTo: "opacity-0 -translate-x-1/2"
|
|
10281
|
+
},
|
|
10282
|
+
cms.state.formLists.map((formList, index) => /* @__PURE__ */ React.createElement("div", { key: `${formList.id}-${index}`, className: "pt-16" }, /* @__PURE__ */ React.createElement(
|
|
10283
|
+
FormList,
|
|
10284
|
+
{
|
|
10285
|
+
isEditing: props.isEditing,
|
|
10286
|
+
setActiveFormId: (id) => {
|
|
10287
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: id });
|
|
10288
|
+
},
|
|
10289
|
+
formList
|
|
10290
|
+
}
|
|
10291
|
+
)))
|
|
10292
|
+
);
|
|
10293
|
+
};
|
|
10294
|
+
const FormList = (props) => {
|
|
10295
|
+
const cms = useCMS();
|
|
10296
|
+
const listItems = React.useMemo(() => {
|
|
10297
|
+
var _a;
|
|
10298
|
+
const orderedListItems = [];
|
|
10299
|
+
const globalItems = [];
|
|
10300
|
+
const topItems = [];
|
|
10301
|
+
props.formList.items.forEach((item) => {
|
|
10302
|
+
if (item.type === "document") {
|
|
10303
|
+
const form = cms.state.forms.find(
|
|
10304
|
+
({ tinaForm }) => tinaForm.id === item.formId
|
|
10305
|
+
);
|
|
10306
|
+
if (form.tinaForm.global) {
|
|
10307
|
+
globalItems.push(item);
|
|
10308
|
+
} else {
|
|
10309
|
+
orderedListItems.push(item);
|
|
10310
|
+
}
|
|
10311
|
+
} else {
|
|
10312
|
+
orderedListItems.push(item);
|
|
10313
|
+
}
|
|
10314
|
+
});
|
|
10315
|
+
if (((_a = orderedListItems[0]) == null ? void 0 : _a.type) === "document") {
|
|
10316
|
+
topItems.push({ type: "list", label: "Documents" });
|
|
10317
|
+
}
|
|
10318
|
+
let extra = [];
|
|
10319
|
+
if (globalItems.length) {
|
|
10320
|
+
extra = [{ type: "list", label: "Global Documents" }, ...globalItems];
|
|
10321
|
+
}
|
|
10322
|
+
return [...topItems, ...orderedListItems, ...extra];
|
|
10323
|
+
}, [JSON.stringify(props.formList.items)]);
|
|
10324
|
+
return /* @__PURE__ */ React.createElement("ul", null, /* @__PURE__ */ React.createElement("li", { className: "divide-y divide-gray-200" }, listItems.map((item, index) => {
|
|
10325
|
+
if (item.type === "list") {
|
|
10326
|
+
return /* @__PURE__ */ React.createElement(
|
|
10327
|
+
"div",
|
|
10328
|
+
{
|
|
10329
|
+
key: item.label,
|
|
10330
|
+
className: `relative group text-left w-full bg-white shadow-sm
|
|
10331
|
+
border-gray-100 px-6 -mt-px pb-3 ${index > 0 ? "pt-6 bg-gradient-to-b from-gray-50 via-white to-white" : "pt-3"}`
|
|
10332
|
+
},
|
|
10333
|
+
/* @__PURE__ */ React.createElement(
|
|
10334
|
+
"span",
|
|
10335
|
+
{
|
|
10336
|
+
className: "text-sm tracking-wide font-bold text-gray-700 uppercase"
|
|
10337
|
+
},
|
|
10338
|
+
item.label
|
|
10339
|
+
)
|
|
10340
|
+
);
|
|
10341
|
+
}
|
|
10342
|
+
return /* @__PURE__ */ React.createElement(
|
|
10343
|
+
FormListItem,
|
|
10344
|
+
{
|
|
10345
|
+
setActiveFormId: (id) => props.setActiveFormId(id),
|
|
10346
|
+
key: item.formId,
|
|
10347
|
+
item,
|
|
10348
|
+
depth: 0
|
|
10349
|
+
}
|
|
10350
|
+
);
|
|
10351
|
+
})));
|
|
10352
|
+
};
|
|
10353
|
+
const SidebarNoFormsPlaceholder = () => /* @__PURE__ */ React.createElement(
|
|
10354
|
+
"div",
|
|
10355
|
+
{
|
|
10356
|
+
className: "relative flex flex-col items-center justify-center text-center p-5 pb-16 w-full h-full overflow-y-auto",
|
|
10357
|
+
style: {
|
|
10358
|
+
animationName: "fade-in",
|
|
10359
|
+
animationDelay: "300ms",
|
|
10360
|
+
animationTimingFunction: "ease-out",
|
|
10361
|
+
animationIterationCount: 1,
|
|
10362
|
+
animationFillMode: "both",
|
|
10363
|
+
animationDuration: "150ms"
|
|
10364
|
+
}
|
|
10365
|
+
},
|
|
10366
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pb-5" }, "Looks like there's ", /* @__PURE__ */ React.createElement("br", null), "nothing to edit on ", /* @__PURE__ */ React.createElement("br", null), "this page."),
|
|
10367
|
+
/* @__PURE__ */ React.createElement("p", { className: "block pt-5" }, /* @__PURE__ */ React.createElement(
|
|
10368
|
+
Button$1,
|
|
10369
|
+
{
|
|
10370
|
+
href: "https://tina.io/docs/contextual-editing/overview",
|
|
10371
|
+
target: "_blank",
|
|
10372
|
+
as: "a"
|
|
10373
|
+
},
|
|
10374
|
+
/* @__PURE__ */ React.createElement(Emoji$1, { className: "mr-1.5" }, "📖"),
|
|
10375
|
+
" Contextual Editing Docs"
|
|
10376
|
+
))
|
|
10377
|
+
);
|
|
10378
|
+
const Emoji$1 = ({ className = "", ...props }) => /* @__PURE__ */ React.createElement(
|
|
10379
|
+
"span",
|
|
10380
|
+
{
|
|
10381
|
+
className: `text-[24px] leading-none inline-block ${className}`,
|
|
10382
|
+
...props
|
|
10383
|
+
}
|
|
10384
|
+
);
|
|
10385
|
+
const minimumTimeToShowLoadingIndicator = 1e3;
|
|
10386
|
+
const FormsView = ({ loadingPlaceholder } = {}) => {
|
|
10387
|
+
const cms = useCMS$1();
|
|
10388
|
+
const { setFormIsPristine } = React.useContext(SidebarContext);
|
|
10389
|
+
const [isShowingLoading, setIsShowingLoading] = React.useState(true);
|
|
10390
|
+
const [initialLoadComplete, setInitialLoadComplete] = React.useState(false);
|
|
10391
|
+
React.useEffect(() => {
|
|
10392
|
+
if (cms.state.isLoadingContent) {
|
|
10393
|
+
setIsShowingLoading(true);
|
|
10394
|
+
const timer = setTimeout(() => {
|
|
10395
|
+
if (!cms.state.isLoadingContent) {
|
|
10396
|
+
setIsShowingLoading(false);
|
|
10397
|
+
setInitialLoadComplete(true);
|
|
10398
|
+
}
|
|
10399
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10400
|
+
return () => clearTimeout(timer);
|
|
10401
|
+
} else {
|
|
10402
|
+
const timer = setTimeout(() => {
|
|
10403
|
+
setIsShowingLoading(false);
|
|
10404
|
+
setInitialLoadComplete(true);
|
|
10405
|
+
}, minimumTimeToShowLoadingIndicator);
|
|
10406
|
+
return () => clearTimeout(timer);
|
|
10407
|
+
}
|
|
10408
|
+
}, [cms.state.isLoadingContent]);
|
|
10409
|
+
if (isShowingLoading || !initialLoadComplete) {
|
|
10410
|
+
const LoadingPlaceholder = loadingPlaceholder || SidebarLoadingPlaceholder;
|
|
10411
|
+
return /* @__PURE__ */ React.createElement(LoadingPlaceholder, null);
|
|
10412
|
+
}
|
|
10413
|
+
if (!cms.state.formLists.length) {
|
|
10414
|
+
return /* @__PURE__ */ React.createElement(SidebarNoFormsPlaceholder, null);
|
|
10415
|
+
}
|
|
10416
|
+
const isMultiform = cms.state.forms.length > 1;
|
|
10417
|
+
const activeForm = cms.state.forms.find(
|
|
10418
|
+
({ tinaForm }) => tinaForm.id === cms.state.activeFormId
|
|
10419
|
+
);
|
|
10420
|
+
const isEditing = !!activeForm;
|
|
10421
|
+
if (isMultiform && !activeForm) {
|
|
10422
|
+
return /* @__PURE__ */ React.createElement(FormLists, { isEditing });
|
|
10423
|
+
}
|
|
10424
|
+
const formMetas = cms.plugins.all("form:meta");
|
|
10425
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, activeForm && /* @__PURE__ */ React.createElement(FormWrapper$1, { isEditing, isMultiform }, isMultiform && /* @__PURE__ */ React.createElement(MultiformFormHeader, { activeForm }), !isMultiform && /* @__PURE__ */ React.createElement(FormHeader, { activeForm }), formMetas == null ? void 0 : formMetas.map((meta) => /* @__PURE__ */ React.createElement(React.Fragment, { key: meta.name }, /* @__PURE__ */ React.createElement(meta.Component, null))), /* @__PURE__ */ React.createElement(FormBuilder, { form: activeForm, onPristineChange: setFormIsPristine })));
|
|
10426
|
+
};
|
|
10427
|
+
const FormWrapper$1 = ({ isEditing, children }) => {
|
|
10428
|
+
return /* @__PURE__ */ React.createElement(
|
|
10429
|
+
"div",
|
|
10430
|
+
{
|
|
10431
|
+
className: "flex-1 flex flex-col flex-nowrap overflow-hidden h-full w-full relative bg-white",
|
|
10432
|
+
style: isEditing ? {
|
|
10433
|
+
transform: "none",
|
|
10434
|
+
animationName: "fly-in-left",
|
|
10435
|
+
animationDuration: "150ms",
|
|
10436
|
+
animationDelay: "0",
|
|
10437
|
+
animationIterationCount: 1,
|
|
10438
|
+
animationTimingFunction: "ease-out"
|
|
10439
|
+
} : {
|
|
10440
|
+
transform: "translate3d(100%, 0, 0)"
|
|
10441
|
+
}
|
|
10442
|
+
},
|
|
10443
|
+
children
|
|
10444
|
+
);
|
|
10445
|
+
};
|
|
10446
|
+
const MultiformFormHeader = ({
|
|
10447
|
+
activeForm
|
|
10448
|
+
}) => {
|
|
10449
|
+
const cms = useCMS$1();
|
|
10450
|
+
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10451
|
+
return /* @__PURE__ */ React.createElement(
|
|
10452
|
+
"div",
|
|
10453
|
+
{
|
|
10454
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10455
|
+
},
|
|
10456
|
+
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10457
|
+
"button",
|
|
10458
|
+
{
|
|
10459
|
+
type: "button",
|
|
10460
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10461
|
+
onClick: () => {
|
|
10462
|
+
const state = activeForm.tinaForm.finalForm.getState();
|
|
10463
|
+
if (state.invalid === true) {
|
|
10464
|
+
cms.alerts.error("Cannot navigate away from an invalid form.");
|
|
10465
|
+
} else {
|
|
10466
|
+
cms.dispatch({ type: "forms:set-active-form-id", value: null });
|
|
10467
|
+
}
|
|
10468
|
+
}
|
|
10469
|
+
},
|
|
10470
|
+
/* @__PURE__ */ React.createElement(BiDotsVertical, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10471
|
+
), /* @__PURE__ */ React.createElement(
|
|
10472
|
+
"button",
|
|
10473
|
+
{
|
|
10474
|
+
type: "button",
|
|
10475
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10476
|
+
onClick: () => {
|
|
10477
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10478
|
+
cms.state.activeFormId
|
|
10479
|
+
).name;
|
|
10480
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10481
|
+
}
|
|
10482
|
+
},
|
|
10483
|
+
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10484
|
+
), /* @__PURE__ */ React.createElement("span", { className: "opacity-30 text-sm leading-tight whitespace-nowrap flex-0" }, "/"), /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, activeForm.tinaForm.label || activeForm.tinaForm.id), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10485
|
+
);
|
|
10486
|
+
};
|
|
10487
|
+
const FormHeader = ({ activeForm }) => {
|
|
10488
|
+
const { formIsPristine } = React.useContext(SidebarContext);
|
|
10489
|
+
const cms = useCMS$1();
|
|
10490
|
+
const shortFormLabel = activeForm.tinaForm.label ? activeForm.tinaForm.label.replace(/^.*[\\\/]/, "") : false;
|
|
10491
|
+
return /* @__PURE__ */ React.createElement(
|
|
10492
|
+
"div",
|
|
10493
|
+
{
|
|
10494
|
+
className: "pt-18 pb-4 px-6 border-b border-gray-200 bg-gradient-to-t from-white to-gray-50"
|
|
10495
|
+
},
|
|
10496
|
+
/* @__PURE__ */ React.createElement("div", { className: "max-w-form mx-auto flex gap-2 justify-between items-center" }, /* @__PURE__ */ React.createElement(
|
|
10497
|
+
"button",
|
|
10498
|
+
{
|
|
10499
|
+
type: "button",
|
|
10500
|
+
className: "pointer-events-auto text-xs text-blue-400 hover:text-blue-500 hover:underline transition-all ease-out duration-150",
|
|
10501
|
+
onClick: () => {
|
|
10502
|
+
const collectionName = cms.api.tina.schema.getCollectionByFullPath(
|
|
10503
|
+
cms.state.activeFormId
|
|
10504
|
+
).name;
|
|
10505
|
+
window.location.href = `${new URL(window.location.href).pathname}#/collections/${collectionName}/~`;
|
|
10506
|
+
}
|
|
10507
|
+
},
|
|
10508
|
+
/* @__PURE__ */ React.createElement(BiHomeAlt, { className: "h-auto w-5 inline-block opacity-70" })
|
|
10509
|
+
), shortFormLabel && /* @__PURE__ */ React.createElement("span", { className: "block w-full text-sm leading-tight whitespace-nowrap truncate" }, shortFormLabel), /* @__PURE__ */ React.createElement(FormStatus, { pristine: formIsPristine }))
|
|
10510
|
+
);
|
|
10511
|
+
};
|
|
10451
10512
|
const SidebarContext = React.createContext(null);
|
|
10452
10513
|
const minPreviewWidth = 440;
|
|
10453
10514
|
const minSidebarWidth = 360;
|
|
@@ -10666,7 +10727,7 @@ const Sidebar$1 = ({
|
|
|
10666
10727
|
isLocalMode: (_d = (_c = cms.api) == null ? void 0 : _c.tina) == null ? void 0 : _d.isLocalMode,
|
|
10667
10728
|
branchingEnabled
|
|
10668
10729
|
}
|
|
10669
|
-
), /* @__PURE__ */ React.createElement(FormsView,
|
|
10730
|
+
), /* @__PURE__ */ React.createElement(FormsView, { loadingPlaceholder: sidebar.loadingPlaceholder }), activeScreen && /* @__PURE__ */ React.createElement(
|
|
10670
10731
|
ScreenPluginModal,
|
|
10671
10732
|
{
|
|
10672
10733
|
screen: activeScreen,
|
|
@@ -10842,7 +10903,7 @@ const SidebarHeader = ({
|
|
|
10842
10903
|
className: "h-5 w-auto -mx-1 text-blue-500",
|
|
10843
10904
|
stroke: "currentColor",
|
|
10844
10905
|
fill: "currentColor",
|
|
10845
|
-
|
|
10906
|
+
strokeWidth: "0",
|
|
10846
10907
|
viewBox: "0 0 24 24",
|
|
10847
10908
|
xmlns: "http://www.w3.org/2000/svg"
|
|
10848
10909
|
},
|
|
@@ -11432,7 +11493,10 @@ function MediaPicker({
|
|
|
11432
11493
|
const observer = new IntersectionObserver((entries) => {
|
|
11433
11494
|
const target = entries[0];
|
|
11434
11495
|
if (target.isIntersecting && list.nextOffset) {
|
|
11435
|
-
setOffsetHistory((offsetHistory2) => [
|
|
11496
|
+
setOffsetHistory((offsetHistory2) => [
|
|
11497
|
+
...offsetHistory2,
|
|
11498
|
+
list.nextOffset
|
|
11499
|
+
]);
|
|
11436
11500
|
}
|
|
11437
11501
|
});
|
|
11438
11502
|
if (loaderRef.current) {
|
|
@@ -12027,6 +12091,7 @@ const initialState = (cms) => {
|
|
|
12027
12091
|
forms: [],
|
|
12028
12092
|
formLists: [],
|
|
12029
12093
|
editingMode: "basic",
|
|
12094
|
+
isLoadingContent: false,
|
|
12030
12095
|
quickEditSupported: false,
|
|
12031
12096
|
sidebarDisplayState: ((_a = cms == null ? void 0 : cms.sidebar) == null ? void 0 : _a.defaultState) || "open"
|
|
12032
12097
|
};
|
|
@@ -12086,7 +12151,12 @@ function tinaReducer(state, action) {
|
|
|
12086
12151
|
}
|
|
12087
12152
|
});
|
|
12088
12153
|
}
|
|
12089
|
-
return {
|
|
12154
|
+
return {
|
|
12155
|
+
...state,
|
|
12156
|
+
activeFormId,
|
|
12157
|
+
formLists: nextFormLists,
|
|
12158
|
+
isLoadingContent: false
|
|
12159
|
+
};
|
|
12090
12160
|
}
|
|
12091
12161
|
case "form-lists:remove": {
|
|
12092
12162
|
const nextFormLists = state.formLists.filter(
|
|
@@ -12155,6 +12225,9 @@ function tinaReducer(state, action) {
|
|
|
12155
12225
|
}
|
|
12156
12226
|
return { ...state, sidebarDisplayState: action.value };
|
|
12157
12227
|
}
|
|
12228
|
+
case "sidebar:set-loading-state": {
|
|
12229
|
+
return { ...state, isLoadingContent: action.value };
|
|
12230
|
+
}
|
|
12158
12231
|
default:
|
|
12159
12232
|
throw new Error(`Unhandled action ${action.type}`);
|
|
12160
12233
|
}
|
|
@@ -12396,7 +12469,9 @@ const ActiveFieldIndicator = () => {
|
|
|
12396
12469
|
if (activeEle) {
|
|
12397
12470
|
setDisplay(true);
|
|
12398
12471
|
setPosition(activeEle.getBoundingClientRect());
|
|
12399
|
-
const iframe = document.getElementById(
|
|
12472
|
+
const iframe = document.getElementById(
|
|
12473
|
+
"tina-iframe"
|
|
12474
|
+
);
|
|
12400
12475
|
if (iframe) {
|
|
12401
12476
|
setIframePosition(iframe.getBoundingClientRect());
|
|
12402
12477
|
}
|
|
@@ -12838,7 +12913,6 @@ const CreateBranchModel = ({
|
|
|
12838
12913
|
}) => {
|
|
12839
12914
|
const cms = useCMS$1();
|
|
12840
12915
|
const tinaApi = cms.api.tina;
|
|
12841
|
-
tinaApi.branch;
|
|
12842
12916
|
const [disabled, setDisabled] = React.useState(false);
|
|
12843
12917
|
const [newBranchName, setNewBranchName] = React.useState("");
|
|
12844
12918
|
const [error, setError] = React.useState("");
|
|
@@ -12864,10 +12938,10 @@ const CreateBranchModel = ({
|
|
|
12864
12938
|
const newUrl = window.location.href.replace(hash, newHash);
|
|
12865
12939
|
window.location.href = newUrl;
|
|
12866
12940
|
};
|
|
12867
|
-
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", { className: "text-
|
|
12941
|
+
return /* @__PURE__ */ React.createElement(Modal, null, /* @__PURE__ */ React.createElement(PopupModal, null, /* @__PURE__ */ React.createElement(ModalHeader, { close: close2 }, /* @__PURE__ */ React.createElement(BiGitBranch, { className: "w-6 h-auto mr-1 text-blue-500 opacity-70" }), " ", "Create Branch"), /* @__PURE__ */ React.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React.createElement("p", { className: "text-lg text-gray-700 font-bold mb-2" }, "This content is protected 🚧"), /* @__PURE__ */ React.createElement("p", { className: "text-sm text-gray-700 mb-4" }, "To make changes, you need to create a copy then get it approved and merged for it to go live."), /* @__PURE__ */ React.createElement(
|
|
12868
12942
|
PrefixedTextField,
|
|
12869
12943
|
{
|
|
12870
|
-
placeholder: "
|
|
12944
|
+
placeholder: "e.g. {{PAGE-NAME}}-updates",
|
|
12871
12945
|
value: newBranchName,
|
|
12872
12946
|
onChange: (e) => {
|
|
12873
12947
|
setError("");
|
|
@@ -13014,7 +13088,9 @@ const ImgEmbed = ({
|
|
|
13014
13088
|
const { fieldName } = useTemplates();
|
|
13015
13089
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13016
13090
|
useHotkey("enter", () => {
|
|
13017
|
-
insertNodes(editor, [
|
|
13091
|
+
insertNodes(editor, [
|
|
13092
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13093
|
+
]);
|
|
13018
13094
|
});
|
|
13019
13095
|
return /* @__PURE__ */ React__default.createElement("span", { ...attributes, className: "" }, children, element.url ? /* @__PURE__ */ React__default.createElement(
|
|
13020
13096
|
"div",
|
|
@@ -13157,7 +13233,9 @@ const InlineEmbed = ({
|
|
|
13157
13233
|
const { templates, fieldName } = useTemplates();
|
|
13158
13234
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13159
13235
|
useHotkey("enter", () => {
|
|
13160
|
-
insertNodes(editor, [
|
|
13236
|
+
insertNodes(editor, [
|
|
13237
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13238
|
+
]);
|
|
13161
13239
|
});
|
|
13162
13240
|
useHotkey("space", () => {
|
|
13163
13241
|
insertNodes(editor, [{ text: " " }], {
|
|
@@ -13213,7 +13291,9 @@ const BlockEmbed = ({
|
|
|
13213
13291
|
const { templates, fieldName } = useTemplates();
|
|
13214
13292
|
const { handleClose, handleRemove, handleSelect, isExpanded } = useEmbedHandles(editor, element, fieldName);
|
|
13215
13293
|
useHotkey("enter", () => {
|
|
13216
|
-
insertNodes(editor, [
|
|
13294
|
+
insertNodes(editor, [
|
|
13295
|
+
{ type: ELEMENT_PARAGRAPH, children: [{ text: "" }] }
|
|
13296
|
+
]);
|
|
13217
13297
|
});
|
|
13218
13298
|
const activeTemplate = templates.find(
|
|
13219
13299
|
(template) => template.name === element.name
|
|
@@ -13559,6 +13639,11 @@ const autoformatMarks = [
|
|
|
13559
13639
|
mode: "mark",
|
|
13560
13640
|
type: MARK_CODE,
|
|
13561
13641
|
match: "`"
|
|
13642
|
+
},
|
|
13643
|
+
{
|
|
13644
|
+
mode: "mark",
|
|
13645
|
+
type: MARK_STRIKETHROUGH,
|
|
13646
|
+
match: ["~~", "~"]
|
|
13562
13647
|
}
|
|
13563
13648
|
];
|
|
13564
13649
|
const autoformatRules = [
|
|
@@ -13700,16 +13785,14 @@ const plugins$1 = [
|
|
|
13700
13785
|
})
|
|
13701
13786
|
];
|
|
13702
13787
|
const plugins = [
|
|
13788
|
+
createBasicMarksPlugin(),
|
|
13703
13789
|
createHeadingPlugin(),
|
|
13704
13790
|
createParagraphPlugin(),
|
|
13705
13791
|
createCodeBlockPlugin(),
|
|
13706
13792
|
createHTMLBlockPlugin(),
|
|
13707
13793
|
createHTMLInlinePlugin(),
|
|
13708
13794
|
createBlockquotePlugin(),
|
|
13709
|
-
createBoldPlugin(),
|
|
13710
|
-
createItalicPlugin(),
|
|
13711
13795
|
createUnderlinePlugin(),
|
|
13712
|
-
createCodePlugin(),
|
|
13713
13796
|
createListPlugin(),
|
|
13714
13797
|
createIndentListPlugin(),
|
|
13715
13798
|
createHorizontalRulePlugin(),
|
|
@@ -14069,7 +14152,9 @@ const EMBED_ICON_WIDTH = 78;
|
|
|
14069
14152
|
const CONTAINER_MD_BREAKPOINT = 448;
|
|
14070
14153
|
const FLOAT_BUTTON_WIDTH = 25;
|
|
14071
14154
|
const HEADING_LABEL = "Headings";
|
|
14072
|
-
const ToolbarContext = createContext(
|
|
14155
|
+
const ToolbarContext = createContext(
|
|
14156
|
+
void 0
|
|
14157
|
+
);
|
|
14073
14158
|
const ToolbarProvider = ({
|
|
14074
14159
|
tinaForm,
|
|
14075
14160
|
templates,
|
|
@@ -14219,7 +14304,7 @@ const useCodeBlockToolbarButton = (state) => {
|
|
|
14219
14304
|
const CodeBlockToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14220
14305
|
const state = useCodeBlockToolbarButtonState();
|
|
14221
14306
|
const { props } = useCodeBlockToolbarButton(state);
|
|
14222
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14307
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Code Block", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.codeBlock, null));
|
|
14223
14308
|
});
|
|
14224
14309
|
const useImageToolbarButtonState = () => {
|
|
14225
14310
|
const editor = useEditorState();
|
|
@@ -14251,36 +14336,54 @@ const useImageToolbarButton = (state) => {
|
|
|
14251
14336
|
const ImageToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14252
14337
|
const state = useImageToolbarButtonState();
|
|
14253
14338
|
const { props } = useImageToolbarButton(state);
|
|
14254
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14255
|
-
});
|
|
14256
|
-
const IndentListToolbarButton = withRef(({ nodeType = ELEMENT_UL }, ref) => {
|
|
14257
|
-
const editor = useEditorState();
|
|
14258
|
-
const state = useListToolbarButtonState({ nodeType });
|
|
14259
|
-
const { props } = useListToolbarButton(state);
|
|
14260
|
-
return /* @__PURE__ */ React__default.createElement(
|
|
14261
|
-
ToolbarButton,
|
|
14262
|
-
{
|
|
14263
|
-
ref,
|
|
14264
|
-
tooltip: nodeType === ELEMENT_UL ? "Bulleted List" : "Numbered List",
|
|
14265
|
-
...props,
|
|
14266
|
-
onClick: (e) => {
|
|
14267
|
-
e.preventDefault();
|
|
14268
|
-
e.stopPropagation();
|
|
14269
|
-
toggleList(editor, { type: nodeType });
|
|
14270
|
-
}
|
|
14271
|
-
},
|
|
14272
|
-
nodeType === ELEMENT_UL ? /* @__PURE__ */ React__default.createElement(Icons.ul, null) : /* @__PURE__ */ React__default.createElement(Icons.ol, null)
|
|
14273
|
-
);
|
|
14339
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Image", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.image, null));
|
|
14274
14340
|
});
|
|
14341
|
+
const UnorderedListToolbarButton = withRef(
|
|
14342
|
+
(props, ref) => {
|
|
14343
|
+
const editor = useEditorState();
|
|
14344
|
+
const state = useListToolbarButtonState({ nodeType: ELEMENT_UL });
|
|
14345
|
+
const { props: buttonProps } = useListToolbarButton(state);
|
|
14346
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14347
|
+
ToolbarButton,
|
|
14348
|
+
{
|
|
14349
|
+
ref,
|
|
14350
|
+
tooltip: "Bulleted List",
|
|
14351
|
+
...buttonProps,
|
|
14352
|
+
onClick: (e) => {
|
|
14353
|
+
e.preventDefault();
|
|
14354
|
+
e.stopPropagation();
|
|
14355
|
+
toggleList(editor, { type: ELEMENT_UL });
|
|
14356
|
+
}
|
|
14357
|
+
},
|
|
14358
|
+
/* @__PURE__ */ React__default.createElement(Icons.ul, null)
|
|
14359
|
+
);
|
|
14360
|
+
}
|
|
14361
|
+
);
|
|
14362
|
+
const OrderedListToolbarButton = withRef(
|
|
14363
|
+
(props, ref) => {
|
|
14364
|
+
const editor = useEditorState();
|
|
14365
|
+
const state = useListToolbarButtonState({ nodeType: ELEMENT_OL });
|
|
14366
|
+
const { props: buttonProps } = useListToolbarButton(state);
|
|
14367
|
+
return /* @__PURE__ */ React__default.createElement(
|
|
14368
|
+
ToolbarButton,
|
|
14369
|
+
{
|
|
14370
|
+
ref,
|
|
14371
|
+
tooltip: "Numbered List",
|
|
14372
|
+
...buttonProps,
|
|
14373
|
+
onClick: (e) => {
|
|
14374
|
+
e.preventDefault();
|
|
14375
|
+
e.stopPropagation();
|
|
14376
|
+
toggleList(editor, { type: ELEMENT_OL });
|
|
14377
|
+
}
|
|
14378
|
+
},
|
|
14379
|
+
/* @__PURE__ */ React__default.createElement(Icons.ol, null)
|
|
14380
|
+
);
|
|
14381
|
+
}
|
|
14382
|
+
);
|
|
14275
14383
|
const LinkToolbarButton = withRef((rest, ref) => {
|
|
14276
14384
|
const state = useLinkToolbarButtonState();
|
|
14277
14385
|
const { props } = useLinkToolbarButton(state);
|
|
14278
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Link"
|
|
14279
|
-
});
|
|
14280
|
-
const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14281
|
-
const state = useMarkToolbarButtonState({ clear, nodeType });
|
|
14282
|
-
const { props } = useMarkToolbarButton(state);
|
|
14283
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14386
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest, tooltip: "Link" }, /* @__PURE__ */ React__default.createElement(Icons.link, null));
|
|
14284
14387
|
});
|
|
14285
14388
|
const useMermaidToolbarButtonState = () => {
|
|
14286
14389
|
const editor = useEditorState();
|
|
@@ -14361,7 +14464,7 @@ const useBlockQuoteToolbarButton = (state) => {
|
|
|
14361
14464
|
const QuoteToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
14362
14465
|
const state = useBlockQuoteToolbarButtonState();
|
|
14363
14466
|
const { props } = useBlockQuoteToolbarButton(state);
|
|
14364
|
-
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "
|
|
14467
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, tooltip: "Quote (⌘+⇧+.)", ...rest, ...props }, /* @__PURE__ */ React__default.createElement(Icons.quote, null));
|
|
14365
14468
|
});
|
|
14366
14469
|
const useRawMarkdownToolbarButton = () => {
|
|
14367
14470
|
const { setRawMode } = useEditorContext();
|
|
@@ -14381,7 +14484,7 @@ const RawMarkdownToolbarButton = withRef(({ clear, ...rest }, ref) => {
|
|
|
14381
14484
|
ToolbarButton,
|
|
14382
14485
|
{
|
|
14383
14486
|
ref,
|
|
14384
|
-
tooltip: "
|
|
14487
|
+
tooltip: "Raw Markdown",
|
|
14385
14488
|
...rest,
|
|
14386
14489
|
...props,
|
|
14387
14490
|
"data-testid": "markdown-button"
|
|
@@ -14526,7 +14629,7 @@ const EmbedButton = ({ editor, templates }) => {
|
|
|
14526
14629
|
key: template.name,
|
|
14527
14630
|
onMouseDown: (e) => {
|
|
14528
14631
|
e.preventDefault();
|
|
14529
|
-
|
|
14632
|
+
setOpen(false);
|
|
14530
14633
|
insertMDX(editor, template);
|
|
14531
14634
|
},
|
|
14532
14635
|
className: ""
|
|
@@ -14534,6 +14637,15 @@ const EmbedButton = ({ editor, templates }) => {
|
|
|
14534
14637
|
template.label || template.name
|
|
14535
14638
|
))));
|
|
14536
14639
|
};
|
|
14640
|
+
const MarkToolbarButton = withRef(({ clear, nodeType, ...rest }, ref) => {
|
|
14641
|
+
const state = useMarkToolbarButtonState({ clear, nodeType });
|
|
14642
|
+
const { props } = useMarkToolbarButton(state);
|
|
14643
|
+
return /* @__PURE__ */ React__default.createElement(ToolbarButton, { ref, ...props, ...rest });
|
|
14644
|
+
});
|
|
14645
|
+
const BoldToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Bold (⌘+B)", nodeType: MARK_BOLD }, /* @__PURE__ */ React__default.createElement(Icons.bold, null));
|
|
14646
|
+
const StrikethroughToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Strikethrough", nodeType: MARK_STRIKETHROUGH }, /* @__PURE__ */ React__default.createElement(Icons.strikethrough, null));
|
|
14647
|
+
const ItalicToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Italic (⌘+I)", nodeType: MARK_ITALIC }, /* @__PURE__ */ React__default.createElement(Icons.italic, null));
|
|
14648
|
+
const CodeToolbarButton = () => /* @__PURE__ */ React__default.createElement(MarkToolbarButton, { tooltip: "Code (⌘+E)", nodeType: MARK_CODE }, /* @__PURE__ */ React__default.createElement(Icons.code, null));
|
|
14537
14649
|
const toolbarItems = {
|
|
14538
14650
|
heading: {
|
|
14539
14651
|
label: HEADING_LABEL,
|
|
@@ -14554,32 +14666,37 @@ const toolbarItems = {
|
|
|
14554
14666
|
quote: {
|
|
14555
14667
|
label: "Quote",
|
|
14556
14668
|
width: () => STANDARD_ICON_WIDTH,
|
|
14557
|
-
Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton,
|
|
14669
|
+
Component: /* @__PURE__ */ React__default.createElement(QuoteToolbarButton, null)
|
|
14558
14670
|
},
|
|
14559
14671
|
ul: {
|
|
14560
14672
|
label: "Unordered List",
|
|
14561
14673
|
width: () => STANDARD_ICON_WIDTH,
|
|
14562
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14674
|
+
Component: /* @__PURE__ */ React__default.createElement(UnorderedListToolbarButton, null)
|
|
14563
14675
|
},
|
|
14564
14676
|
ol: {
|
|
14565
14677
|
label: "Ordered List",
|
|
14566
14678
|
width: () => STANDARD_ICON_WIDTH,
|
|
14567
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14679
|
+
Component: /* @__PURE__ */ React__default.createElement(OrderedListToolbarButton, null)
|
|
14568
14680
|
},
|
|
14569
14681
|
bold: {
|
|
14570
14682
|
label: "Bold",
|
|
14571
14683
|
width: () => STANDARD_ICON_WIDTH,
|
|
14572
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14684
|
+
Component: /* @__PURE__ */ React__default.createElement(BoldToolbarButton, null)
|
|
14685
|
+
},
|
|
14686
|
+
strikethrough: {
|
|
14687
|
+
label: "Strikethrough",
|
|
14688
|
+
width: () => STANDARD_ICON_WIDTH,
|
|
14689
|
+
Component: /* @__PURE__ */ React__default.createElement(StrikethroughToolbarButton, null)
|
|
14573
14690
|
},
|
|
14574
14691
|
italic: {
|
|
14575
14692
|
label: "Italic",
|
|
14576
14693
|
width: () => STANDARD_ICON_WIDTH,
|
|
14577
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14694
|
+
Component: /* @__PURE__ */ React__default.createElement(ItalicToolbarButton, null)
|
|
14578
14695
|
},
|
|
14579
14696
|
code: {
|
|
14580
14697
|
label: "Code",
|
|
14581
14698
|
width: () => STANDARD_ICON_WIDTH,
|
|
14582
|
-
Component: /* @__PURE__ */ React__default.createElement(
|
|
14699
|
+
Component: /* @__PURE__ */ React__default.createElement(CodeToolbarButton, null)
|
|
14583
14700
|
},
|
|
14584
14701
|
codeBlock: {
|
|
14585
14702
|
label: "Code Block",
|
|
@@ -14612,7 +14729,12 @@ function FixedToolbarButtons() {
|
|
|
14612
14729
|
const [itemsShown, setItemsShown] = React__default.useState(11);
|
|
14613
14730
|
const { overrides, templates } = useToolbarContext();
|
|
14614
14731
|
const showEmbedButton = templates.length > 0;
|
|
14615
|
-
let items2 =
|
|
14732
|
+
let items2 = [];
|
|
14733
|
+
if (Array.isArray(overrides)) {
|
|
14734
|
+
items2 = overrides === void 0 ? Object.values(toolbarItems) : overrides.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14735
|
+
} else {
|
|
14736
|
+
items2 = (overrides == null ? void 0 : overrides.toolbar) === void 0 ? Object.values(toolbarItems) : overrides.toolbar.map((item) => toolbarItems[item]).filter((item) => item !== void 0);
|
|
14737
|
+
}
|
|
14616
14738
|
if (!showEmbedButton) {
|
|
14617
14739
|
items2 = items2.filter((item) => item.label !== toolbarItems.embed.label);
|
|
14618
14740
|
}
|
|
@@ -14940,6 +15062,9 @@ const isUrl = (string) => {
|
|
|
14940
15062
|
if (typeof string !== "string") {
|
|
14941
15063
|
return false;
|
|
14942
15064
|
}
|
|
15065
|
+
if (string.startsWith("#")) {
|
|
15066
|
+
return true;
|
|
15067
|
+
}
|
|
14943
15068
|
const generalMatch = string.match(protocolAndDomainRE);
|
|
14944
15069
|
const emailLinkMatch = string.match(emailLintRE);
|
|
14945
15070
|
const localUrlMatch = string.match(localUrlRE);
|
|
@@ -14961,12 +15086,12 @@ const isUrl = (string) => {
|
|
|
14961
15086
|
}
|
|
14962
15087
|
return localhostDomainRE.test(everythingAfterProtocol) || nonLocalhostDomainRE.test(everythingAfterProtocol);
|
|
14963
15088
|
};
|
|
14964
|
-
const RichEditor = (
|
|
15089
|
+
const RichEditor = ({ input, tinaForm, field }) => {
|
|
14965
15090
|
var _a;
|
|
14966
15091
|
const initialValue = React__default.useMemo(
|
|
14967
15092
|
() => {
|
|
14968
15093
|
var _a2, _b;
|
|
14969
|
-
return ((_b = (_a2 =
|
|
15094
|
+
return ((_b = (_a2 = input.value) == null ? void 0 : _a2.children) == null ? void 0 : _b.length) ? input.value.children.map(helpers.normalize) : [{ type: "p", children: [{ type: "text", text: "" }] }];
|
|
14970
15095
|
},
|
|
14971
15096
|
[]
|
|
14972
15097
|
);
|
|
@@ -14994,7 +15119,7 @@ const RichEditor = (props) => {
|
|
|
14994
15119
|
),
|
|
14995
15120
|
[]
|
|
14996
15121
|
);
|
|
14997
|
-
const tempId = [
|
|
15122
|
+
const tempId = [tinaForm.id, input.name].join(".");
|
|
14998
15123
|
const id = React__default.useMemo(() => uuid() + tempId, [tempId]);
|
|
14999
15124
|
const ref = React__default.useRef(null);
|
|
15000
15125
|
React__default.useEffect(() => {
|
|
@@ -15004,13 +15129,13 @@ const RichEditor = (props) => {
|
|
|
15004
15129
|
const plateElement = (_a2 = ref.current) == null ? void 0 : _a2.querySelector(
|
|
15005
15130
|
'[role="textbox"]'
|
|
15006
15131
|
);
|
|
15007
|
-
if (
|
|
15132
|
+
if (field.experimental_focusIntent && plateElement) {
|
|
15008
15133
|
if (plateElement)
|
|
15009
15134
|
plateElement.focus();
|
|
15010
15135
|
}
|
|
15011
15136
|
}, 100);
|
|
15012
15137
|
}
|
|
15013
|
-
}, [
|
|
15138
|
+
}, [field.experimental_focusIntent, ref]);
|
|
15014
15139
|
return /* @__PURE__ */ React__default.createElement("div", { ref }, /* @__PURE__ */ React__default.createElement(
|
|
15015
15140
|
Plate,
|
|
15016
15141
|
{
|
|
@@ -15018,7 +15143,7 @@ const RichEditor = (props) => {
|
|
|
15018
15143
|
initialValue,
|
|
15019
15144
|
plugins: plugins$2,
|
|
15020
15145
|
onChange: (value) => {
|
|
15021
|
-
|
|
15146
|
+
input.onChange({
|
|
15022
15147
|
type: "root",
|
|
15023
15148
|
children: value
|
|
15024
15149
|
});
|
|
@@ -15027,12 +15152,12 @@ const RichEditor = (props) => {
|
|
|
15027
15152
|
/* @__PURE__ */ React__default.createElement(TooltipProvider, null, /* @__PURE__ */ React__default.createElement(
|
|
15028
15153
|
ToolbarProvider,
|
|
15029
15154
|
{
|
|
15030
|
-
tinaForm
|
|
15031
|
-
templates:
|
|
15032
|
-
overrides: (
|
|
15155
|
+
tinaForm,
|
|
15156
|
+
templates: field.templates,
|
|
15157
|
+
overrides: (field == null ? void 0 : field.toolbarOverride) ? field.toolbarOverride : field.overrides
|
|
15033
15158
|
},
|
|
15034
15159
|
/* @__PURE__ */ React__default.createElement(FixedToolbar, null, /* @__PURE__ */ React__default.createElement(FixedToolbarButtons, null)),
|
|
15035
|
-
/* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null))
|
|
15160
|
+
((_a = field == null ? void 0 : field.overrides) == null ? void 0 : _a.showFloatingToolbar) !== false ? /* @__PURE__ */ React__default.createElement(FloatingToolbar, null, /* @__PURE__ */ React__default.createElement(FloatingToolbarButtons, null)) : null
|
|
15036
15161
|
), /* @__PURE__ */ React__default.createElement(Editor, null))
|
|
15037
15162
|
));
|
|
15038
15163
|
};
|
|
@@ -16220,132 +16345,1209 @@ const ben = [
|
|
|
16220
16345
|
"হয়"
|
|
16221
16346
|
];
|
|
16222
16347
|
const bre = [
|
|
16348
|
+
"'blam",
|
|
16349
|
+
"'d",
|
|
16350
|
+
"'m",
|
|
16351
|
+
"'r",
|
|
16352
|
+
"'ta",
|
|
16353
|
+
"'vat",
|
|
16354
|
+
"'z",
|
|
16355
|
+
"'zo",
|
|
16223
16356
|
"a",
|
|
16224
|
-
"
|
|
16225
|
-
"
|
|
16226
|
-
"
|
|
16227
|
-
"
|
|
16228
|
-
"
|
|
16229
|
-
"
|
|
16230
|
-
"
|
|
16231
|
-
"
|
|
16232
|
-
"
|
|
16233
|
-
"
|
|
16234
|
-
"
|
|
16235
|
-
"
|
|
16236
|
-
"
|
|
16237
|
-
"
|
|
16238
|
-
"
|
|
16239
|
-
"
|
|
16240
|
-
"
|
|
16241
|
-
"
|
|
16242
|
-
"
|
|
16243
|
-
"
|
|
16244
|
-
"
|
|
16357
|
+
"a:",
|
|
16358
|
+
"aba",
|
|
16359
|
+
"abalamour",
|
|
16360
|
+
"abaoe",
|
|
16361
|
+
"ac'hane",
|
|
16362
|
+
"ac'hanoc'h",
|
|
16363
|
+
"ac'hanomp",
|
|
16364
|
+
"ac'hanon",
|
|
16365
|
+
"ac'hanout",
|
|
16366
|
+
"adal",
|
|
16367
|
+
"adalek",
|
|
16368
|
+
"adarre",
|
|
16369
|
+
"ae",
|
|
16370
|
+
"aec'h",
|
|
16371
|
+
"aed",
|
|
16372
|
+
"aemp",
|
|
16373
|
+
"aen",
|
|
16374
|
+
"aent",
|
|
16375
|
+
"aes",
|
|
16376
|
+
"afe",
|
|
16377
|
+
"afec'h",
|
|
16378
|
+
"afed",
|
|
16379
|
+
"afemp",
|
|
16380
|
+
"afen",
|
|
16381
|
+
"afent",
|
|
16382
|
+
"afes",
|
|
16383
|
+
"ag",
|
|
16384
|
+
"ah",
|
|
16385
|
+
"aimp",
|
|
16386
|
+
"aint",
|
|
16387
|
+
"aio",
|
|
16388
|
+
"aiou",
|
|
16389
|
+
"aje",
|
|
16390
|
+
"ajec'h",
|
|
16391
|
+
"ajed",
|
|
16392
|
+
"ajemp",
|
|
16393
|
+
"ajen",
|
|
16394
|
+
"ajent",
|
|
16395
|
+
"ajes",
|
|
16396
|
+
"al",
|
|
16397
|
+
"alato",
|
|
16398
|
+
"alies",
|
|
16399
|
+
"aliesañ",
|
|
16400
|
+
"alkent",
|
|
16401
|
+
"all",
|
|
16402
|
+
"allas",
|
|
16403
|
+
"allo",
|
|
16404
|
+
"allô",
|
|
16405
|
+
"am",
|
|
16406
|
+
"amañ",
|
|
16407
|
+
"amzer",
|
|
16408
|
+
"an",
|
|
16409
|
+
"anezhañ",
|
|
16410
|
+
"anezhe",
|
|
16411
|
+
"anezhi",
|
|
16412
|
+
"anezho",
|
|
16413
|
+
"anvet",
|
|
16414
|
+
"aon",
|
|
16415
|
+
"aotren",
|
|
16416
|
+
"ar",
|
|
16417
|
+
"arall",
|
|
16418
|
+
"araok",
|
|
16419
|
+
"araoki",
|
|
16420
|
+
"araozañ",
|
|
16421
|
+
"araozo",
|
|
16422
|
+
"araozoc'h",
|
|
16423
|
+
"araozomp",
|
|
16424
|
+
"araozon",
|
|
16425
|
+
"araozor",
|
|
16426
|
+
"araozout",
|
|
16427
|
+
"arbenn",
|
|
16428
|
+
"arre",
|
|
16429
|
+
"atalek",
|
|
16430
|
+
"atav",
|
|
16431
|
+
"az",
|
|
16432
|
+
"azalek",
|
|
16433
|
+
"azirazañ",
|
|
16434
|
+
"azirazi",
|
|
16435
|
+
"azirazo",
|
|
16436
|
+
"azirazoc'h",
|
|
16437
|
+
"azirazomp",
|
|
16438
|
+
"azirazon",
|
|
16439
|
+
"azirazor",
|
|
16440
|
+
"azirazout",
|
|
16441
|
+
"b:",
|
|
16442
|
+
"ba",
|
|
16443
|
+
"ba'l",
|
|
16444
|
+
"ba'n",
|
|
16445
|
+
"ba'r",
|
|
16446
|
+
"bad",
|
|
16447
|
+
"bah",
|
|
16448
|
+
"bal",
|
|
16449
|
+
"ban",
|
|
16450
|
+
"bar",
|
|
16451
|
+
"bastañ",
|
|
16452
|
+
"befe",
|
|
16453
|
+
"bell",
|
|
16454
|
+
"benaos",
|
|
16455
|
+
"benn",
|
|
16456
|
+
"bennag",
|
|
16457
|
+
"bennak",
|
|
16458
|
+
"bennozh",
|
|
16459
|
+
"bep",
|
|
16460
|
+
"bepred",
|
|
16461
|
+
"berr",
|
|
16462
|
+
"berzh",
|
|
16463
|
+
"bet",
|
|
16464
|
+
"betek",
|
|
16465
|
+
"betra",
|
|
16466
|
+
"bev",
|
|
16467
|
+
"bevet",
|
|
16468
|
+
"bez",
|
|
16469
|
+
"bezañ",
|
|
16470
|
+
"beze",
|
|
16471
|
+
"bezent",
|
|
16472
|
+
"bezet",
|
|
16473
|
+
"bezh",
|
|
16474
|
+
"bezit",
|
|
16475
|
+
"bezomp",
|
|
16476
|
+
"bihan",
|
|
16477
|
+
"bije",
|
|
16478
|
+
"biou",
|
|
16479
|
+
"biskoazh",
|
|
16480
|
+
"blam",
|
|
16481
|
+
"bo",
|
|
16482
|
+
"boa",
|
|
16483
|
+
"bominapl",
|
|
16484
|
+
"boudoudom",
|
|
16485
|
+
"bouez",
|
|
16486
|
+
"boull",
|
|
16487
|
+
"boum",
|
|
16488
|
+
"bout",
|
|
16489
|
+
"bras",
|
|
16490
|
+
"brasañ",
|
|
16491
|
+
"brav",
|
|
16492
|
+
"bravo",
|
|
16493
|
+
"bremañ",
|
|
16494
|
+
"bres",
|
|
16495
|
+
"brokenn",
|
|
16496
|
+
"bronn",
|
|
16497
|
+
"brrr",
|
|
16498
|
+
"brutal",
|
|
16499
|
+
"buhezek",
|
|
16500
|
+
"c'h:",
|
|
16501
|
+
"c'haout",
|
|
16502
|
+
"c'he",
|
|
16503
|
+
"c'hem",
|
|
16504
|
+
"c'herz",
|
|
16505
|
+
"c'heñver",
|
|
16506
|
+
"c'hichen",
|
|
16507
|
+
"c'hiz",
|
|
16508
|
+
"c'hoazh",
|
|
16509
|
+
"c'horre",
|
|
16510
|
+
"c'houde",
|
|
16511
|
+
"c'houst",
|
|
16512
|
+
"c'hreiz",
|
|
16513
|
+
"c'hwec'h",
|
|
16514
|
+
"c'hwec'hvet",
|
|
16515
|
+
"c'hwezek",
|
|
16516
|
+
"c'hwi",
|
|
16517
|
+
"ch:",
|
|
16518
|
+
"chaous",
|
|
16519
|
+
"chik",
|
|
16520
|
+
"chit",
|
|
16521
|
+
"chom",
|
|
16522
|
+
"chut",
|
|
16523
|
+
"d'",
|
|
16524
|
+
"d'al",
|
|
16525
|
+
"d'an",
|
|
16526
|
+
"d'ar",
|
|
16527
|
+
"d'az",
|
|
16528
|
+
"d'e",
|
|
16529
|
+
"d'he",
|
|
16530
|
+
"d'ho",
|
|
16531
|
+
"d'hol",
|
|
16532
|
+
"d'hon",
|
|
16533
|
+
"d'hor",
|
|
16534
|
+
"d'o",
|
|
16535
|
+
"d'ober",
|
|
16536
|
+
"d'ul",
|
|
16537
|
+
"d'un",
|
|
16538
|
+
"d'ur",
|
|
16539
|
+
"d:",
|
|
16245
16540
|
"da",
|
|
16246
|
-
"
|
|
16247
|
-
"
|
|
16248
|
-
"
|
|
16249
|
-
"
|
|
16250
|
-
"
|
|
16251
|
-
"
|
|
16252
|
-
"
|
|
16253
|
-
"
|
|
16254
|
-
"
|
|
16255
|
-
"
|
|
16256
|
-
"
|
|
16257
|
-
"
|
|
16258
|
-
"
|
|
16259
|
-
"
|
|
16260
|
-
"
|
|
16541
|
+
"dak",
|
|
16542
|
+
"daka",
|
|
16543
|
+
"dal",
|
|
16544
|
+
"dalbezh",
|
|
16545
|
+
"dalc'hmat",
|
|
16546
|
+
"dalit",
|
|
16547
|
+
"damdost",
|
|
16548
|
+
"damheñvel",
|
|
16549
|
+
"damm",
|
|
16550
|
+
"dan",
|
|
16551
|
+
"danvez",
|
|
16552
|
+
"dao",
|
|
16553
|
+
"daol",
|
|
16554
|
+
"daonet",
|
|
16555
|
+
"daou",
|
|
16556
|
+
"daoust",
|
|
16557
|
+
"daouzek",
|
|
16558
|
+
"daouzekvet",
|
|
16559
|
+
"darn",
|
|
16560
|
+
"dastrewiñ",
|
|
16561
|
+
"dav",
|
|
16562
|
+
"davedoc'h",
|
|
16563
|
+
"davedomp",
|
|
16564
|
+
"davedon",
|
|
16565
|
+
"davedor",
|
|
16566
|
+
"davedout",
|
|
16567
|
+
"davet",
|
|
16568
|
+
"davetañ",
|
|
16569
|
+
"davete",
|
|
16570
|
+
"daveti",
|
|
16571
|
+
"daveto",
|
|
16572
|
+
"defe",
|
|
16573
|
+
"dehou",
|
|
16574
|
+
"dek",
|
|
16575
|
+
"dekvet",
|
|
16576
|
+
"den",
|
|
16577
|
+
"deoc'h",
|
|
16578
|
+
"deomp",
|
|
16579
|
+
"deor",
|
|
16580
|
+
"derc'hel",
|
|
16581
|
+
"deus",
|
|
16582
|
+
"dez",
|
|
16583
|
+
"deze",
|
|
16584
|
+
"dezhañ",
|
|
16585
|
+
"dezhe",
|
|
16586
|
+
"dezhi",
|
|
16587
|
+
"dezho",
|
|
16588
|
+
"di",
|
|
16589
|
+
"diabarzh",
|
|
16590
|
+
"diagent",
|
|
16591
|
+
"diar",
|
|
16592
|
+
"diaraok",
|
|
16593
|
+
"diavaez",
|
|
16594
|
+
"dibaoe",
|
|
16595
|
+
"dibaot",
|
|
16596
|
+
"dibar",
|
|
16597
|
+
"dic'halañ",
|
|
16598
|
+
"didiac'h",
|
|
16599
|
+
"dienn",
|
|
16600
|
+
"difer",
|
|
16601
|
+
"diganeoc'h",
|
|
16602
|
+
"diganeomp",
|
|
16603
|
+
"diganeor",
|
|
16604
|
+
"diganimp",
|
|
16605
|
+
"diganin",
|
|
16606
|
+
"diganit",
|
|
16607
|
+
"digant",
|
|
16608
|
+
"digantañ",
|
|
16609
|
+
"digante",
|
|
16610
|
+
"diganti",
|
|
16611
|
+
"diganto",
|
|
16612
|
+
"digemmesk",
|
|
16613
|
+
"diget",
|
|
16614
|
+
"digor",
|
|
16615
|
+
"digoret",
|
|
16616
|
+
"dija",
|
|
16617
|
+
"dije",
|
|
16618
|
+
"dimp",
|
|
16619
|
+
"din",
|
|
16620
|
+
"dinaou",
|
|
16621
|
+
"dindan",
|
|
16622
|
+
"dindanañ",
|
|
16623
|
+
"dindani",
|
|
16624
|
+
"dindano",
|
|
16625
|
+
"dindanoc'h",
|
|
16626
|
+
"dindanomp",
|
|
16627
|
+
"dindanon",
|
|
16628
|
+
"dindanor",
|
|
16629
|
+
"dindanout",
|
|
16630
|
+
"dioutañ",
|
|
16631
|
+
"dioute",
|
|
16632
|
+
"diouti",
|
|
16633
|
+
"diouto",
|
|
16634
|
+
"diouzh",
|
|
16635
|
+
"diouzhin",
|
|
16636
|
+
"diouzhit",
|
|
16637
|
+
"diouzhoc'h",
|
|
16638
|
+
"diouzhomp",
|
|
16639
|
+
"diouzhor",
|
|
16640
|
+
"dirak",
|
|
16641
|
+
"dirazañ",
|
|
16642
|
+
"dirazi",
|
|
16643
|
+
"dirazo",
|
|
16644
|
+
"dirazoc'h",
|
|
16645
|
+
"dirazomp",
|
|
16646
|
+
"dirazon",
|
|
16647
|
+
"dirazor",
|
|
16648
|
+
"dirazout",
|
|
16649
|
+
"disheñvel",
|
|
16650
|
+
"dispar",
|
|
16651
|
+
"distank",
|
|
16652
|
+
"dister",
|
|
16653
|
+
"disterañ",
|
|
16654
|
+
"disterig",
|
|
16655
|
+
"distro",
|
|
16656
|
+
"dit",
|
|
16657
|
+
"divaez",
|
|
16658
|
+
"diwar",
|
|
16659
|
+
"diwezhat",
|
|
16660
|
+
"diwezhañ",
|
|
16261
16661
|
"do",
|
|
16262
|
-
"
|
|
16263
|
-
"
|
|
16662
|
+
"doa",
|
|
16663
|
+
"doare",
|
|
16664
|
+
"dont",
|
|
16665
|
+
"dost",
|
|
16666
|
+
"doue",
|
|
16667
|
+
"douetus",
|
|
16668
|
+
"douez",
|
|
16669
|
+
"doug",
|
|
16670
|
+
"draou",
|
|
16671
|
+
"draoñ",
|
|
16672
|
+
"dre",
|
|
16673
|
+
"drede",
|
|
16674
|
+
"dreist",
|
|
16675
|
+
"dreistañ",
|
|
16676
|
+
"dreisti",
|
|
16677
|
+
"dreisto",
|
|
16678
|
+
"dreistoc'h",
|
|
16679
|
+
"dreistomp",
|
|
16680
|
+
"dreiston",
|
|
16681
|
+
"dreistor",
|
|
16682
|
+
"dreistout",
|
|
16683
|
+
"drek",
|
|
16684
|
+
"dreñv",
|
|
16685
|
+
"dring",
|
|
16686
|
+
"dro",
|
|
16687
|
+
"du",
|
|
16264
16688
|
"e",
|
|
16265
|
-
"
|
|
16266
|
-
"
|
|
16267
|
-
"
|
|
16268
|
-
"
|
|
16689
|
+
"e:",
|
|
16690
|
+
"eas",
|
|
16691
|
+
"ebet",
|
|
16692
|
+
"ec'h",
|
|
16693
|
+
"edo",
|
|
16694
|
+
"edoc'h",
|
|
16695
|
+
"edod",
|
|
16696
|
+
"edomp",
|
|
16697
|
+
"edon",
|
|
16698
|
+
"edont",
|
|
16699
|
+
"edos",
|
|
16700
|
+
"eer",
|
|
16701
|
+
"eeun",
|
|
16702
|
+
"efed",
|
|
16703
|
+
"egedoc'h",
|
|
16704
|
+
"egedomp",
|
|
16705
|
+
"egedon",
|
|
16706
|
+
"egedor",
|
|
16707
|
+
"egedout",
|
|
16708
|
+
"eget",
|
|
16709
|
+
"egetañ",
|
|
16710
|
+
"egete",
|
|
16711
|
+
"egeti",
|
|
16712
|
+
"egeto",
|
|
16713
|
+
"eh",
|
|
16714
|
+
"eil",
|
|
16715
|
+
"eilvet",
|
|
16716
|
+
"eizh",
|
|
16717
|
+
"eizhvet",
|
|
16718
|
+
"ejoc'h",
|
|
16719
|
+
"ejod",
|
|
16720
|
+
"ejomp",
|
|
16721
|
+
"ejont",
|
|
16722
|
+
"ejout",
|
|
16723
|
+
"el",
|
|
16269
16724
|
"em",
|
|
16270
|
-
"
|
|
16271
|
-
"
|
|
16272
|
-
"
|
|
16273
|
-
"
|
|
16274
|
-
"
|
|
16275
|
-
"
|
|
16276
|
-
"
|
|
16277
|
-
"
|
|
16278
|
-
"
|
|
16279
|
-
"
|
|
16725
|
+
"emaint",
|
|
16726
|
+
"emaoc'h",
|
|
16727
|
+
"emaomp",
|
|
16728
|
+
"emaon",
|
|
16729
|
+
"emaout",
|
|
16730
|
+
"emañ",
|
|
16731
|
+
"eme",
|
|
16732
|
+
"emeur",
|
|
16733
|
+
"emezañ",
|
|
16734
|
+
"emezi",
|
|
16735
|
+
"emezo",
|
|
16736
|
+
"emezoc'h",
|
|
16737
|
+
"emezomp",
|
|
16738
|
+
"emezon",
|
|
16739
|
+
"emezout",
|
|
16740
|
+
"emporzhiañ",
|
|
16741
|
+
"en",
|
|
16742
|
+
"end",
|
|
16743
|
+
"endan",
|
|
16744
|
+
"endra",
|
|
16745
|
+
"enep",
|
|
16746
|
+
"ennañ",
|
|
16747
|
+
"enni",
|
|
16748
|
+
"enno",
|
|
16749
|
+
"ennoc'h",
|
|
16750
|
+
"ennomp",
|
|
16751
|
+
"ennon",
|
|
16752
|
+
"ennor",
|
|
16753
|
+
"ennout",
|
|
16754
|
+
"enta",
|
|
16755
|
+
"eo",
|
|
16756
|
+
"eomp",
|
|
16757
|
+
"eont",
|
|
16758
|
+
"eor",
|
|
16759
|
+
"eot",
|
|
16760
|
+
"er",
|
|
16761
|
+
"erbet",
|
|
16762
|
+
"erfin",
|
|
16763
|
+
"esa",
|
|
16764
|
+
"esae",
|
|
16765
|
+
"espar",
|
|
16766
|
+
"estlamm",
|
|
16767
|
+
"estrañj",
|
|
16768
|
+
"eta",
|
|
16769
|
+
"etre",
|
|
16770
|
+
"etreoc'h",
|
|
16771
|
+
"etrezo",
|
|
16772
|
+
"etrezoc'h",
|
|
16773
|
+
"etrezomp",
|
|
16774
|
+
"etrezor",
|
|
16775
|
+
"euh",
|
|
16776
|
+
"eur",
|
|
16777
|
+
"eus",
|
|
16778
|
+
"evel",
|
|
16779
|
+
"evelato",
|
|
16780
|
+
"eveldoc'h",
|
|
16781
|
+
"eveldomp",
|
|
16782
|
+
"eveldon",
|
|
16783
|
+
"eveldor",
|
|
16784
|
+
"eveldout",
|
|
16785
|
+
"evelkent",
|
|
16786
|
+
"eveltañ",
|
|
16787
|
+
"evelte",
|
|
16788
|
+
"evelti",
|
|
16789
|
+
"evelto",
|
|
16790
|
+
"evidoc'h",
|
|
16791
|
+
"evidomp",
|
|
16792
|
+
"evidon",
|
|
16793
|
+
"evidor",
|
|
16794
|
+
"evidout",
|
|
16795
|
+
"evit",
|
|
16796
|
+
"evitañ",
|
|
16797
|
+
"evite",
|
|
16798
|
+
"eviti",
|
|
16799
|
+
"evito",
|
|
16800
|
+
"ez",
|
|
16801
|
+
"eñ",
|
|
16802
|
+
"f:",
|
|
16803
|
+
"fac'h",
|
|
16804
|
+
"fall",
|
|
16805
|
+
"fed",
|
|
16806
|
+
"feiz",
|
|
16807
|
+
"fenn",
|
|
16808
|
+
"fezh",
|
|
16809
|
+
"fin",
|
|
16810
|
+
"finsalvet",
|
|
16811
|
+
"foei",
|
|
16812
|
+
"fouilhezañ",
|
|
16813
|
+
"g:",
|
|
16814
|
+
"gallout",
|
|
16815
|
+
"ganeoc'h",
|
|
16816
|
+
"ganeomp",
|
|
16817
|
+
"ganin",
|
|
16818
|
+
"ganit",
|
|
16819
|
+
"gant",
|
|
16820
|
+
"gantañ",
|
|
16821
|
+
"ganti",
|
|
16822
|
+
"ganto",
|
|
16823
|
+
"gaout",
|
|
16824
|
+
"gast",
|
|
16825
|
+
"gein",
|
|
16826
|
+
"gellout",
|
|
16827
|
+
"genndost",
|
|
16828
|
+
"gentañ",
|
|
16829
|
+
"ger",
|
|
16830
|
+
"gerz",
|
|
16831
|
+
"get",
|
|
16832
|
+
"geñver",
|
|
16833
|
+
"gichen",
|
|
16834
|
+
"gin",
|
|
16835
|
+
"giz",
|
|
16836
|
+
"glan",
|
|
16837
|
+
"gloev",
|
|
16838
|
+
"goll",
|
|
16839
|
+
"gorre",
|
|
16840
|
+
"goude",
|
|
16841
|
+
"gouez",
|
|
16842
|
+
"gouezit",
|
|
16843
|
+
"gouezomp",
|
|
16844
|
+
"goulz",
|
|
16845
|
+
"gounnar",
|
|
16846
|
+
"gour",
|
|
16847
|
+
"goust",
|
|
16848
|
+
"gouze",
|
|
16849
|
+
"gouzout",
|
|
16850
|
+
"gra",
|
|
16851
|
+
"grak",
|
|
16852
|
+
"grec'h",
|
|
16853
|
+
"greiz",
|
|
16854
|
+
"grenn",
|
|
16855
|
+
"greomp",
|
|
16856
|
+
"grit",
|
|
16857
|
+
"groñs",
|
|
16858
|
+
"gutez",
|
|
16859
|
+
"gwall",
|
|
16860
|
+
"gwashoc'h",
|
|
16861
|
+
"gwazh",
|
|
16862
|
+
"gwech",
|
|
16863
|
+
"gwechall",
|
|
16864
|
+
"gwechoù",
|
|
16865
|
+
"gwell",
|
|
16866
|
+
"gwezh",
|
|
16867
|
+
"gwezhall",
|
|
16868
|
+
"gwezharall",
|
|
16869
|
+
"gwezhoù",
|
|
16870
|
+
"gwig",
|
|
16871
|
+
"gwirionez",
|
|
16872
|
+
"gwitibunan",
|
|
16873
|
+
"gêr",
|
|
16874
|
+
"h:",
|
|
16280
16875
|
"ha",
|
|
16281
|
-
"
|
|
16282
|
-
"
|
|
16283
|
-
"
|
|
16284
|
-
"
|
|
16285
|
-
"
|
|
16286
|
-
"
|
|
16287
|
-
"
|
|
16288
|
-
"
|
|
16289
|
-
"
|
|
16290
|
-
"
|
|
16291
|
-
"
|
|
16876
|
+
"hag",
|
|
16877
|
+
"han",
|
|
16878
|
+
"hanter",
|
|
16879
|
+
"hanterc'hantad",
|
|
16880
|
+
"hanterkantved",
|
|
16881
|
+
"harz",
|
|
16882
|
+
"hañ",
|
|
16883
|
+
"hañval",
|
|
16884
|
+
"he",
|
|
16885
|
+
"hebioù",
|
|
16886
|
+
"hec'h",
|
|
16887
|
+
"hei",
|
|
16888
|
+
"hein",
|
|
16889
|
+
"hem",
|
|
16890
|
+
"hemañ",
|
|
16891
|
+
"hen",
|
|
16892
|
+
"hend",
|
|
16893
|
+
"henhont",
|
|
16894
|
+
"henn",
|
|
16895
|
+
"hennezh",
|
|
16896
|
+
"hent",
|
|
16897
|
+
"hep",
|
|
16898
|
+
"hervez",
|
|
16899
|
+
"hervezañ",
|
|
16900
|
+
"hervezi",
|
|
16901
|
+
"hervezo",
|
|
16902
|
+
"hervezoc'h",
|
|
16903
|
+
"hervezomp",
|
|
16904
|
+
"hervezon",
|
|
16905
|
+
"hervezor",
|
|
16906
|
+
"hervezout",
|
|
16907
|
+
"heul",
|
|
16908
|
+
"heuliañ",
|
|
16909
|
+
"hevelep",
|
|
16910
|
+
"heverk",
|
|
16911
|
+
"heñvel",
|
|
16912
|
+
"heñvelat",
|
|
16913
|
+
"heñvelañ",
|
|
16914
|
+
"heñveliñ",
|
|
16915
|
+
"heñveloc'h",
|
|
16916
|
+
"heñvelout",
|
|
16917
|
+
"hi",
|
|
16918
|
+
"hilh",
|
|
16919
|
+
"hini",
|
|
16920
|
+
"hirie",
|
|
16921
|
+
"hirio",
|
|
16922
|
+
"hiziv",
|
|
16923
|
+
"hiziviken",
|
|
16924
|
+
"ho",
|
|
16925
|
+
"hoaliñ",
|
|
16926
|
+
"hoc'h",
|
|
16927
|
+
"hogen",
|
|
16928
|
+
"hogos",
|
|
16929
|
+
"hogozik",
|
|
16930
|
+
"hol",
|
|
16931
|
+
"holl",
|
|
16932
|
+
"holà",
|
|
16933
|
+
"homañ",
|
|
16934
|
+
"hon",
|
|
16935
|
+
"honhont",
|
|
16936
|
+
"honnezh",
|
|
16937
|
+
"hont",
|
|
16938
|
+
"hop",
|
|
16939
|
+
"hopala",
|
|
16940
|
+
"hor",
|
|
16941
|
+
"hou",
|
|
16942
|
+
"houp",
|
|
16943
|
+
"hudu",
|
|
16944
|
+
"hue",
|
|
16945
|
+
"hui",
|
|
16946
|
+
"hum",
|
|
16947
|
+
"hurrah",
|
|
16948
|
+
"i",
|
|
16949
|
+
"i:",
|
|
16950
|
+
"in",
|
|
16951
|
+
"int",
|
|
16952
|
+
"is",
|
|
16953
|
+
"ispisial",
|
|
16954
|
+
"isurzhiet",
|
|
16955
|
+
"it",
|
|
16956
|
+
"ivez",
|
|
16957
|
+
"izelañ",
|
|
16958
|
+
"j:",
|
|
16959
|
+
"just",
|
|
16960
|
+
"k:",
|
|
16961
|
+
"kae",
|
|
16962
|
+
"kaer",
|
|
16963
|
+
"kalon",
|
|
16964
|
+
"kalz",
|
|
16965
|
+
"kant",
|
|
16966
|
+
"kaout",
|
|
16967
|
+
"kar",
|
|
16968
|
+
"kazi",
|
|
16969
|
+
"keid",
|
|
16970
|
+
"kein",
|
|
16971
|
+
"keit",
|
|
16972
|
+
"kel",
|
|
16973
|
+
"kellies",
|
|
16974
|
+
"keloù",
|
|
16975
|
+
"kement",
|
|
16976
|
+
"ken",
|
|
16977
|
+
"kenkent",
|
|
16978
|
+
"kenkoulz",
|
|
16979
|
+
"kenment",
|
|
16980
|
+
"kent",
|
|
16981
|
+
"kentañ",
|
|
16982
|
+
"kentizh",
|
|
16983
|
+
"kentoc'h",
|
|
16984
|
+
"kentre",
|
|
16985
|
+
"ker",
|
|
16986
|
+
"kerkent",
|
|
16987
|
+
"kerz",
|
|
16988
|
+
"kerzh",
|
|
16989
|
+
"ket",
|
|
16990
|
+
"keta",
|
|
16991
|
+
"keñver",
|
|
16992
|
+
"keñverel",
|
|
16993
|
+
"keñverius",
|
|
16994
|
+
"kichen",
|
|
16995
|
+
"kichenik",
|
|
16996
|
+
"kit",
|
|
16997
|
+
"kiz",
|
|
16998
|
+
"klak",
|
|
16999
|
+
"klek",
|
|
17000
|
+
"klik",
|
|
17001
|
+
"komprenet",
|
|
17002
|
+
"komz",
|
|
17003
|
+
"kont",
|
|
17004
|
+
"korf",
|
|
17005
|
+
"korre",
|
|
17006
|
+
"koulskoude",
|
|
17007
|
+
"koulz",
|
|
17008
|
+
"koust",
|
|
17009
|
+
"krak",
|
|
17010
|
+
"krampouezh",
|
|
17011
|
+
"krec'h",
|
|
17012
|
+
"kreiz",
|
|
17013
|
+
"kuit",
|
|
17014
|
+
"kwir",
|
|
17015
|
+
"l:",
|
|
17016
|
+
"la",
|
|
17017
|
+
"laez",
|
|
17018
|
+
"laoskel",
|
|
17019
|
+
"laouen",
|
|
17020
|
+
"lavar",
|
|
17021
|
+
"lavaret",
|
|
17022
|
+
"lavarout",
|
|
17023
|
+
"lec'h",
|
|
17024
|
+
"lein",
|
|
17025
|
+
"leizh",
|
|
17026
|
+
"lerc'h",
|
|
17027
|
+
"leun",
|
|
17028
|
+
"leuskel",
|
|
17029
|
+
"lew",
|
|
17030
|
+
"lies",
|
|
17031
|
+
"liesañ",
|
|
17032
|
+
"lod",
|
|
17033
|
+
"lusk",
|
|
17034
|
+
"lâr",
|
|
17035
|
+
"lârout",
|
|
17036
|
+
"m:",
|
|
17037
|
+
"ma",
|
|
17038
|
+
"ma'z",
|
|
17039
|
+
"mac'h",
|
|
17040
|
+
"mac'hat",
|
|
17041
|
+
"mac'hañ",
|
|
17042
|
+
"mac'hoc'h",
|
|
17043
|
+
"mad",
|
|
17044
|
+
"maez",
|
|
17045
|
+
"maksimal",
|
|
17046
|
+
"mann",
|
|
17047
|
+
"mar",
|
|
17048
|
+
"mard",
|
|
17049
|
+
"marg",
|
|
17050
|
+
"marzh",
|
|
17051
|
+
"mat",
|
|
17052
|
+
"mañ",
|
|
17053
|
+
"me",
|
|
17054
|
+
"memes",
|
|
17055
|
+
"memestra",
|
|
17056
|
+
"merkapl",
|
|
17057
|
+
"mersi",
|
|
17058
|
+
"mes",
|
|
17059
|
+
"mesk",
|
|
17060
|
+
"met",
|
|
17061
|
+
"meur",
|
|
17062
|
+
"mil",
|
|
17063
|
+
"minimal",
|
|
17064
|
+
"moan",
|
|
17065
|
+
"moaniaat",
|
|
17066
|
+
"mod",
|
|
17067
|
+
"mont",
|
|
17068
|
+
"mout",
|
|
17069
|
+
"mui",
|
|
17070
|
+
"muiañ",
|
|
17071
|
+
"muioc'h",
|
|
17072
|
+
"n",
|
|
17073
|
+
"n'",
|
|
17074
|
+
"n:",
|
|
16292
17075
|
"na",
|
|
16293
|
-
"
|
|
16294
|
-
"
|
|
16295
|
-
"
|
|
16296
|
-
"
|
|
16297
|
-
"
|
|
16298
|
-
"
|
|
17076
|
+
"nag",
|
|
17077
|
+
"naontek",
|
|
17078
|
+
"naturel",
|
|
17079
|
+
"nav",
|
|
17080
|
+
"navet",
|
|
17081
|
+
"ne",
|
|
17082
|
+
"nebeudig",
|
|
17083
|
+
"nebeut",
|
|
17084
|
+
"nebeutañ",
|
|
17085
|
+
"nebeutoc'h",
|
|
17086
|
+
"neketa",
|
|
17087
|
+
"nemedoc'h",
|
|
17088
|
+
"nemedomp",
|
|
17089
|
+
"nemedon",
|
|
17090
|
+
"nemedor",
|
|
17091
|
+
"nemedout",
|
|
17092
|
+
"nemet",
|
|
17093
|
+
"nemetañ",
|
|
17094
|
+
"nemete",
|
|
17095
|
+
"nemeti",
|
|
17096
|
+
"nemeto",
|
|
17097
|
+
"nemeur",
|
|
17098
|
+
"neoac'h",
|
|
17099
|
+
"nepell",
|
|
17100
|
+
"nerzh",
|
|
17101
|
+
"nes",
|
|
17102
|
+
"neseser",
|
|
17103
|
+
"netra",
|
|
17104
|
+
"neubeudoù",
|
|
17105
|
+
"neuhe",
|
|
17106
|
+
"neuze",
|
|
17107
|
+
"nevez",
|
|
17108
|
+
"newazh",
|
|
17109
|
+
"nez",
|
|
17110
|
+
"ni",
|
|
17111
|
+
"nikun",
|
|
17112
|
+
"niverus",
|
|
17113
|
+
"nul",
|
|
16299
17114
|
"o",
|
|
16300
|
-
"
|
|
16301
|
-
"
|
|
16302
|
-
"
|
|
16303
|
-
"
|
|
16304
|
-
"
|
|
16305
|
-
"
|
|
16306
|
-
"
|
|
16307
|
-
"
|
|
16308
|
-
"
|
|
16309
|
-
"
|
|
16310
|
-
"
|
|
16311
|
-
"
|
|
16312
|
-
"
|
|
16313
|
-
"
|
|
16314
|
-
"
|
|
16315
|
-
"
|
|
16316
|
-
"
|
|
16317
|
-
"
|
|
16318
|
-
"
|
|
16319
|
-
"
|
|
16320
|
-
"
|
|
16321
|
-
"
|
|
16322
|
-
"
|
|
16323
|
-
"
|
|
17115
|
+
"o:",
|
|
17116
|
+
"oa",
|
|
17117
|
+
"oac'h",
|
|
17118
|
+
"oad",
|
|
17119
|
+
"oamp",
|
|
17120
|
+
"oan",
|
|
17121
|
+
"oant",
|
|
17122
|
+
"oar",
|
|
17123
|
+
"oas",
|
|
17124
|
+
"ober",
|
|
17125
|
+
"oc'h",
|
|
17126
|
+
"oc'ho",
|
|
17127
|
+
"oc'hola",
|
|
17128
|
+
"oc'hpenn",
|
|
17129
|
+
"oh",
|
|
17130
|
+
"ohe",
|
|
17131
|
+
"ollé",
|
|
17132
|
+
"olole",
|
|
17133
|
+
"olé",
|
|
17134
|
+
"omp",
|
|
17135
|
+
"on",
|
|
17136
|
+
"ordin",
|
|
17137
|
+
"ordinal",
|
|
17138
|
+
"ouejoc'h",
|
|
17139
|
+
"ouejod",
|
|
17140
|
+
"ouejomp",
|
|
17141
|
+
"ouejont",
|
|
17142
|
+
"ouejout",
|
|
17143
|
+
"ouek",
|
|
17144
|
+
"ouezas",
|
|
17145
|
+
"ouezi",
|
|
17146
|
+
"ouezimp",
|
|
17147
|
+
"ouezin",
|
|
17148
|
+
"ouezint",
|
|
17149
|
+
"ouezis",
|
|
17150
|
+
"ouezo",
|
|
17151
|
+
"ouezoc'h",
|
|
17152
|
+
"ouezor",
|
|
17153
|
+
"ouf",
|
|
17154
|
+
"oufe",
|
|
17155
|
+
"oufec'h",
|
|
17156
|
+
"oufed",
|
|
17157
|
+
"oufemp",
|
|
17158
|
+
"oufen",
|
|
17159
|
+
"oufent",
|
|
17160
|
+
"oufes",
|
|
17161
|
+
"ouie",
|
|
17162
|
+
"ouiec'h",
|
|
17163
|
+
"ouied",
|
|
17164
|
+
"ouiemp",
|
|
17165
|
+
"ouien",
|
|
17166
|
+
"ouient",
|
|
17167
|
+
"ouies",
|
|
17168
|
+
"ouije",
|
|
17169
|
+
"ouijec'h",
|
|
17170
|
+
"ouijed",
|
|
17171
|
+
"ouijemp",
|
|
17172
|
+
"ouijen",
|
|
17173
|
+
"ouijent",
|
|
17174
|
+
"ouijes",
|
|
17175
|
+
"out",
|
|
17176
|
+
"outañ",
|
|
17177
|
+
"outi",
|
|
17178
|
+
"outo",
|
|
17179
|
+
"ouzer",
|
|
17180
|
+
"ouzh",
|
|
17181
|
+
"ouzhin",
|
|
17182
|
+
"ouzhit",
|
|
17183
|
+
"ouzhoc'h",
|
|
17184
|
+
"ouzhomp",
|
|
17185
|
+
"ouzhor",
|
|
17186
|
+
"ouzhpenn",
|
|
17187
|
+
"ouzhpennik",
|
|
17188
|
+
"ouzoc'h",
|
|
17189
|
+
"ouzomp",
|
|
17190
|
+
"ouzon",
|
|
17191
|
+
"ouzont",
|
|
17192
|
+
"ouzout",
|
|
17193
|
+
"p'",
|
|
17194
|
+
"p:",
|
|
17195
|
+
"pa",
|
|
17196
|
+
"pad",
|
|
17197
|
+
"padal",
|
|
17198
|
+
"paf",
|
|
17199
|
+
"pan",
|
|
17200
|
+
"panevedeoc'h",
|
|
17201
|
+
"panevedo",
|
|
17202
|
+
"panevedomp",
|
|
17203
|
+
"panevedon",
|
|
17204
|
+
"panevedout",
|
|
17205
|
+
"panevet",
|
|
17206
|
+
"panevetañ",
|
|
17207
|
+
"paneveti",
|
|
17208
|
+
"pas",
|
|
17209
|
+
"paseet",
|
|
17210
|
+
"pe",
|
|
17211
|
+
"peadra",
|
|
17212
|
+
"peder",
|
|
17213
|
+
"pedervet",
|
|
17214
|
+
"pedervetvet",
|
|
17215
|
+
"pefe",
|
|
17216
|
+
"pegeit",
|
|
17217
|
+
"pegement",
|
|
17218
|
+
"pegen",
|
|
17219
|
+
"pegiz",
|
|
17220
|
+
"pegoulz",
|
|
17221
|
+
"pehini",
|
|
17222
|
+
"pelec'h",
|
|
17223
|
+
"pell",
|
|
17224
|
+
"pemod",
|
|
17225
|
+
"pemp",
|
|
17226
|
+
"pempved",
|
|
17227
|
+
"pemzek",
|
|
17228
|
+
"penaos",
|
|
17229
|
+
"penn",
|
|
17230
|
+
"peogwir",
|
|
17231
|
+
"peotramant",
|
|
17232
|
+
"pep",
|
|
17233
|
+
"perak",
|
|
17234
|
+
"perc'hennañ",
|
|
17235
|
+
"pergen",
|
|
17236
|
+
"permetiñ",
|
|
17237
|
+
"peseurt",
|
|
17238
|
+
"pet",
|
|
17239
|
+
"petiaoul",
|
|
17240
|
+
"petoare",
|
|
17241
|
+
"petra",
|
|
17242
|
+
"peur",
|
|
17243
|
+
"peurgetket",
|
|
17244
|
+
"peurheñvel",
|
|
17245
|
+
"peurliesañ",
|
|
17246
|
+
"peurvuiañ",
|
|
17247
|
+
"peus",
|
|
17248
|
+
"peustost",
|
|
17249
|
+
"peuz",
|
|
17250
|
+
"pevar",
|
|
17251
|
+
"pevare",
|
|
17252
|
+
"pevarevet",
|
|
17253
|
+
"pevarzek",
|
|
17254
|
+
"pez",
|
|
17255
|
+
"peze",
|
|
17256
|
+
"pezh",
|
|
17257
|
+
"pff",
|
|
17258
|
+
"pfft",
|
|
17259
|
+
"pfut",
|
|
17260
|
+
"picher",
|
|
17261
|
+
"pif",
|
|
17262
|
+
"pife",
|
|
17263
|
+
"pign",
|
|
17264
|
+
"pije",
|
|
17265
|
+
"pikol",
|
|
17266
|
+
"pitiaoul",
|
|
17267
|
+
"piv",
|
|
17268
|
+
"plaouf",
|
|
17269
|
+
"plok",
|
|
17270
|
+
"plouf",
|
|
17271
|
+
"po",
|
|
17272
|
+
"poa",
|
|
17273
|
+
"poelladus",
|
|
17274
|
+
"pof",
|
|
17275
|
+
"pok",
|
|
17276
|
+
"posupl",
|
|
17277
|
+
"pouah",
|
|
17278
|
+
"pourc'henn",
|
|
17279
|
+
"prest",
|
|
17280
|
+
"prestik",
|
|
17281
|
+
"prim",
|
|
17282
|
+
"prin",
|
|
17283
|
+
"provostapl",
|
|
17284
|
+
"pst",
|
|
17285
|
+
"pu",
|
|
17286
|
+
"pur",
|
|
17287
|
+
"r:",
|
|
17288
|
+
"ra",
|
|
17289
|
+
"rae",
|
|
17290
|
+
"raec'h",
|
|
17291
|
+
"raed",
|
|
17292
|
+
"raemp",
|
|
17293
|
+
"raen",
|
|
17294
|
+
"raent",
|
|
17295
|
+
"raes",
|
|
17296
|
+
"rafe",
|
|
17297
|
+
"rafec'h",
|
|
17298
|
+
"rafed",
|
|
17299
|
+
"rafemp",
|
|
17300
|
+
"rafen",
|
|
17301
|
+
"rafent",
|
|
17302
|
+
"rafes",
|
|
17303
|
+
"rag",
|
|
17304
|
+
"raimp",
|
|
17305
|
+
"raint",
|
|
17306
|
+
"raio",
|
|
17307
|
+
"raje",
|
|
17308
|
+
"rajec'h",
|
|
17309
|
+
"rajed",
|
|
17310
|
+
"rajemp",
|
|
17311
|
+
"rajen",
|
|
17312
|
+
"rajent",
|
|
17313
|
+
"rajes",
|
|
17314
|
+
"rak",
|
|
17315
|
+
"ral",
|
|
17316
|
+
"ran",
|
|
17317
|
+
"rankout",
|
|
17318
|
+
"raok",
|
|
17319
|
+
"razh",
|
|
17320
|
+
"re",
|
|
17321
|
+
"reas",
|
|
17322
|
+
"reer",
|
|
17323
|
+
"regennoù",
|
|
17324
|
+
"reiñ",
|
|
17325
|
+
"rejoc'h",
|
|
17326
|
+
"rejod",
|
|
17327
|
+
"rejomp",
|
|
17328
|
+
"rejont",
|
|
17329
|
+
"rejout",
|
|
17330
|
+
"rener",
|
|
17331
|
+
"rentañ",
|
|
17332
|
+
"reoc'h",
|
|
17333
|
+
"reomp",
|
|
17334
|
+
"reont",
|
|
17335
|
+
"reor",
|
|
17336
|
+
"reot",
|
|
17337
|
+
"resis",
|
|
17338
|
+
"ret",
|
|
17339
|
+
"reve",
|
|
17340
|
+
"rez",
|
|
17341
|
+
"ri",
|
|
17342
|
+
"rik",
|
|
17343
|
+
"rin",
|
|
17344
|
+
"ris",
|
|
17345
|
+
"rit",
|
|
17346
|
+
"rouez",
|
|
17347
|
+
"s:",
|
|
17348
|
+
"sac'h",
|
|
17349
|
+
"sant",
|
|
17350
|
+
"sav",
|
|
17351
|
+
"sañset",
|
|
16324
17352
|
"se",
|
|
16325
|
-
"
|
|
16326
|
-
"
|
|
16327
|
-
"
|
|
16328
|
-
"
|
|
16329
|
-
"
|
|
16330
|
-
"
|
|
16331
|
-
"
|
|
16332
|
-
"
|
|
16333
|
-
"
|
|
17353
|
+
"sed",
|
|
17354
|
+
"seitek",
|
|
17355
|
+
"seizh",
|
|
17356
|
+
"seizhvet",
|
|
17357
|
+
"sell",
|
|
17358
|
+
"sellit",
|
|
17359
|
+
"ser",
|
|
17360
|
+
"setu",
|
|
17361
|
+
"seul",
|
|
17362
|
+
"seurt",
|
|
17363
|
+
"siwazh",
|
|
17364
|
+
"skignañ",
|
|
17365
|
+
"skoaz",
|
|
17366
|
+
"skouer",
|
|
17367
|
+
"sort",
|
|
17368
|
+
"souden",
|
|
17369
|
+
"souvitañ",
|
|
17370
|
+
"soñj",
|
|
17371
|
+
"speriañ",
|
|
17372
|
+
"spririñ",
|
|
17373
|
+
"stad",
|
|
17374
|
+
"stlabezañ",
|
|
17375
|
+
"stop",
|
|
17376
|
+
"stranañ",
|
|
17377
|
+
"strewiñ",
|
|
17378
|
+
"strishaat",
|
|
17379
|
+
"stumm",
|
|
17380
|
+
"sujed",
|
|
17381
|
+
"surtoud",
|
|
17382
|
+
"t:",
|
|
17383
|
+
"ta",
|
|
17384
|
+
"taer",
|
|
17385
|
+
"tailh",
|
|
17386
|
+
"tak",
|
|
16334
17387
|
"tal",
|
|
16335
|
-
"
|
|
16336
|
-
"
|
|
17388
|
+
"talvoudegezh",
|
|
17389
|
+
"tamm",
|
|
17390
|
+
"tanav",
|
|
17391
|
+
"taol",
|
|
17392
|
+
"te",
|
|
17393
|
+
"techet",
|
|
17394
|
+
"teir",
|
|
17395
|
+
"teirvet",
|
|
17396
|
+
"telt",
|
|
17397
|
+
"teltenn",
|
|
16337
17398
|
"teus",
|
|
16338
|
-
"
|
|
16339
|
-
"
|
|
16340
|
-
"
|
|
16341
|
-
"
|
|
16342
|
-
"
|
|
16343
|
-
"
|
|
16344
|
-
"
|
|
16345
|
-
"
|
|
16346
|
-
"
|
|
16347
|
-
"
|
|
16348
|
-
"
|
|
17399
|
+
"teut",
|
|
17400
|
+
"teuteu",
|
|
17401
|
+
"ti",
|
|
17402
|
+
"tik",
|
|
17403
|
+
"toa",
|
|
17404
|
+
"tok",
|
|
17405
|
+
"tost",
|
|
17406
|
+
"tostig",
|
|
17407
|
+
"toud",
|
|
17408
|
+
"touesk",
|
|
17409
|
+
"touez",
|
|
17410
|
+
"toull",
|
|
17411
|
+
"tra",
|
|
17412
|
+
"trantenn",
|
|
17413
|
+
"traoñ",
|
|
17414
|
+
"trawalc'h",
|
|
17415
|
+
"tre",
|
|
17416
|
+
"trede",
|
|
17417
|
+
"tregont",
|
|
17418
|
+
"tremenet",
|
|
17419
|
+
"tri",
|
|
17420
|
+
"trivet",
|
|
17421
|
+
"triwec'h",
|
|
17422
|
+
"trizek",
|
|
17423
|
+
"tro",
|
|
17424
|
+
"trugarez",
|
|
17425
|
+
"trumm",
|
|
17426
|
+
"tsoin",
|
|
17427
|
+
"tsouin",
|
|
17428
|
+
"tu",
|
|
17429
|
+
"tud",
|
|
17430
|
+
"u:",
|
|
17431
|
+
"ugent",
|
|
17432
|
+
"uhel",
|
|
17433
|
+
"uhelañ",
|
|
17434
|
+
"ul",
|
|
17435
|
+
"un",
|
|
17436
|
+
"unan",
|
|
17437
|
+
"unanez",
|
|
17438
|
+
"unanig",
|
|
17439
|
+
"unnek",
|
|
17440
|
+
"unnekvet",
|
|
17441
|
+
"ur",
|
|
17442
|
+
"urzh",
|
|
17443
|
+
"us",
|
|
17444
|
+
"v:",
|
|
17445
|
+
"va",
|
|
17446
|
+
"vale",
|
|
17447
|
+
"van",
|
|
17448
|
+
"vare",
|
|
17449
|
+
"vat",
|
|
17450
|
+
"vefe",
|
|
17451
|
+
"vefec'h",
|
|
17452
|
+
"vefed",
|
|
17453
|
+
"vefemp",
|
|
17454
|
+
"vefen",
|
|
17455
|
+
"vefent",
|
|
17456
|
+
"vefes",
|
|
17457
|
+
"vesk",
|
|
17458
|
+
"vete",
|
|
17459
|
+
"vez",
|
|
17460
|
+
"vezan",
|
|
17461
|
+
"vezañ",
|
|
17462
|
+
"veze",
|
|
17463
|
+
"vezec'h",
|
|
17464
|
+
"vezed",
|
|
17465
|
+
"vezemp",
|
|
17466
|
+
"vezen",
|
|
17467
|
+
"vezent",
|
|
17468
|
+
"vezer",
|
|
17469
|
+
"vezes",
|
|
17470
|
+
"vezez",
|
|
17471
|
+
"vezit",
|
|
17472
|
+
"vezomp",
|
|
17473
|
+
"vezont",
|
|
17474
|
+
"vi",
|
|
17475
|
+
"vihan",
|
|
17476
|
+
"vihanañ",
|
|
17477
|
+
"vije",
|
|
17478
|
+
"vijec'h",
|
|
17479
|
+
"vijed",
|
|
17480
|
+
"vijemp",
|
|
17481
|
+
"vijen",
|
|
17482
|
+
"vijent",
|
|
17483
|
+
"vijes",
|
|
17484
|
+
"viken",
|
|
17485
|
+
"vimp",
|
|
17486
|
+
"vin",
|
|
17487
|
+
"vint",
|
|
17488
|
+
"vior",
|
|
17489
|
+
"viot",
|
|
17490
|
+
"virviken",
|
|
17491
|
+
"viskoazh",
|
|
17492
|
+
"vlan",
|
|
17493
|
+
"vlaou",
|
|
17494
|
+
"vo",
|
|
17495
|
+
"vod",
|
|
17496
|
+
"voe",
|
|
17497
|
+
"voec'h",
|
|
17498
|
+
"voed",
|
|
17499
|
+
"voemp",
|
|
17500
|
+
"voen",
|
|
17501
|
+
"voent",
|
|
17502
|
+
"voes",
|
|
17503
|
+
"vont",
|
|
17504
|
+
"vostapl",
|
|
17505
|
+
"vrac'h",
|
|
17506
|
+
"vrasañ",
|
|
17507
|
+
"vremañ",
|
|
17508
|
+
"w:",
|
|
17509
|
+
"walc'h",
|
|
17510
|
+
"war",
|
|
17511
|
+
"warnañ",
|
|
17512
|
+
"warni",
|
|
17513
|
+
"warno",
|
|
17514
|
+
"warnoc'h",
|
|
17515
|
+
"warnomp",
|
|
17516
|
+
"warnon",
|
|
17517
|
+
"warnor",
|
|
17518
|
+
"warnout",
|
|
17519
|
+
"wazh",
|
|
17520
|
+
"wech",
|
|
17521
|
+
"wechoù",
|
|
17522
|
+
"well",
|
|
17523
|
+
"y:",
|
|
17524
|
+
"you",
|
|
17525
|
+
"youadenn",
|
|
17526
|
+
"youc'hadenn",
|
|
17527
|
+
"youc'hou",
|
|
17528
|
+
"z:",
|
|
17529
|
+
"za",
|
|
17530
|
+
"zan",
|
|
17531
|
+
"zaw",
|
|
17532
|
+
"zeu",
|
|
17533
|
+
"zi",
|
|
17534
|
+
"ziar",
|
|
17535
|
+
"zigarez",
|
|
17536
|
+
"ziget",
|
|
17537
|
+
"zindan",
|
|
17538
|
+
"zioc'h",
|
|
17539
|
+
"ziouzh",
|
|
17540
|
+
"zirak",
|
|
17541
|
+
"zivout",
|
|
17542
|
+
"ziwar",
|
|
17543
|
+
"ziwezhañ",
|
|
17544
|
+
"zo",
|
|
17545
|
+
"zoken",
|
|
17546
|
+
"zokenoc'h",
|
|
17547
|
+
"zouesk",
|
|
17548
|
+
"zouez",
|
|
17549
|
+
"zro",
|
|
17550
|
+
"zu"
|
|
16349
17551
|
];
|
|
16350
17552
|
const bul = [
|
|
16351
17553
|
"а",
|
|
@@ -28001,22 +29203,32 @@ const tur = [
|
|
|
28001
29203
|
"şöyle"
|
|
28002
29204
|
];
|
|
28003
29205
|
const ukr = [
|
|
29206
|
+
"а",
|
|
29207
|
+
"або",
|
|
28004
29208
|
"авжеж",
|
|
28005
29209
|
"адже",
|
|
29210
|
+
"аж",
|
|
28006
29211
|
"але",
|
|
29212
|
+
"ані",
|
|
28007
29213
|
"б",
|
|
28008
29214
|
"без",
|
|
29215
|
+
"би",
|
|
29216
|
+
"бо",
|
|
28009
29217
|
"був",
|
|
28010
29218
|
"була",
|
|
28011
29219
|
"були",
|
|
28012
29220
|
"було",
|
|
28013
29221
|
"бути",
|
|
28014
29222
|
"більш",
|
|
29223
|
+
"в",
|
|
28015
29224
|
"вам",
|
|
29225
|
+
"вами",
|
|
28016
29226
|
"вас",
|
|
28017
29227
|
"весь",
|
|
29228
|
+
"вже",
|
|
28018
29229
|
"вздовж",
|
|
28019
29230
|
"ви",
|
|
29231
|
+
"від",
|
|
28020
29232
|
"вниз",
|
|
28021
29233
|
"внизу",
|
|
28022
29234
|
"вона",
|
|
@@ -28025,55 +29237,138 @@ const ukr = [
|
|
|
28025
29237
|
"все",
|
|
28026
29238
|
"всередині",
|
|
28027
29239
|
"всіх",
|
|
29240
|
+
"вся",
|
|
28028
29241
|
"від",
|
|
28029
29242
|
"він",
|
|
28030
29243
|
"да",
|
|
28031
29244
|
"давай",
|
|
28032
29245
|
"давати",
|
|
28033
29246
|
"де",
|
|
29247
|
+
"десь",
|
|
28034
29248
|
"дещо",
|
|
28035
29249
|
"для",
|
|
28036
29250
|
"до",
|
|
29251
|
+
"є",
|
|
29252
|
+
"ж",
|
|
29253
|
+
"же",
|
|
28037
29254
|
"з",
|
|
29255
|
+
"за",
|
|
28038
29256
|
"завжди",
|
|
28039
29257
|
"замість",
|
|
29258
|
+
"зі",
|
|
29259
|
+
"і",
|
|
29260
|
+
"із",
|
|
29261
|
+
"інших",
|
|
29262
|
+
"її",
|
|
29263
|
+
"їй",
|
|
29264
|
+
"їм",
|
|
29265
|
+
"їх",
|
|
28040
29266
|
"й",
|
|
29267
|
+
"його",
|
|
29268
|
+
"йому",
|
|
28041
29269
|
"коли",
|
|
28042
29270
|
"ледве",
|
|
29271
|
+
"лиш",
|
|
28043
29272
|
"майже",
|
|
29273
|
+
"мене",
|
|
29274
|
+
"мені",
|
|
28044
29275
|
"ми",
|
|
29276
|
+
"між",
|
|
29277
|
+
"мій",
|
|
29278
|
+
"мною",
|
|
29279
|
+
"мов",
|
|
29280
|
+
"мого",
|
|
29281
|
+
"моєї",
|
|
29282
|
+
"моє",
|
|
29283
|
+
"може",
|
|
29284
|
+
"мої",
|
|
29285
|
+
"моїх",
|
|
29286
|
+
"моя",
|
|
29287
|
+
"на",
|
|
29288
|
+
"над",
|
|
28045
29289
|
"навколо",
|
|
28046
29290
|
"навіть",
|
|
28047
29291
|
"нам",
|
|
29292
|
+
"нами",
|
|
29293
|
+
"нас",
|
|
29294
|
+
"наче",
|
|
29295
|
+
"наш",
|
|
29296
|
+
"не",
|
|
29297
|
+
"нє",
|
|
29298
|
+
"неї",
|
|
29299
|
+
"нема",
|
|
29300
|
+
"немов",
|
|
29301
|
+
"неначе",
|
|
29302
|
+
"нею",
|
|
29303
|
+
"ним",
|
|
29304
|
+
"ними",
|
|
29305
|
+
"них",
|
|
29306
|
+
"ні",
|
|
29307
|
+
"ніби",
|
|
29308
|
+
"ніщо",
|
|
29309
|
+
"нього",
|
|
29310
|
+
"о",
|
|
29311
|
+
"ось",
|
|
28048
29312
|
"от",
|
|
28049
29313
|
"отже",
|
|
28050
29314
|
"отож",
|
|
29315
|
+
"під",
|
|
29316
|
+
"по",
|
|
28051
29317
|
"поза",
|
|
28052
29318
|
"про",
|
|
28053
29319
|
"під",
|
|
29320
|
+
"сам",
|
|
29321
|
+
"сама",
|
|
29322
|
+
"свій",
|
|
29323
|
+
"свої",
|
|
29324
|
+
"своя",
|
|
29325
|
+
"свою",
|
|
29326
|
+
"себе",
|
|
29327
|
+
"собі",
|
|
28054
29328
|
"та",
|
|
29329
|
+
"там",
|
|
28055
29330
|
"так",
|
|
29331
|
+
"така",
|
|
28056
29332
|
"такий",
|
|
28057
29333
|
"також",
|
|
29334
|
+
"твій",
|
|
29335
|
+
"твого",
|
|
29336
|
+
"твоєї",
|
|
29337
|
+
"твої",
|
|
29338
|
+
"твоя",
|
|
28058
29339
|
"те",
|
|
29340
|
+
"тебе",
|
|
28059
29341
|
"ти",
|
|
29342
|
+
"ті",
|
|
29343
|
+
"тільки",
|
|
29344
|
+
"то",
|
|
29345
|
+
"тобі",
|
|
29346
|
+
"тобою",
|
|
28060
29347
|
"тобто",
|
|
29348
|
+
"тоді",
|
|
28061
29349
|
"тож",
|
|
29350
|
+
"той",
|
|
28062
29351
|
"тощо",
|
|
29352
|
+
"тут",
|
|
29353
|
+
"у",
|
|
29354
|
+
"хіба",
|
|
29355
|
+
"хоч",
|
|
28063
29356
|
"хоча",
|
|
28064
29357
|
"це",
|
|
28065
29358
|
"цей",
|
|
29359
|
+
"ці",
|
|
29360
|
+
"ця",
|
|
28066
29361
|
"чи",
|
|
28067
29362
|
"чого",
|
|
29363
|
+
"ще",
|
|
28068
29364
|
"що",
|
|
29365
|
+
"щоб",
|
|
29366
|
+
"щось",
|
|
29367
|
+
"я",
|
|
28069
29368
|
"як",
|
|
29369
|
+
"яка",
|
|
28070
29370
|
"який",
|
|
28071
|
-
"якої"
|
|
28072
|
-
"є",
|
|
28073
|
-
"із",
|
|
28074
|
-
"інших",
|
|
28075
|
-
"їх",
|
|
28076
|
-
"її"
|
|
29371
|
+
"якої"
|
|
28077
29372
|
];
|
|
28078
29373
|
const urd = [
|
|
28079
29374
|
"آئی",
|
|
@@ -29071,7 +30366,14 @@ const TINA_LOGIN_EVENT = "tinaCloudLogin";
|
|
|
29071
30366
|
const AUTH_TOKEN_KEY = "tinacms-auth";
|
|
29072
30367
|
const authenticate = (clientId, frontendUrl) => {
|
|
29073
30368
|
return new Promise((resolve) => {
|
|
29074
|
-
|
|
30369
|
+
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
30370
|
+
const authTab = popupWindow(
|
|
30371
|
+
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
30372
|
+
"_blank",
|
|
30373
|
+
window,
|
|
30374
|
+
1e3,
|
|
30375
|
+
700
|
|
30376
|
+
);
|
|
29075
30377
|
window.addEventListener("message", function(e) {
|
|
29076
30378
|
if (e.data.source === TINA_LOGIN_EVENT) {
|
|
29077
30379
|
if (authTab) {
|
|
@@ -29084,14 +30386,6 @@ const authenticate = (clientId, frontendUrl) => {
|
|
|
29084
30386
|
});
|
|
29085
30387
|
}
|
|
29086
30388
|
});
|
|
29087
|
-
const origin = `${window.location.protocol}//${window.location.host}`;
|
|
29088
|
-
authTab = popupWindow(
|
|
29089
|
-
`${frontendUrl}/signin?clientId=${clientId}&origin=${origin}`,
|
|
29090
|
-
"_blank",
|
|
29091
|
-
window,
|
|
29092
|
-
1e3,
|
|
29093
|
-
700
|
|
29094
|
-
);
|
|
29095
30389
|
});
|
|
29096
30390
|
};
|
|
29097
30391
|
const DefaultSessionProvider = ({
|
|
@@ -29797,56 +31091,6 @@ const AsyncButton = ({ name, primary, action }) => {
|
|
|
29797
31091
|
!submitting && name
|
|
29798
31092
|
);
|
|
29799
31093
|
};
|
|
29800
|
-
const TINA_AUTH_CONFIG = "tina_auth_config";
|
|
29801
|
-
const useTinaAuthRedirect = () => {
|
|
29802
|
-
useEffect(() => {
|
|
29803
|
-
const urlParams = new URLSearchParams(window.location.search);
|
|
29804
|
-
const config = {
|
|
29805
|
-
code: urlParams.get("code") || "",
|
|
29806
|
-
scope: urlParams.get("scope") || "email",
|
|
29807
|
-
state: urlParams.get("state")
|
|
29808
|
-
};
|
|
29809
|
-
if (!config.code) {
|
|
29810
|
-
return;
|
|
29811
|
-
}
|
|
29812
|
-
localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
|
|
29813
|
-
}, []);
|
|
29814
|
-
};
|
|
29815
|
-
const createClient = ({
|
|
29816
|
-
clientId,
|
|
29817
|
-
isLocalClient = true,
|
|
29818
|
-
branch,
|
|
29819
|
-
tinaioConfig,
|
|
29820
|
-
schema,
|
|
29821
|
-
apiUrl,
|
|
29822
|
-
tinaGraphQLVersion
|
|
29823
|
-
}) => {
|
|
29824
|
-
return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
|
|
29825
|
-
clientId: clientId || "",
|
|
29826
|
-
branch: branch || "main",
|
|
29827
|
-
tokenStorage: "LOCAL_STORAGE",
|
|
29828
|
-
tinaioConfig,
|
|
29829
|
-
schema,
|
|
29830
|
-
tinaGraphQLVersion
|
|
29831
|
-
});
|
|
29832
|
-
};
|
|
29833
|
-
function assertShape(value, yupSchema, errorMessage) {
|
|
29834
|
-
const shape = yupSchema(yup);
|
|
29835
|
-
try {
|
|
29836
|
-
shape.validateSync(value);
|
|
29837
|
-
} catch (e) {
|
|
29838
|
-
const message = errorMessage || `Failed to assertShape - ${e.message}`;
|
|
29839
|
-
throw new Error(message);
|
|
29840
|
-
}
|
|
29841
|
-
}
|
|
29842
|
-
function safeAssertShape(value, yupSchema) {
|
|
29843
|
-
try {
|
|
29844
|
-
assertShape(value, yupSchema);
|
|
29845
|
-
return true;
|
|
29846
|
-
} catch (e) {
|
|
29847
|
-
return false;
|
|
29848
|
-
}
|
|
29849
|
-
}
|
|
29850
31094
|
class TinaAdminApi {
|
|
29851
31095
|
constructor(cms) {
|
|
29852
31096
|
var _a, _b, _c, _d;
|
|
@@ -30193,6 +31437,56 @@ class TinaAdminApi {
|
|
|
30193
31437
|
);
|
|
30194
31438
|
}
|
|
30195
31439
|
}
|
|
31440
|
+
const createClient = ({
|
|
31441
|
+
clientId,
|
|
31442
|
+
isLocalClient = true,
|
|
31443
|
+
branch,
|
|
31444
|
+
tinaioConfig,
|
|
31445
|
+
schema,
|
|
31446
|
+
apiUrl,
|
|
31447
|
+
tinaGraphQLVersion
|
|
31448
|
+
}) => {
|
|
31449
|
+
return isLocalClient ? new LocalClient({ customContentApiUrl: apiUrl, schema }) : new Client({
|
|
31450
|
+
clientId: clientId || "",
|
|
31451
|
+
branch: branch || "main",
|
|
31452
|
+
tokenStorage: "LOCAL_STORAGE",
|
|
31453
|
+
tinaioConfig,
|
|
31454
|
+
schema,
|
|
31455
|
+
tinaGraphQLVersion
|
|
31456
|
+
});
|
|
31457
|
+
};
|
|
31458
|
+
function assertShape(value, yupSchema, errorMessage) {
|
|
31459
|
+
const shape = yupSchema(yup);
|
|
31460
|
+
try {
|
|
31461
|
+
shape.validateSync(value);
|
|
31462
|
+
} catch (e) {
|
|
31463
|
+
const message = errorMessage || `Failed to assertShape - ${e.message}`;
|
|
31464
|
+
throw new Error(message);
|
|
31465
|
+
}
|
|
31466
|
+
}
|
|
31467
|
+
function safeAssertShape(value, yupSchema) {
|
|
31468
|
+
try {
|
|
31469
|
+
assertShape(value, yupSchema);
|
|
31470
|
+
return true;
|
|
31471
|
+
} catch (e) {
|
|
31472
|
+
return false;
|
|
31473
|
+
}
|
|
31474
|
+
}
|
|
31475
|
+
const TINA_AUTH_CONFIG = "tina_auth_config";
|
|
31476
|
+
const useTinaAuthRedirect = () => {
|
|
31477
|
+
useEffect(() => {
|
|
31478
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
31479
|
+
const config = {
|
|
31480
|
+
code: urlParams.get("code") || "",
|
|
31481
|
+
scope: urlParams.get("scope") || "email",
|
|
31482
|
+
state: urlParams.get("state")
|
|
31483
|
+
};
|
|
31484
|
+
if (!config.code) {
|
|
31485
|
+
return;
|
|
31486
|
+
}
|
|
31487
|
+
localStorage[TINA_AUTH_CONFIG] = JSON.stringify(config);
|
|
31488
|
+
}, []);
|
|
31489
|
+
};
|
|
30196
31490
|
function sleep(ms) {
|
|
30197
31491
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
30198
31492
|
}
|
|
@@ -30529,6 +31823,9 @@ const TinaCloudProvider = (props) => {
|
|
|
30529
31823
|
cms.flags.set("branch-switcher", true);
|
|
30530
31824
|
client.usingEditorialWorkflow = true;
|
|
30531
31825
|
client.protectedBranches = project.protectedBranches;
|
|
31826
|
+
if (!project.metadata[currentBranch]) {
|
|
31827
|
+
setCurrentBranch(project.defaultBranch || "main");
|
|
31828
|
+
}
|
|
30532
31829
|
}
|
|
30533
31830
|
});
|
|
30534
31831
|
};
|
|
@@ -30541,7 +31838,7 @@ const TinaCloudProvider = (props) => {
|
|
|
30541
31838
|
}
|
|
30542
31839
|
});
|
|
30543
31840
|
return unsubscribe;
|
|
30544
|
-
}, [isTinaCloud, cms]);
|
|
31841
|
+
}, [currentBranch, isTinaCloud, cms]);
|
|
30545
31842
|
return /* @__PURE__ */ React__default.createElement(SessionProvider, { basePath: "/api/tina/auth" }, /* @__PURE__ */ React__default.createElement(
|
|
30546
31843
|
BranchDataProvider,
|
|
30547
31844
|
{
|
|
@@ -31394,6 +32691,35 @@ const FullscreenError = ({
|
|
|
31394
32691
|
}) => {
|
|
31395
32692
|
return /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col justify-center items-center h-screen bg-gray-100" }, /* @__PURE__ */ React__default.createElement("div", { className: "text-red-500 text-4xl mb-6 flex items-center" }, /* @__PURE__ */ React__default.createElement(BiError, { className: "w-12 h-auto fill-current text-red-400 opacity-70 mr-1" }), " ", title), /* @__PURE__ */ React__default.createElement("p", { className: "text-gray-700 text-xl mb-8" }, errorMessage), /* @__PURE__ */ React__default.createElement(Button$1, { variant: "danger", onClick: () => window.location.reload() }, /* @__PURE__ */ React__default.createElement(BiSync, { className: "w-7 h-auto fill-current opacity-70 mr-1" }), " Reload"));
|
|
31396
32693
|
};
|
|
32694
|
+
const isValidSortKey = (sortKey, collection) => {
|
|
32695
|
+
if (collection.fields) {
|
|
32696
|
+
const sortKeys = collection.fields.map((x) => x.name);
|
|
32697
|
+
return sortKeys.includes(sortKey);
|
|
32698
|
+
} else if (collection.templates) {
|
|
32699
|
+
const collectionMap = {};
|
|
32700
|
+
const conflictedFields = /* @__PURE__ */ new Set();
|
|
32701
|
+
for (const template of collection.templates) {
|
|
32702
|
+
for (const field of template.fields) {
|
|
32703
|
+
if (collectionMap[field.name]) {
|
|
32704
|
+
if (collectionMap[field.name].type !== field.type) {
|
|
32705
|
+
conflictedFields.add(field.name);
|
|
32706
|
+
}
|
|
32707
|
+
} else {
|
|
32708
|
+
collectionMap[field.name] = field;
|
|
32709
|
+
}
|
|
32710
|
+
}
|
|
32711
|
+
}
|
|
32712
|
+
for (const key in conflictedFields) {
|
|
32713
|
+
delete collectionMap[key];
|
|
32714
|
+
}
|
|
32715
|
+
for (const key in collectionMap) {
|
|
32716
|
+
if (key === sortKey) {
|
|
32717
|
+
return true;
|
|
32718
|
+
}
|
|
32719
|
+
}
|
|
32720
|
+
return false;
|
|
32721
|
+
}
|
|
32722
|
+
};
|
|
31397
32723
|
const useGetCollection = (cms, collectionName, includeDocuments = true, folder, after = "", sortKey, filterArgs) => {
|
|
31398
32724
|
const api = new TinaAdminApi(cms);
|
|
31399
32725
|
const schema = cms.api.tina.schema;
|
|
@@ -31405,10 +32731,9 @@ const useGetCollection = (cms, collectionName, includeDocuments = true, folder,
|
|
|
31405
32731
|
useEffect(() => {
|
|
31406
32732
|
let cancelled = false;
|
|
31407
32733
|
const fetchCollection = async () => {
|
|
31408
|
-
var _a;
|
|
31409
32734
|
if (await api.isAuthenticated() && !folder.loading && !cancelled) {
|
|
31410
32735
|
const { name, order } = JSON.parse(sortKey || "{}");
|
|
31411
|
-
const validSortKey = (
|
|
32736
|
+
const validSortKey = isValidSortKey(name, collectionExtra) ? name : void 0;
|
|
31412
32737
|
try {
|
|
31413
32738
|
const collection2 = await api.fetchCollection(
|
|
31414
32739
|
collectionName,
|
|
@@ -31704,6 +33029,7 @@ const CollectionListPage = () => {
|
|
|
31704
33029
|
const [vars, setVars] = React__default.useState({
|
|
31705
33030
|
collection: collectionName,
|
|
31706
33031
|
relativePath: "",
|
|
33032
|
+
relativePathWithoutExtension: "",
|
|
31707
33033
|
newRelativePath: "",
|
|
31708
33034
|
filterField: "",
|
|
31709
33035
|
folderName: "",
|
|
@@ -31745,6 +33071,7 @@ const CollectionListPage = () => {
|
|
|
31745
33071
|
...old,
|
|
31746
33072
|
collection: collectionName,
|
|
31747
33073
|
relativePath: "",
|
|
33074
|
+
relativePathWithoutExtension: "",
|
|
31748
33075
|
newRelativePath: "",
|
|
31749
33076
|
filterField: "",
|
|
31750
33077
|
startsWith: "",
|
|
@@ -31770,6 +33097,7 @@ const CollectionListPage = () => {
|
|
|
31770
33097
|
collectionName === vars.collection ? vars : {
|
|
31771
33098
|
collection: collectionName,
|
|
31772
33099
|
relativePath: "",
|
|
33100
|
+
relativePathWithoutExtension: "",
|
|
31773
33101
|
newRelativePath: "",
|
|
31774
33102
|
filterField: "",
|
|
31775
33103
|
startsWith: "",
|
|
@@ -31857,7 +33185,9 @@ const CollectionListPage = () => {
|
|
|
31857
33185
|
safeSubmit: async () => {
|
|
31858
33186
|
try {
|
|
31859
33187
|
await admin.deleteDocument(vars);
|
|
31860
|
-
cms.alerts.info(
|
|
33188
|
+
cms.alerts.info(
|
|
33189
|
+
"Document was successfully deleted"
|
|
33190
|
+
);
|
|
31861
33191
|
reFetchCollection();
|
|
31862
33192
|
} catch (error) {
|
|
31863
33193
|
cms.alerts.warn(
|
|
@@ -31871,7 +33201,7 @@ const CollectionListPage = () => {
|
|
|
31871
33201
|
), renameModalOpen && /* @__PURE__ */ React__default.createElement(
|
|
31872
33202
|
RenameModal,
|
|
31873
33203
|
{
|
|
31874
|
-
filename: vars.
|
|
33204
|
+
filename: vars.relativePathWithoutExtension,
|
|
31875
33205
|
newRelativePath: vars.newRelativePath,
|
|
31876
33206
|
setNewRelativePath: (newRelativePath) => {
|
|
31877
33207
|
setVars((vars2) => {
|
|
@@ -31886,7 +33216,9 @@ const CollectionListPage = () => {
|
|
|
31886
33216
|
relativePath: vars.relativePath,
|
|
31887
33217
|
newRelativePath
|
|
31888
33218
|
});
|
|
31889
|
-
cms.alerts.info(
|
|
33219
|
+
cms.alerts.info(
|
|
33220
|
+
"Document was successfully renamed"
|
|
33221
|
+
);
|
|
31890
33222
|
reFetchCollection();
|
|
31891
33223
|
} catch (error) {
|
|
31892
33224
|
if (error.message.indexOf("has references")) {
|
|
@@ -31986,7 +33318,9 @@ const CollectionListPage = () => {
|
|
|
31986
33318
|
name: "sort",
|
|
31987
33319
|
value: sortKey,
|
|
31988
33320
|
onChange: (e) => {
|
|
31989
|
-
const val = JSON.parse(
|
|
33321
|
+
const val = JSON.parse(
|
|
33322
|
+
e.target.value
|
|
33323
|
+
);
|
|
31990
33324
|
setEndCursor("");
|
|
31991
33325
|
setPrevCursors([]);
|
|
31992
33326
|
window == null ? void 0 : window.localStorage.setItem(
|
|
@@ -32192,6 +33526,9 @@ const CollectionListPage = () => {
|
|
|
32192
33526
|
setVars((old) => ({
|
|
32193
33527
|
...old,
|
|
32194
33528
|
collection: collectionName,
|
|
33529
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33530
|
+
"/"
|
|
33531
|
+
),
|
|
32195
33532
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32196
33533
|
"/"
|
|
32197
33534
|
) + document2.node._sys.extension,
|
|
@@ -32214,6 +33551,9 @@ const CollectionListPage = () => {
|
|
|
32214
33551
|
setVars((old) => ({
|
|
32215
33552
|
...old,
|
|
32216
33553
|
collection: collectionName,
|
|
33554
|
+
relativePathWithoutExtension: document2.node._sys.breadcrumbs.join(
|
|
33555
|
+
"/"
|
|
33556
|
+
),
|
|
32217
33557
|
relativePath: document2.node._sys.breadcrumbs.join(
|
|
32218
33558
|
"/"
|
|
32219
33559
|
) + document2.node._sys.extension,
|
|
@@ -32426,7 +33766,7 @@ const RenameModal = ({
|
|
|
32426
33766
|
newRelativePath,
|
|
32427
33767
|
setNewRelativePath
|
|
32428
33768
|
}) => {
|
|
32429
|
-
return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "?
|
|
33769
|
+
return /* @__PURE__ */ React__default.createElement(Modal, null, /* @__PURE__ */ React__default.createElement(PopupModal, null, /* @__PURE__ */ React__default.createElement(ModalHeader, { close: close2 }, "Rename ", filename), /* @__PURE__ */ React__default.createElement(ModalBody, { padded: true }, /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, /* @__PURE__ */ React__default.createElement("p", { className: "mb-4" }, "Are you sure you want to rename ", /* @__PURE__ */ React__default.createElement("strong", null, filename), "?"), /* @__PURE__ */ React__default.createElement(
|
|
32430
33770
|
BaseTextField,
|
|
32431
33771
|
{
|
|
32432
33772
|
placeholder: "Enter a new name for the document's file",
|
|
@@ -32441,7 +33781,8 @@ const RenameModal = ({
|
|
|
32441
33781
|
onClick: async () => {
|
|
32442
33782
|
await renameFunc();
|
|
32443
33783
|
close2();
|
|
32444
|
-
}
|
|
33784
|
+
},
|
|
33785
|
+
disabled: !newRelativePath || newRelativePath === filename
|
|
32445
33786
|
},
|
|
32446
33787
|
"Rename"
|
|
32447
33788
|
))));
|
|
@@ -32768,7 +34109,10 @@ const useGetDocument = (cms, collectionName, relativePath2) => {
|
|
|
32768
34109
|
const fetchDocument = async () => {
|
|
32769
34110
|
if (api.isAuthenticated()) {
|
|
32770
34111
|
try {
|
|
32771
|
-
const response = await api.fetchDocument(
|
|
34112
|
+
const response = await api.fetchDocument(
|
|
34113
|
+
collectionName,
|
|
34114
|
+
relativePath2
|
|
34115
|
+
);
|
|
32772
34116
|
setDocument(response.document);
|
|
32773
34117
|
} catch (error2) {
|
|
32774
34118
|
cms.alerts.error(
|
|
@@ -33112,15 +34456,24 @@ const IndexingPage = () => {
|
|
|
33112
34456
|
}
|
|
33113
34457
|
}
|
|
33114
34458
|
if (state === "creatingPR") {
|
|
33115
|
-
|
|
33116
|
-
|
|
33117
|
-
|
|
33118
|
-
|
|
33119
|
-
|
|
33120
|
-
|
|
33121
|
-
|
|
33122
|
-
|
|
33123
|
-
|
|
34459
|
+
try {
|
|
34460
|
+
const foo = await tinaApi.createPullRequest({
|
|
34461
|
+
baseBranch,
|
|
34462
|
+
branch,
|
|
34463
|
+
title: `${branch.replace("tina/", "").replace("-", " ")} (PR from TinaCMS)`
|
|
34464
|
+
});
|
|
34465
|
+
console.log("PR created", foo);
|
|
34466
|
+
cms.alerts.success("Pull request created.");
|
|
34467
|
+
localStorage.setItem("tina.createBranchState", "done");
|
|
34468
|
+
setState("done");
|
|
34469
|
+
} catch (e) {
|
|
34470
|
+
console.error(e);
|
|
34471
|
+
cms.alerts.error("Failed to create PR");
|
|
34472
|
+
setErrorMessage(
|
|
34473
|
+
"Failed to create PR, please try again. If the problem persists please contact support."
|
|
34474
|
+
);
|
|
34475
|
+
setState("error");
|
|
34476
|
+
}
|
|
33124
34477
|
}
|
|
33125
34478
|
if (state === "done") {
|
|
33126
34479
|
window.location.href = back;
|