@questpie/admin 3.2.3 → 3.2.4
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/client/blocks/block-renderer.d.mts +2 -2
- package/dist/client/components/admin-link.d.mts +2 -2
- package/dist/client/components/blocks/block-library-sidebar.mjs +126 -113
- package/dist/client/components/fields/json-field.mjs +114 -118
- package/dist/client/components/fields/rich-text-editor/bubble-menu.mjs +38 -40
- package/dist/client/components/fields/rich-text-editor/image-popover.mjs +6 -17
- package/dist/client/components/fields/rich-text-editor/index.mjs +71 -87
- package/dist/client/components/history-sidebar.mjs +25 -10
- package/dist/client/components/media/media-picker-dialog.mjs +237 -254
- package/dist/client/components/preview/live-preview-mode.mjs +230 -203
- package/dist/client/components/primitives/asset-preview.mjs +1 -1
- package/dist/client/contexts/focus-context.d.mts +4 -0
- package/dist/client/contexts/focus-context.mjs +106 -86
- package/dist/client/preview/block-scope-context.d.mts +2 -2
- package/dist/client/preview/diff.mjs +110 -0
- package/dist/client/preview/preview-banner.d.mts +2 -2
- package/dist/client/preview/preview-field.d.mts +4 -4
- package/dist/client/preview/preview-field.mjs +125 -187
- package/dist/client/preview/use-collection-preview.mjs +49 -21
- package/dist/client/views/auth/accept-invite-form.d.mts +2 -2
- package/dist/client/views/auth/auth-layout.d.mts +3 -3
- package/dist/client/views/auth/forgot-password-form.d.mts +2 -2
- package/dist/client/views/auth/login-form.d.mts +2 -2
- package/dist/client/views/auth/reset-password-form.d.mts +2 -2
- package/dist/client/views/auth/setup-form.d.mts +2 -2
- package/dist/client/views/collection/bulk-action-toolbar.mjs +135 -156
- package/dist/client/views/collection/field-renderer.mjs +162 -51
- package/dist/client/views/collection/form-view.mjs +43 -81
- package/dist/client/views/collection/table-view.mjs +12 -10
- package/dist/client/views/common/global-search.mjs +199 -182
- package/dist/client/views/globals/global-form-view.mjs +625 -621
- package/dist/client/views/layout/admin-router.mjs +84 -100
- package/dist/client/views/pages/accept-invite-page.d.mts +2 -2
- package/dist/client/views/pages/dashboard-page.d.mts +2 -2
- package/dist/client/views/pages/forgot-password-page.d.mts +2 -2
- package/dist/client/views/pages/invite-page.d.mts +2 -2
- package/dist/client/views/pages/reset-password-page.d.mts +2 -2
- package/dist/client/views/pages/setup-page.d.mts +2 -2
- package/dist/server/modules/admin/collections/account.d.mts +50 -50
- package/dist/server/modules/admin/collections/admin-locks.d.mts +54 -54
- package/dist/server/modules/admin/collections/admin-preferences.d.mts +39 -39
- package/dist/server/modules/admin/collections/admin-saved-views.d.mts +47 -47
- package/dist/server/modules/admin/collections/apikey.d.mts +68 -68
- package/dist/server/modules/admin/collections/assets.d.mts +39 -39
- package/dist/server/modules/admin/collections/session.d.mts +42 -42
- package/dist/server/modules/admin/collections/user.d.mts +63 -63
- package/dist/server/modules/admin/collections/verification.d.mts +32 -32
- package/dist/server/modules/admin/index.d.mts +1 -1
- package/dist/server/modules/admin/routes/admin-config.d.mts +2 -2
- package/dist/server/modules/admin/routes/execute-action.d.mts +9 -9
- package/dist/server/modules/admin/routes/locales.d.mts +2 -2
- package/dist/server/modules/admin/routes/preview.d.mts +11 -11
- package/dist/server/modules/admin/routes/reactive.d.mts +9 -9
- package/dist/server/modules/admin/routes/setup.d.mts +7 -7
- package/dist/server/modules/admin/routes/translations.d.mts +4 -4
- package/dist/server/modules/admin/routes/widget-data.d.mts +5 -5
- package/dist/server/modules/admin-preferences/collections/saved-views.d.mts +41 -41
- package/dist/server/modules/audit/.generated/module.d.mts +6 -6
- package/dist/server/modules/audit/collections/audit-log.d.mts +78 -78
- package/dist/server/modules/audit/jobs/audit-cleanup.d.mts +2 -2
- package/package.json +3 -3
|
@@ -88,7 +88,7 @@ function setCurrentBlockValue(editor, value) {
|
|
|
88
88
|
* Bubble menu that appears on text selection
|
|
89
89
|
*/
|
|
90
90
|
function RichTextBubbleMenu(t0) {
|
|
91
|
-
const $ = c(
|
|
91
|
+
const $ = c(44);
|
|
92
92
|
const { editor, features, disabled, linkOpen, onImageClick, onLinkOpenChange, showFormatting: t1 } = t0;
|
|
93
93
|
const showFormatting = t1 === void 0 ? true : t1;
|
|
94
94
|
const { t } = useTranslation();
|
|
@@ -189,33 +189,31 @@ function RichTextBubbleMenu(t0) {
|
|
|
189
189
|
const removeLink = t7;
|
|
190
190
|
let t8;
|
|
191
191
|
let t9;
|
|
192
|
-
if ($[21] !==
|
|
192
|
+
if ($[21] !== linkOpen) {
|
|
193
193
|
t8 = () => {
|
|
194
194
|
if (!linkOpen) return;
|
|
195
|
-
const
|
|
196
|
-
setLinkUrl(currentLink_0 || "");
|
|
197
|
-
window.requestAnimationFrame(() => {
|
|
195
|
+
const frame = window.requestAnimationFrame(() => {
|
|
198
196
|
linkInputRef.current?.focus();
|
|
199
197
|
linkInputRef.current?.select();
|
|
200
198
|
});
|
|
199
|
+
return () => window.cancelAnimationFrame(frame);
|
|
201
200
|
};
|
|
202
|
-
t9 = [
|
|
203
|
-
$[21] =
|
|
204
|
-
$[22] =
|
|
205
|
-
$[23] =
|
|
206
|
-
$[24] = t9;
|
|
201
|
+
t9 = [linkOpen];
|
|
202
|
+
$[21] = linkOpen;
|
|
203
|
+
$[22] = t8;
|
|
204
|
+
$[23] = t9;
|
|
207
205
|
} else {
|
|
208
|
-
t8 = $[
|
|
209
|
-
t9 = $[
|
|
206
|
+
t8 = $[22];
|
|
207
|
+
t9 = $[23];
|
|
210
208
|
}
|
|
211
209
|
React.useEffect(t8, t9);
|
|
212
210
|
let t10;
|
|
213
|
-
if ($[
|
|
211
|
+
if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
|
|
214
212
|
t10 = [120, 90];
|
|
215
|
-
$[
|
|
216
|
-
} else t10 = $[
|
|
213
|
+
$[24] = t10;
|
|
214
|
+
} else t10 = $[24];
|
|
217
215
|
let t11;
|
|
218
|
-
if ($[
|
|
216
|
+
if ($[25] === Symbol.for("react.memo_cache_sentinel")) {
|
|
219
217
|
t11 = {
|
|
220
218
|
duration: t10,
|
|
221
219
|
interactive: true,
|
|
@@ -223,10 +221,10 @@ function RichTextBubbleMenu(t0) {
|
|
|
223
221
|
offset: [0, 8],
|
|
224
222
|
placement: "top"
|
|
225
223
|
};
|
|
226
|
-
$[
|
|
227
|
-
} else t11 = $[
|
|
224
|
+
$[25] = t11;
|
|
225
|
+
} else t11 = $[25];
|
|
228
226
|
let t12;
|
|
229
|
-
if ($[
|
|
227
|
+
if ($[26] !== applyLink || $[27] !== closeLinkMode || $[28] !== currentBlockLabel || $[29] !== currentBlockValue || $[30] !== editor || $[31] !== features || $[32] !== isEditable || $[33] !== linkOpen || $[34] !== linkUrl || $[35] !== onImageClick || $[36] !== openLinkMode || $[37] !== removeLink || $[38] !== t) {
|
|
230
228
|
t12 = linkOpen ? /* @__PURE__ */ jsxs("form", {
|
|
231
229
|
className: "qp-rich-text-editor__link-form",
|
|
232
230
|
onSubmit: (event) => {
|
|
@@ -373,23 +371,23 @@ function RichTextBubbleMenu(t0) {
|
|
|
373
371
|
onClick: onImageClick
|
|
374
372
|
})
|
|
375
373
|
] });
|
|
376
|
-
$[
|
|
377
|
-
$[
|
|
378
|
-
$[
|
|
379
|
-
$[
|
|
380
|
-
$[
|
|
381
|
-
$[
|
|
382
|
-
$[
|
|
383
|
-
$[
|
|
384
|
-
$[
|
|
385
|
-
$[
|
|
386
|
-
$[
|
|
387
|
-
$[
|
|
388
|
-
$[
|
|
389
|
-
$[
|
|
390
|
-
} else t12 = $[
|
|
374
|
+
$[26] = applyLink;
|
|
375
|
+
$[27] = closeLinkMode;
|
|
376
|
+
$[28] = currentBlockLabel;
|
|
377
|
+
$[29] = currentBlockValue;
|
|
378
|
+
$[30] = editor;
|
|
379
|
+
$[31] = features;
|
|
380
|
+
$[32] = isEditable;
|
|
381
|
+
$[33] = linkOpen;
|
|
382
|
+
$[34] = linkUrl;
|
|
383
|
+
$[35] = onImageClick;
|
|
384
|
+
$[36] = openLinkMode;
|
|
385
|
+
$[37] = removeLink;
|
|
386
|
+
$[38] = t;
|
|
387
|
+
$[39] = t12;
|
|
388
|
+
} else t12 = $[39];
|
|
391
389
|
let t13;
|
|
392
|
-
if ($[
|
|
390
|
+
if ($[40] !== editor || $[41] !== shouldShow || $[42] !== t12) {
|
|
393
391
|
t13 = /* @__PURE__ */ jsx(BubbleMenu, {
|
|
394
392
|
editor,
|
|
395
393
|
shouldShow,
|
|
@@ -397,11 +395,11 @@ function RichTextBubbleMenu(t0) {
|
|
|
397
395
|
className: "qp-rich-text-editor__bubble floating-surface text-popover-foreground",
|
|
398
396
|
children: t12
|
|
399
397
|
});
|
|
400
|
-
$[
|
|
401
|
-
$[
|
|
402
|
-
$[
|
|
403
|
-
$[
|
|
404
|
-
} else t13 = $[
|
|
398
|
+
$[40] = editor;
|
|
399
|
+
$[41] = shouldShow;
|
|
400
|
+
$[42] = t12;
|
|
401
|
+
$[43] = t13;
|
|
402
|
+
} else t13 = $[43];
|
|
405
403
|
return t13;
|
|
406
404
|
}
|
|
407
405
|
function _temp2(option_2) {
|
|
@@ -2,7 +2,6 @@ import { useTranslation } from "../../../i18n/hooks.mjs";
|
|
|
2
2
|
import { Button } from "../../ui/button.mjs";
|
|
3
3
|
import { Input } from "../../ui/input.mjs";
|
|
4
4
|
import { Popover, PopoverContent, PopoverHeader, PopoverTitle, PopoverTrigger } from "../../ui/popover.mjs";
|
|
5
|
-
import { useCollectionItem } from "../../../hooks/use-collection.mjs";
|
|
6
5
|
import { MediaPickerDialog } from "../../media/media-picker-dialog.mjs";
|
|
7
6
|
import { useRichTextImageUpload } from "./image-upload.mjs";
|
|
8
7
|
import * as React from "react";
|
|
@@ -21,13 +20,11 @@ function ImagePopover({ editor, open, onOpenChange, disabled, onImageUpload, ima
|
|
|
21
20
|
const [uploadingImage, setUploadingImage] = React.useState(false);
|
|
22
21
|
const fileInputRef = React.useRef(null);
|
|
23
22
|
const [isPickerOpen, setIsPickerOpen] = React.useState(false);
|
|
24
|
-
const [selectedAssetId, setSelectedAssetId] = React.useState(null);
|
|
25
23
|
const { collection, uploadImageFile } = useRichTextImageUpload({
|
|
26
24
|
imageCollection,
|
|
27
25
|
onImageUpload
|
|
28
26
|
});
|
|
29
27
|
const showMediaLibrary = enableMediaLibrary ?? true;
|
|
30
|
-
const { data: selectedAsset } = useCollectionItem(collection || "", selectedAssetId || "", void 0, { enabled: !!collection && !!selectedAssetId });
|
|
31
28
|
const handleInsertImageUrl = React.useCallback(() => {
|
|
32
29
|
if (!editor || !imageUrl) return;
|
|
33
30
|
editor.chain().focus().setImage({
|
|
@@ -73,34 +70,26 @@ function ImagePopover({ editor, open, onOpenChange, disabled, onImageUpload, ima
|
|
|
73
70
|
t,
|
|
74
71
|
uploadImageFile
|
|
75
72
|
]);
|
|
76
|
-
React.
|
|
77
|
-
if (!
|
|
78
|
-
const assetUrl = selectedAsset?.url;
|
|
79
|
-
if (!assetUrl) {
|
|
73
|
+
const insertAssetImage = React.useCallback((asset) => {
|
|
74
|
+
if (!editor || !asset?.url) {
|
|
80
75
|
toast.error(t("upload.error"));
|
|
81
|
-
setSelectedAssetId(null);
|
|
82
76
|
return;
|
|
83
77
|
}
|
|
84
78
|
editor.chain().focus().setImage({
|
|
85
|
-
src:
|
|
86
|
-
alt: imageAlt ||
|
|
79
|
+
src: asset.url,
|
|
80
|
+
alt: imageAlt || asset.alt || void 0
|
|
87
81
|
}).run();
|
|
88
82
|
setImageUrl("");
|
|
89
83
|
setImageAlt("");
|
|
90
|
-
setSelectedAssetId(null);
|
|
91
84
|
onOpenChange(false);
|
|
92
85
|
}, [
|
|
93
86
|
editor,
|
|
94
87
|
imageAlt,
|
|
95
88
|
onOpenChange,
|
|
96
|
-
selectedAsset,
|
|
97
|
-
selectedAssetId,
|
|
98
89
|
t
|
|
99
90
|
]);
|
|
100
|
-
const handlePickerSelect = (
|
|
101
|
-
|
|
102
|
-
if (!selectedId) return;
|
|
103
|
-
setSelectedAssetId(selectedId);
|
|
91
|
+
const handlePickerSelect = (_ids, selectedAssets) => {
|
|
92
|
+
insertAssetImage(Array.isArray(selectedAssets) ? selectedAssets[0] : selectedAssets);
|
|
104
93
|
setIsPickerOpen(false);
|
|
105
94
|
};
|
|
106
95
|
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs(Popover, {
|
|
@@ -168,7 +168,7 @@ function RichTextEditorLoadingSkeleton(t0) {
|
|
|
168
168
|
* "Schema is missing its top node type" error.
|
|
169
169
|
*/
|
|
170
170
|
function RichTextEditor(t0) {
|
|
171
|
-
const $ = c(
|
|
171
|
+
const $ = c(114);
|
|
172
172
|
const { name, value, onChange, disabled, readOnly, label, description, placeholder, required, error, localized, locale, extensions, preset, features, showCharacterCount, maxCharacters, enableImages, onImageUpload, imageCollection, enableMediaLibrary } = t0;
|
|
173
173
|
const { t } = useTranslation();
|
|
174
174
|
const resolveText = useResolveText();
|
|
@@ -376,16 +376,13 @@ function RichTextEditor(t0) {
|
|
|
376
376
|
const extensionLabels = t23;
|
|
377
377
|
let t24;
|
|
378
378
|
if ($[68] !== extensionLabels || $[69] !== extensions || $[70] !== maxCharacters || $[71] !== placeholder || $[72] !== resolvedFeatures || $[73] !== t) {
|
|
379
|
-
t24 = (
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
});
|
|
387
|
-
return result instanceof Promise ? void 0 : result;
|
|
388
|
-
};
|
|
379
|
+
t24 = buildExtensions({
|
|
380
|
+
features: resolvedFeatures,
|
|
381
|
+
labels: extensionLabels,
|
|
382
|
+
placeholder: placeholder || t("editor.startWriting"),
|
|
383
|
+
maxCharacters,
|
|
384
|
+
customExtensions: extensions
|
|
385
|
+
});
|
|
389
386
|
$[68] = extensionLabels;
|
|
390
387
|
$[69] = extensions;
|
|
391
388
|
$[70] = maxCharacters;
|
|
@@ -394,51 +391,38 @@ function RichTextEditor(t0) {
|
|
|
394
391
|
$[73] = t;
|
|
395
392
|
$[74] = t24;
|
|
396
393
|
} else t24 = $[74];
|
|
397
|
-
const
|
|
394
|
+
const extensionBuild = t24;
|
|
395
|
+
const syncExtensions = extensionBuild instanceof Promise ? void 0 : extensionBuild;
|
|
396
|
+
const [asyncExtensionState, setAsyncExtensionState] = React.useState(null);
|
|
398
397
|
let t25;
|
|
399
398
|
let t26;
|
|
400
|
-
if ($[75] !==
|
|
399
|
+
if ($[75] !== extensionBuild) {
|
|
401
400
|
t25 = () => {
|
|
401
|
+
if (!(extensionBuild instanceof Promise)) return;
|
|
402
402
|
let mounted = true;
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
customExtensions: extensions
|
|
409
|
-
});
|
|
410
|
-
if (result_0 instanceof Promise) result_0.then((exts) => {
|
|
411
|
-
if (mounted) setResolvedExtensions(exts);
|
|
403
|
+
extensionBuild.then((exts) => {
|
|
404
|
+
if (mounted) setAsyncExtensionState({
|
|
405
|
+
source: extensionBuild,
|
|
406
|
+
extensions: exts
|
|
407
|
+
});
|
|
412
408
|
});
|
|
413
|
-
else setResolvedExtensions(result_0);
|
|
414
409
|
return () => {
|
|
415
410
|
mounted = false;
|
|
416
411
|
};
|
|
417
412
|
};
|
|
418
|
-
t26 = [
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
maxCharacters,
|
|
423
|
-
extensions,
|
|
424
|
-
t
|
|
425
|
-
];
|
|
426
|
-
$[75] = extensionLabels;
|
|
427
|
-
$[76] = extensions;
|
|
428
|
-
$[77] = maxCharacters;
|
|
429
|
-
$[78] = placeholder;
|
|
430
|
-
$[79] = resolvedFeatures;
|
|
431
|
-
$[80] = t;
|
|
432
|
-
$[81] = t25;
|
|
433
|
-
$[82] = t26;
|
|
413
|
+
t26 = [extensionBuild];
|
|
414
|
+
$[75] = extensionBuild;
|
|
415
|
+
$[76] = t25;
|
|
416
|
+
$[77] = t26;
|
|
434
417
|
} else {
|
|
435
|
-
t25 = $[
|
|
436
|
-
t26 = $[
|
|
418
|
+
t25 = $[76];
|
|
419
|
+
t26 = $[77];
|
|
437
420
|
}
|
|
438
421
|
React.useEffect(t25, t26);
|
|
422
|
+
const resolvedExtensions = syncExtensions ?? (asyncExtensionState?.source === extensionBuild ? asyncExtensionState.extensions : void 0);
|
|
439
423
|
const t27 = disabled || readOnly;
|
|
440
424
|
let t28;
|
|
441
|
-
if ($[
|
|
425
|
+
if ($[78] !== locale || $[79] !== localized || $[80] !== name || $[81] !== required || $[82] !== resolvedLabel) {
|
|
442
426
|
t28 = resolvedLabel && /* @__PURE__ */ jsxs("div", {
|
|
443
427
|
className: "flex items-center gap-2",
|
|
444
428
|
children: [/* @__PURE__ */ jsxs(Label, {
|
|
@@ -449,15 +433,15 @@ function RichTextEditor(t0) {
|
|
|
449
433
|
})]
|
|
450
434
|
}), localized && /* @__PURE__ */ jsx(LocaleBadge, { locale: locale || "i18n" })]
|
|
451
435
|
});
|
|
452
|
-
$[
|
|
453
|
-
$[
|
|
454
|
-
$[
|
|
455
|
-
$[
|
|
456
|
-
$[
|
|
457
|
-
$[
|
|
458
|
-
} else t28 = $[
|
|
436
|
+
$[78] = locale;
|
|
437
|
+
$[79] = localized;
|
|
438
|
+
$[80] = name;
|
|
439
|
+
$[81] = required;
|
|
440
|
+
$[82] = resolvedLabel;
|
|
441
|
+
$[83] = t28;
|
|
442
|
+
} else t28 = $[83];
|
|
459
443
|
let t29;
|
|
460
|
-
if ($[
|
|
444
|
+
if ($[84] !== describedBy || $[85] !== disabled || $[86] !== enableImages || $[87] !== enableMediaLibrary || $[88] !== error || $[89] !== imageCollection || $[90] !== locale || $[91] !== maxCharacters || $[92] !== name || $[93] !== onChange || $[94] !== onImageUpload || $[95] !== readOnly || $[96] !== resolvedExtensions || $[97] !== resolvedFeatures || $[98] !== resolvedLabel || $[99] !== showCharacterCount || $[100] !== value) {
|
|
461
445
|
t29 = resolvedExtensions ? /* @__PURE__ */ jsx(RichTextEditorCore, {
|
|
462
446
|
name,
|
|
463
447
|
ariaLabel: resolvedLabel ?? name,
|
|
@@ -482,49 +466,49 @@ function RichTextEditor(t0) {
|
|
|
482
466
|
error,
|
|
483
467
|
showToolbar: resolvedFeatures.toolbar
|
|
484
468
|
});
|
|
485
|
-
$[
|
|
486
|
-
$[
|
|
487
|
-
$[
|
|
488
|
-
$[
|
|
489
|
-
$[
|
|
490
|
-
$[
|
|
491
|
-
$[
|
|
492
|
-
$[
|
|
493
|
-
$[
|
|
494
|
-
$[
|
|
495
|
-
$[
|
|
496
|
-
$[
|
|
497
|
-
$[
|
|
498
|
-
$[
|
|
499
|
-
$[
|
|
500
|
-
$[
|
|
501
|
-
$[
|
|
502
|
-
$[
|
|
503
|
-
} else t29 = $[
|
|
469
|
+
$[84] = describedBy;
|
|
470
|
+
$[85] = disabled;
|
|
471
|
+
$[86] = enableImages;
|
|
472
|
+
$[87] = enableMediaLibrary;
|
|
473
|
+
$[88] = error;
|
|
474
|
+
$[89] = imageCollection;
|
|
475
|
+
$[90] = locale;
|
|
476
|
+
$[91] = maxCharacters;
|
|
477
|
+
$[92] = name;
|
|
478
|
+
$[93] = onChange;
|
|
479
|
+
$[94] = onImageUpload;
|
|
480
|
+
$[95] = readOnly;
|
|
481
|
+
$[96] = resolvedExtensions;
|
|
482
|
+
$[97] = resolvedFeatures;
|
|
483
|
+
$[98] = resolvedLabel;
|
|
484
|
+
$[99] = showCharacterCount;
|
|
485
|
+
$[100] = value;
|
|
486
|
+
$[101] = t29;
|
|
487
|
+
} else t29 = $[101];
|
|
504
488
|
let t30;
|
|
505
|
-
if ($[
|
|
489
|
+
if ($[102] !== descriptionId || $[103] !== resolvedDescription) {
|
|
506
490
|
t30 = resolvedDescription && /* @__PURE__ */ jsx("p", {
|
|
507
491
|
id: descriptionId,
|
|
508
492
|
className: "text-muted-foreground text-xs",
|
|
509
493
|
children: resolvedDescription
|
|
510
494
|
});
|
|
511
|
-
$[
|
|
512
|
-
$[
|
|
513
|
-
$[
|
|
514
|
-
} else t30 = $[
|
|
495
|
+
$[102] = descriptionId;
|
|
496
|
+
$[103] = resolvedDescription;
|
|
497
|
+
$[104] = t30;
|
|
498
|
+
} else t30 = $[104];
|
|
515
499
|
let t31;
|
|
516
|
-
if ($[
|
|
500
|
+
if ($[105] !== error || $[106] !== errorId) {
|
|
517
501
|
t31 = error && /* @__PURE__ */ jsx("p", {
|
|
518
502
|
id: errorId,
|
|
519
503
|
className: "text-destructive text-xs",
|
|
520
504
|
children: error
|
|
521
505
|
});
|
|
522
|
-
$[
|
|
523
|
-
$[
|
|
524
|
-
$[
|
|
525
|
-
} else t31 = $[
|
|
506
|
+
$[105] = error;
|
|
507
|
+
$[106] = errorId;
|
|
508
|
+
$[107] = t31;
|
|
509
|
+
} else t31 = $[107];
|
|
526
510
|
let t32;
|
|
527
|
-
if ($[
|
|
511
|
+
if ($[108] !== t27 || $[109] !== t28 || $[110] !== t29 || $[111] !== t30 || $[112] !== t31) {
|
|
528
512
|
t32 = /* @__PURE__ */ jsxs("div", {
|
|
529
513
|
className: "space-y-2",
|
|
530
514
|
"data-disabled": t27,
|
|
@@ -535,13 +519,13 @@ function RichTextEditor(t0) {
|
|
|
535
519
|
t31
|
|
536
520
|
]
|
|
537
521
|
});
|
|
538
|
-
$[
|
|
539
|
-
$[
|
|
540
|
-
$[
|
|
541
|
-
$[
|
|
542
|
-
$[
|
|
543
|
-
$[
|
|
544
|
-
} else t32 = $[
|
|
522
|
+
$[108] = t27;
|
|
523
|
+
$[109] = t28;
|
|
524
|
+
$[110] = t29;
|
|
525
|
+
$[111] = t30;
|
|
526
|
+
$[112] = t31;
|
|
527
|
+
$[113] = t32;
|
|
528
|
+
} else t32 = $[113];
|
|
545
529
|
return t32;
|
|
546
530
|
}
|
|
547
531
|
/**
|
|
@@ -26,13 +26,22 @@ const VERSION_META_KEYS = new Set([
|
|
|
26
26
|
"versionCreatedAt"
|
|
27
27
|
]);
|
|
28
28
|
const EMPTY_AUDIT_ENTRIES = [];
|
|
29
|
+
const RELATIVE_TIME_FORMATTERS = /* @__PURE__ */ new Map();
|
|
30
|
+
function getRelativeTimeFormatter(locale) {
|
|
31
|
+
let formatter = RELATIVE_TIME_FORMATTERS.get(locale);
|
|
32
|
+
if (!formatter) {
|
|
33
|
+
formatter = new Intl.RelativeTimeFormat(locale, { numeric: "auto" });
|
|
34
|
+
RELATIVE_TIME_FORMATTERS.set(locale, formatter);
|
|
35
|
+
}
|
|
36
|
+
return formatter;
|
|
37
|
+
}
|
|
29
38
|
function formatRelativeTime(date, locale) {
|
|
30
39
|
const diff = (/* @__PURE__ */ new Date()).getTime() - date.getTime();
|
|
31
40
|
const absSeconds = Math.max(0, Math.floor(Math.abs(diff) / 1e3));
|
|
32
41
|
const minutes = Math.floor(absSeconds / 60);
|
|
33
42
|
const hours = Math.floor(minutes / 60);
|
|
34
43
|
const days = Math.floor(hours / 24);
|
|
35
|
-
const formatter =
|
|
44
|
+
const formatter = getRelativeTimeFormatter(locale);
|
|
36
45
|
if (days > 0) return formatter.format(-days, "day");
|
|
37
46
|
if (hours > 0) return formatter.format(-hours, "hour");
|
|
38
47
|
if (minutes > 0) return formatter.format(-minutes, "minute");
|
|
@@ -136,16 +145,22 @@ function extractRichText(value) {
|
|
|
136
145
|
return summary ? truncate(summary, 180) : null;
|
|
137
146
|
}
|
|
138
147
|
function summarizeObjectArray(value) {
|
|
139
|
-
const labels =
|
|
148
|
+
const labels = [];
|
|
149
|
+
for (const item of value) {
|
|
150
|
+
if (!isObjectRecord(item)) continue;
|
|
151
|
+
const label = summarizeObject(item);
|
|
152
|
+
if (label) labels.push(label);
|
|
153
|
+
}
|
|
140
154
|
if (labels.length === 0) return null;
|
|
141
155
|
return labels.length === value.length ? truncate(labels.join(", "), 180) : null;
|
|
142
156
|
}
|
|
143
157
|
function summarizeBlocks(value) {
|
|
144
|
-
const blockNames =
|
|
145
|
-
|
|
158
|
+
const blockNames = [];
|
|
159
|
+
for (const item of value) {
|
|
160
|
+
if (!isObjectRecord(item)) continue;
|
|
146
161
|
const type = item.blockType ?? item.block ?? item.type ?? item._type ?? item.name;
|
|
147
|
-
|
|
148
|
-
}
|
|
162
|
+
if (typeof type === "string") blockNames.push(formatLabel(type));
|
|
163
|
+
}
|
|
149
164
|
if (blockNames.length === 0) return null;
|
|
150
165
|
return truncate([...new Set(blockNames)].join(", "), 180);
|
|
151
166
|
}
|
|
@@ -597,15 +612,15 @@ function VersionsList(t0) {
|
|
|
597
612
|
const resolveText = useResolveText();
|
|
598
613
|
let t1;
|
|
599
614
|
if ($[0] !== versions) {
|
|
600
|
-
t1 =
|
|
615
|
+
t1 = versions.slice().sort(_temp2);
|
|
601
616
|
$[0] = versions;
|
|
602
617
|
$[1] = t1;
|
|
603
618
|
} else t1 = $[1];
|
|
604
619
|
const sortedAscVersions = t1;
|
|
605
620
|
let t2;
|
|
606
|
-
if ($[2] !==
|
|
607
|
-
t2 =
|
|
608
|
-
$[2] =
|
|
621
|
+
if ($[2] !== versions) {
|
|
622
|
+
t2 = versions.slice().sort(_temp3);
|
|
623
|
+
$[2] = versions;
|
|
609
624
|
$[3] = t2;
|
|
610
625
|
} else t2 = $[3];
|
|
611
626
|
const sortedVersions = t2;
|