alinea 2.0.0-preview.2 → 2.0.0-preview.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/.init/content/pages/welcome.json +1 -1
  2. package/dist/LICENSES.md +63 -63
  3. package/dist/adapter/next/previews.js +3 -1
  4. package/dist/adapter/next/previews.spec.d.ts +1 -0
  5. package/dist/bundled.d.ts +63 -17
  6. package/dist/chunks/{chunk-UVOEM4AH.js → chunk-HFBZMKIN.js} +1 -1
  7. package/dist/cli/Serve.js +1 -1
  8. package/dist/cli/bin.js +1 -1
  9. package/dist/cloud/CloudRemote.js +1 -1
  10. package/dist/components/Breadcrumbs.js +2 -2
  11. package/dist/components/Calendar.js +5 -5
  12. package/dist/components/Checkbox.js +3 -3
  13. package/dist/components/ComboBox.js +12 -12
  14. package/dist/components/DateField.js +3 -3
  15. package/dist/components/DatePicker.js +5 -5
  16. package/dist/components/DateRangePicker.js +7 -7
  17. package/dist/components/Disclosure.js +8 -8
  18. package/dist/components/Label.js +6 -6
  19. package/dist/components/List.js +29 -29
  20. package/dist/components/Menu.js +4 -4
  21. package/dist/components/Modal.js +4 -4
  22. package/dist/components/MultipleSelect.js +24 -24
  23. package/dist/components/NumberField.js +5 -5
  24. package/dist/components/ProgressCircle.js +3 -3
  25. package/dist/components/RadioGroup.js +2 -2
  26. package/dist/components/SearchField.js +7 -7
  27. package/dist/components/Select.js +8 -8
  28. package/dist/components/Surface.js +3 -3
  29. package/dist/components/Table.js +8 -8
  30. package/dist/components/Tabs.js +4 -4
  31. package/dist/components/TagGroup.js +2 -2
  32. package/dist/components/TextField.js +4 -4
  33. package/dist/components/TimeField.js +3 -3
  34. package/dist/components/Toolbar.js +3 -3
  35. package/dist/components/Tooltip.js +3 -3
  36. package/dist/components/Tree.d.ts +4 -2
  37. package/dist/components/Tree.js +18 -4
  38. package/dist/core/Graph.d.ts +1 -1
  39. package/dist/core/Infer.d.ts +8 -1
  40. package/dist/core/db/EntryAliases.js +1 -4
  41. package/dist/core/db/EntryResolver.js +6 -6
  42. package/dist/core/db/EntryTransaction.js +1 -0
  43. package/dist/core/db/Operation.d.ts +2 -2
  44. package/dist/core/db/Operation.js +11 -1
  45. package/dist/dashboard/App.js +8 -2
  46. package/dist/dashboard/app/AccessDenied.d.ts +16 -1
  47. package/dist/dashboard/app/AccessDenied.js +20 -11
  48. package/dist/dashboard/app/ActivityStatus.js +15 -15
  49. package/dist/dashboard/app/AppShell.js +2 -2
  50. package/dist/dashboard/app/AuthView.js +8 -8
  51. package/dist/dashboard/app/CompactField.js +13 -13
  52. package/dist/dashboard/app/DashboardErrorBoundary.js +5 -5
  53. package/dist/dashboard/app/EntryHeader.js +7 -7
  54. package/dist/dashboard/app/EntryReferences.js +10 -10
  55. package/dist/dashboard/app/EntrySidebar.js +11 -11
  56. package/dist/dashboard/app/EntrySidebarPreview.js +52 -26
  57. package/dist/dashboard/app/EntrySidebarPreview.story.d.ts +6 -1
  58. package/dist/dashboard/app/EntryTranslationBanner.js +5 -5
  59. package/dist/dashboard/app/Explorer.d.ts +2 -1
  60. package/dist/dashboard/app/Explorer.js +56 -44
  61. package/dist/dashboard/app/ExplorerCards.js +42 -46
  62. package/dist/dashboard/app/ExplorerFileCard.js +18 -18
  63. package/dist/dashboard/app/ExplorerList.js +11 -11
  64. package/dist/dashboard/app/ExplorerModal.js +5 -5
  65. package/dist/dashboard/app/ExplorerTable.js +53 -53
  66. package/dist/dashboard/app/LinkPicker.js +34 -9
  67. package/dist/dashboard/app/LocaleMenu.js +5 -5
  68. package/dist/dashboard/app/SidebarLayout.js +3 -3
  69. package/dist/dashboard/app/SidebarTree.js +48 -56
  70. package/dist/dashboard/app/WorkspaceMenu.js +11 -11
  71. package/dist/dashboard/app/WorkspaceRoots.js +24 -24
  72. package/dist/dashboard/app/editor/FileEditor.js +26 -26
  73. package/dist/dashboard/app/editor/FilePreview.js +4 -4
  74. package/dist/dashboard/app/modals/CreateEntry.js +2 -2
  75. package/dist/dashboard/app/pages/EntryPage.js +17 -17
  76. package/dist/dashboard/app/pages/UsersPage.js +35 -35
  77. package/dist/dashboard/app/ui/DashboardModal.js +17 -17
  78. package/dist/dashboard/app/ui/Rail.js +2 -2
  79. package/dist/dashboard/app/ui/Sidebar.js +2 -2
  80. package/dist/field/check/CheckField.view.js +2 -2
  81. package/dist/field/code/CodeField.view.js +11 -11
  82. package/dist/field/link/EntryLink.d.ts +1 -1
  83. package/dist/field/link/EntryLink.js +1 -0
  84. package/dist/field/link/Link.js +1 -0
  85. package/dist/field/link/LinkField.d.ts +5 -0
  86. package/dist/field/link/LinkField.view.js +58 -41
  87. package/dist/field/list/ListField.view.js +14 -14
  88. package/dist/field/metadata/MetadataField.d.ts +2 -0
  89. package/dist/field/metadata/MetadataField.js +2 -1
  90. package/dist/field/metadata/MetadataField.view.js +19 -19
  91. package/dist/field/richtext/RichTextBlock.js +2 -2
  92. package/dist/field/richtext/RichTextExtensions.js +24 -24
  93. package/dist/field/richtext/RichTextField.view.js +4 -4
  94. package/dist/field/richtext/RichTextInsertMenu.js +3 -3
  95. package/dist/index.css +21 -0
  96. package/dist/preview/PreviewMessage.d.ts +3 -0
  97. package/dist/preview/PreviewMessage.js +1 -0
  98. package/dist/preview/RegisterPreview.js +29 -9
  99. package/dist/preview/widget.js +6 -12
  100. package/dist/query.d.ts +7 -7
  101. package/package.json +1 -1
@@ -14,6 +14,7 @@ export interface ExplorerHeaderEntry {
14
14
  onBack(): void;
15
15
  }
16
16
  export interface ExplorerHeaderProps {
17
+ canBrowse?: boolean;
17
18
  autoFocusSearch?: boolean;
18
19
  controls?: ReactNode;
19
20
  explorer: DashboardExplorer;
@@ -35,7 +36,7 @@ interface ExplorerSearchProps {
35
36
  page: ExplorerReadyPage;
36
37
  }
37
38
  export declare function ExplorerSearch({ autoFocus, explorer, onEntryAction, page }: ExplorerSearchProps): import("react").JSX.Element;
38
- export declare function ExplorerHeader({ autoFocusSearch, controls, explorer, headerEntry, navigate, page, titleControls }: ExplorerHeaderProps): import("react").JSX.Element;
39
+ export declare function ExplorerHeader({ canBrowse, autoFocusSearch, controls, explorer, headerEntry, navigate, page, titleControls }: ExplorerHeaderProps): import("react").JSX.Element;
39
40
  export declare function ExplorerBody({ compactTable, explorer, onSelectionChange, page }: ExplorerBodyProps): import("react").JSX.Element;
40
41
  export declare function Explorer({ controls, explorer, headerEntry, page: loadedPage, titleControls }: ExplorerProps): import("react").JSX.Element;
41
42
  export {};
@@ -60,65 +60,65 @@ import { EditorBackButton } from "./EditorBackButton.js";
60
60
 
61
61
  // src/dashboard/app/Explorer.module.css
62
62
  var Explorer_default = {
63
- "ExplorerHeader": "alinea-ExplorerHeader",
64
- "Explorer-searchSlot": "alinea-Explorer-searchSlot",
65
- "ExplorerSearchSlot": "alinea-Explorer-searchSlot",
66
- "Sorting-button": "alinea-Sorting-button",
67
- "SortingButton": "alinea-Sorting-button",
68
- "Explorer-toolbar": "alinea-Explorer-toolbar",
69
- "ExplorerToolbar": "alinea-Explorer-toolbar",
63
+ "Explorer-locationBreadcrumbs-current": "alinea-Explorer-locationBreadcrumbs-current",
64
+ "ExplorerLocationBreadcrumbsCurrent": "alinea-Explorer-locationBreadcrumbs-current",
65
+ "Explorer-locationBreadcrumbs-root": "alinea-Explorer-locationBreadcrumbs-root",
66
+ "ExplorerLocationBreadcrumbsRoot": "alinea-Explorer-locationBreadcrumbs-root",
70
67
  "Explorer-locationBreadcrumbs": "alinea-Explorer-locationBreadcrumbs",
71
68
  "ExplorerLocationBreadcrumbs": "alinea-Explorer-locationBreadcrumbs",
72
- "Explorer-locationBreadcrumbs-item": "alinea-Explorer-locationBreadcrumbs-item",
73
- "ExplorerLocationBreadcrumbsItem": "alinea-Explorer-locationBreadcrumbs-item",
74
- "ExplorerHeader-title": "alinea-ExplorerHeader-title",
75
- "ExplorerHeaderTitle": "alinea-ExplorerHeader-title",
69
+ "ExplorerHeader-location": "alinea-ExplorerHeader-location",
70
+ "ExplorerHeaderLocation": "alinea-ExplorerHeader-location",
71
+ "Sorting-button": "alinea-Sorting-button",
72
+ "SortingButton": "alinea-Sorting-button",
76
73
  "Explorer-locationBreadcrumbs-localeValue": "alinea-Explorer-locationBreadcrumbs-localeValue",
77
74
  "ExplorerLocationBreadcrumbsLocaleValue": "alinea-Explorer-locationBreadcrumbs-localeValue",
78
- "Explorer-locationBreadcrumbs-separator": "alinea-Explorer-locationBreadcrumbs-separator",
79
- "ExplorerLocationBreadcrumbsSeparator": "alinea-Explorer-locationBreadcrumbs-separator",
75
+ "Popover": "alinea-Popover",
76
+ "Explorer-toolbar": "alinea-Explorer-toolbar",
77
+ "ExplorerToolbar": "alinea-Explorer-toolbar",
78
+ "Explorer-locationBreadcrumbs-parentValue": "alinea-Explorer-locationBreadcrumbs-parentValue",
79
+ "ExplorerLocationBreadcrumbsParentValue": "alinea-Explorer-locationBreadcrumbs-parentValue",
80
80
  "ExplorerHeader-content": "alinea-ExplorerHeader-content",
81
81
  "ExplorerHeaderContent": "alinea-ExplorerHeader-content",
82
- "ExplorerHeader-primary": "alinea-ExplorerHeader-primary",
83
- "ExplorerHeaderPrimary": "alinea-ExplorerHeader-primary",
84
- "ExplorerHeader-location": "alinea-ExplorerHeader-location",
85
- "ExplorerHeaderLocation": "alinea-ExplorerHeader-location",
86
- "is-navigation": "alinea-is-navigation",
87
- "isNavigation": "alinea-is-navigation",
82
+ "Explorer-resultMode": "alinea-Explorer-resultMode",
83
+ "ExplorerResultMode": "alinea-Explorer-resultMode",
88
84
  "Explorer-toolbar-tools": "alinea-Explorer-toolbar-tools",
89
85
  "ExplorerToolbarTools": "alinea-Explorer-toolbar-tools",
90
- "Explorer-toolbar-mediaActions": "alinea-Explorer-toolbar-mediaActions",
91
- "ExplorerToolbarMediaActions": "alinea-Explorer-toolbar-mediaActions",
86
+ "ExplorerHeader": "alinea-ExplorerHeader",
92
87
  "Explorer-breadcrumbs": "alinea-Explorer-breadcrumbs",
93
88
  "ExplorerBreadcrumbs": "alinea-Explorer-breadcrumbs",
94
- "Popover": "alinea-Popover",
95
- "Popover-Label": "alinea-Popover-Label",
96
- "PopoverLabel": "alinea-Popover-Label",
97
89
  "Explorer-locationBreadcrumbs-parentAction": "alinea-Explorer-locationBreadcrumbs-parentAction",
98
90
  "ExplorerLocationBreadcrumbsParentAction": "alinea-Explorer-locationBreadcrumbs-parentAction",
99
- "Explorer-locationBreadcrumbs-parentValue": "alinea-Explorer-locationBreadcrumbs-parentValue",
100
- "ExplorerLocationBreadcrumbsParentValue": "alinea-Explorer-locationBreadcrumbs-parentValue",
101
- "Explorer-locationBreadcrumbs-value": "alinea-Explorer-locationBreadcrumbs-value",
102
- "ExplorerLocationBreadcrumbsValue": "alinea-Explorer-locationBreadcrumbs-value",
103
- "Explorer-resultMode": "alinea-Explorer-resultMode",
104
- "ExplorerResultMode": "alinea-Explorer-resultMode",
105
- "Explorer-actions": "alinea-Explorer-actions",
106
- "ExplorerActions": "alinea-Explorer-actions",
107
- "Explorer-locationBreadcrumbs-current": "alinea-Explorer-locationBreadcrumbs-current",
108
- "ExplorerLocationBreadcrumbsCurrent": "alinea-Explorer-locationBreadcrumbs-current",
109
- "Explorer-searchScope": "alinea-Explorer-searchScope",
110
- "ExplorerSearchScope": "alinea-Explorer-searchScope",
111
- "Explorer-locationBreadcrumbs-root": "alinea-Explorer-locationBreadcrumbs-root",
112
- "ExplorerLocationBreadcrumbsRoot": "alinea-Explorer-locationBreadcrumbs-root",
113
- "Explorer-locationBreadcrumbs-root-locale": "alinea-Explorer-locationBreadcrumbs-root-locale",
114
- "ExplorerLocationBreadcrumbsRootLocale": "alinea-Explorer-locationBreadcrumbs-root-locale",
115
91
  "Explorer-search": "alinea-Explorer-search",
116
92
  "ExplorerSearch": "alinea-Explorer-search",
93
+ "Popover-Label": "alinea-Popover-Label",
94
+ "PopoverLabel": "alinea-Popover-Label",
117
95
  "Explorer": "alinea-Explorer",
96
+ "Explorer-searchSlot": "alinea-Explorer-searchSlot",
97
+ "ExplorerSearchSlot": "alinea-Explorer-searchSlot",
118
98
  "ExplorerHeader-main": "alinea-ExplorerHeader-main",
119
99
  "ExplorerHeaderMain": "alinea-ExplorerHeader-main",
100
+ "is-navigation": "alinea-is-navigation",
101
+ "isNavigation": "alinea-is-navigation",
102
+ "Explorer-searchScope": "alinea-Explorer-searchScope",
103
+ "ExplorerSearchScope": "alinea-Explorer-searchScope",
104
+ "ExplorerHeader-primary": "alinea-ExplorerHeader-primary",
105
+ "ExplorerHeaderPrimary": "alinea-ExplorerHeader-primary",
106
+ "Explorer-actions": "alinea-Explorer-actions",
107
+ "ExplorerActions": "alinea-Explorer-actions",
108
+ "Explorer-locationBreadcrumbs-root-locale": "alinea-Explorer-locationBreadcrumbs-root-locale",
109
+ "ExplorerLocationBreadcrumbsRootLocale": "alinea-Explorer-locationBreadcrumbs-root-locale",
110
+ "Explorer-locationBreadcrumbs-value": "alinea-Explorer-locationBreadcrumbs-value",
111
+ "ExplorerLocationBreadcrumbsValue": "alinea-Explorer-locationBreadcrumbs-value",
120
112
  "Explorer-viewport": "alinea-Explorer-viewport",
121
- "ExplorerViewport": "alinea-Explorer-viewport"
113
+ "ExplorerViewport": "alinea-Explorer-viewport",
114
+ "Explorer-locationBreadcrumbs-item": "alinea-Explorer-locationBreadcrumbs-item",
115
+ "ExplorerLocationBreadcrumbsItem": "alinea-Explorer-locationBreadcrumbs-item",
116
+ "Explorer-toolbar-mediaActions": "alinea-Explorer-toolbar-mediaActions",
117
+ "ExplorerToolbarMediaActions": "alinea-Explorer-toolbar-mediaActions",
118
+ "Explorer-locationBreadcrumbs-separator": "alinea-Explorer-locationBreadcrumbs-separator",
119
+ "ExplorerLocationBreadcrumbsSeparator": "alinea-Explorer-locationBreadcrumbs-separator",
120
+ "ExplorerHeader-title": "alinea-ExplorerHeader-title",
121
+ "ExplorerHeaderTitle": "alinea-ExplorerHeader-title"
122
122
  };
123
123
 
124
124
  // src/dashboard/app/Explorer.tsx
@@ -234,13 +234,17 @@ function ExplorerSearchScope({ explorer, page }) {
234
234
  }
235
235
  );
236
236
  }
237
- function ExplorerResultMode({ explorer, page }) {
237
+ function ExplorerResultMode({
238
+ canBrowse: navigationEnabled,
239
+ explorer,
240
+ page
241
+ }) {
238
242
  const resultMode = page.resultMode;
239
243
  const setResultMode = useSetAtom(explorer.resultMode);
240
244
  const search = useAtomValue(explorer.search);
241
245
  const [, startTransition] = useTransition();
242
246
  const canShowFiltered = explorer.pickChildren || explorer.hasCondition || Boolean(search.trim());
243
- const canBrowse = !explorer.pickChildren && !search.trim();
247
+ const canBrowse = navigationEnabled && !explorer.pickChildren && !search.trim();
244
248
  return /* @__PURE__ */ jsxs(
245
249
  ToggleButtonGroup,
246
250
  {
@@ -709,6 +713,7 @@ function ExplorerToolbar({ explorer, page }) {
709
713
  ] });
710
714
  }
711
715
  function ExplorerHeader({
716
+ canBrowse = true,
712
717
  autoFocusSearch,
713
718
  controls,
714
719
  explorer,
@@ -751,7 +756,14 @@ function ExplorerHeader({
751
756
  className: styles.ExplorerHeader.location(),
752
757
  role: "group",
753
758
  children: [
754
- /* @__PURE__ */ jsx(ExplorerResultMode, { explorer, page }),
759
+ /* @__PURE__ */ jsx(
760
+ ExplorerResultMode,
761
+ {
762
+ canBrowse,
763
+ explorer,
764
+ page
765
+ }
766
+ ),
755
767
  !page.searchesEverything && /* @__PURE__ */ jsx(
756
768
  ExplorerLocationMenu,
757
769
  {
@@ -4,8 +4,7 @@ import {
4
4
  import {
5
5
  useAtom,
6
6
  useAtomValue,
7
- useSetAtom,
8
- useStore
7
+ useSetAtom
9
8
  } from "../../chunks/chunk-U4VOHNR2.js";
10
9
  import "../../chunks/chunk-Y7XOMJOC.js";
11
10
  import {
@@ -43,49 +42,49 @@ import { configAtom } from "../atoms/core.js";
43
42
 
44
43
  // src/dashboard/app/ExplorerCards.module.css
45
44
  var ExplorerCards_default = {
46
- "ExplorerCards-entry-body": "alinea-ExplorerCards-entry-body",
47
- "ExplorerCardsEntryBody": "alinea-ExplorerCards-entry-body",
48
- "ExplorerCards-surface": "alinea-ExplorerCards-surface",
49
- "ExplorerCardsSurface": "alinea-ExplorerCards-surface",
45
+ "ExplorerCards-item-card": "alinea-ExplorerCards-item-card",
46
+ "ExplorerCardsItemCard": "alinea-ExplorerCards-item-card",
47
+ "is-file": "alinea-is-file",
48
+ "isFile": "alinea-is-file",
49
+ "is-wide": "alinea-is-wide",
50
+ "isWide": "alinea-is-wide",
51
+ "ExplorerCards-skeleton-pulse": "alinea-ExplorerCards-skeleton-pulse",
52
+ "ExplorerCardsSkeletonPulse": "alinea-ExplorerCards-skeleton-pulse",
53
+ "ExplorerCards-item": "alinea-ExplorerCards-item",
54
+ "ExplorerCardsItem": "alinea-ExplorerCards-item",
50
55
  "ExplorerCards-entry-icon": "alinea-ExplorerCards-entry-icon",
51
56
  "ExplorerCardsEntryIcon": "alinea-ExplorerCards-entry-icon",
57
+ "ExplorerCards-entry": "alinea-ExplorerCards-entry",
58
+ "ExplorerCardsEntry": "alinea-ExplorerCards-entry",
59
+ "ExplorerCards-entry-iconSkeleton": "alinea-ExplorerCards-entry-iconSkeleton",
60
+ "ExplorerCardsEntryIconSkeleton": "alinea-ExplorerCards-entry-iconSkeleton",
61
+ "ExplorerCards-entry-body-inner": "alinea-ExplorerCards-entry-body-inner",
62
+ "ExplorerCardsEntryBodyInner": "alinea-ExplorerCards-entry-body-inner",
52
63
  "is-breadcrumbs": "alinea-is-breadcrumbs",
53
64
  "isBreadcrumbs": "alinea-is-breadcrumbs",
54
65
  "ExplorerCards-entry-label": "alinea-ExplorerCards-entry-label",
55
66
  "ExplorerCardsEntryLabel": "alinea-ExplorerCards-entry-label",
56
- "ExplorerCards-entry-body-inner": "alinea-ExplorerCards-entry-body-inner",
57
- "ExplorerCardsEntryBodyInner": "alinea-ExplorerCards-entry-body-inner",
67
+ "ExplorerCards-entry-top": "alinea-ExplorerCards-entry-top",
68
+ "ExplorerCardsEntryTop": "alinea-ExplorerCards-entry-top",
69
+ "ExplorerCards-parents": "alinea-ExplorerCards-parents",
70
+ "ExplorerCardsParents": "alinea-ExplorerCards-parents",
71
+ "ExplorerCards-item-checkbox": "alinea-ExplorerCards-item-checkbox",
72
+ "ExplorerCardsItemCheckbox": "alinea-ExplorerCards-item-checkbox",
58
73
  "ExplorerCards-viewport": "alinea-ExplorerCards-viewport",
59
74
  "ExplorerCardsViewport": "alinea-ExplorerCards-viewport",
60
75
  "ExplorerCards-parents-separator": "alinea-ExplorerCards-parents-separator",
61
76
  "ExplorerCardsParentsSeparator": "alinea-ExplorerCards-parents-separator",
62
- "ExplorerCards-skeleton-pulse": "alinea-ExplorerCards-skeleton-pulse",
63
- "ExplorerCardsSkeletonPulse": "alinea-ExplorerCards-skeleton-pulse",
64
- "is-wide": "alinea-is-wide",
65
- "isWide": "alinea-is-wide",
66
- "ExplorerCards-item-drag-handle": "alinea-ExplorerCards-item-drag-handle",
67
- "ExplorerCardsItemDragHandle": "alinea-ExplorerCards-item-drag-handle",
68
- "ExplorerCards-entry-top": "alinea-ExplorerCards-entry-top",
69
- "ExplorerCardsEntryTop": "alinea-ExplorerCards-entry-top",
70
- "ExplorerCards-item-card": "alinea-ExplorerCards-item-card",
71
- "ExplorerCardsItemCard": "alinea-ExplorerCards-item-card",
72
- "ExplorerCards-entry": "alinea-ExplorerCards-entry",
73
- "ExplorerCardsEntry": "alinea-ExplorerCards-entry",
77
+ "ExplorerCards": "alinea-ExplorerCards",
74
78
  "ExplorerCards-entry-meta": "alinea-ExplorerCards-entry-meta",
75
79
  "ExplorerCardsEntryMeta": "alinea-ExplorerCards-entry-meta",
76
- "ExplorerCards-item": "alinea-ExplorerCards-item",
77
- "ExplorerCardsItem": "alinea-ExplorerCards-item",
78
- "ExplorerCards": "alinea-ExplorerCards",
79
- "ExplorerCards-parents": "alinea-ExplorerCards-parents",
80
- "ExplorerCardsParents": "alinea-ExplorerCards-parents",
81
- "is-file": "alinea-is-file",
82
- "isFile": "alinea-is-file",
80
+ "ExplorerCards-entry-body": "alinea-ExplorerCards-entry-body",
81
+ "ExplorerCardsEntryBody": "alinea-ExplorerCards-entry-body",
83
82
  "is-loading": "alinea-is-loading",
84
83
  "isLoading": "alinea-is-loading",
85
- "ExplorerCards-entry-iconSkeleton": "alinea-ExplorerCards-entry-iconSkeleton",
86
- "ExplorerCardsEntryIconSkeleton": "alinea-ExplorerCards-entry-iconSkeleton",
87
- "ExplorerCards-item-checkbox": "alinea-ExplorerCards-item-checkbox",
88
- "ExplorerCardsItemCheckbox": "alinea-ExplorerCards-item-checkbox",
84
+ "ExplorerCards-surface": "alinea-ExplorerCards-surface",
85
+ "ExplorerCardsSurface": "alinea-ExplorerCards-surface",
86
+ "ExplorerCards-item-drag-handle": "alinea-ExplorerCards-item-drag-handle",
87
+ "ExplorerCardsItemDragHandle": "alinea-ExplorerCards-item-drag-handle",
89
88
  "ExplorerCards-entry-skeleton": "alinea-ExplorerCards-entry-skeleton",
90
89
  "ExplorerCardsEntrySkeleton": "alinea-ExplorerCards-entry-skeleton"
91
90
  };
@@ -105,6 +104,7 @@ var ExplorerCardItem = memo(function ExplorerCardItem2({
105
104
  breadcrumbs,
106
105
  entry,
107
106
  explorer,
107
+ locale,
108
108
  includeWorkspace,
109
109
  showSelectionControls
110
110
  }) {
@@ -125,6 +125,8 @@ var ExplorerCardItem = memo(function ExplorerCardItem2({
125
125
  breadcrumbs,
126
126
  entry,
127
127
  data,
128
+ explorer,
129
+ locale,
128
130
  isSelectable,
129
131
  includeWorkspace,
130
132
  showSelectionControls
@@ -172,6 +174,8 @@ var ExplorerCardLoadedItem = memo(function ExplorerCardLoadedItem2({
172
174
  breadcrumbs,
173
175
  entry,
174
176
  data,
177
+ explorer,
178
+ locale,
175
179
  isSelectable,
176
180
  includeWorkspace,
177
181
  showSelectionControls
@@ -180,6 +184,11 @@ var ExplorerCardLoadedItem = memo(function ExplorerCardLoadedItem2({
180
184
  const icon = useAtomValue(data.icon);
181
185
  const type = useAtomValue(data.type);
182
186
  const canOpen = useAtomValue(data.canOpen);
187
+ const performAction = useSetAtom(explorer.onAction);
188
+ const hasAction = explorer.hasRowAction || !isSelectable && canOpen;
189
+ function onAction() {
190
+ startTransition(() => performAction(entry, locale));
191
+ }
183
192
  const info = useAtomValue(
184
193
  useMemo(() => unwrap(data.fileInfo, (previous) => previous ?? null), [data])
185
194
  );
@@ -197,6 +206,7 @@ var ExplorerCardLoadedItem = memo(function ExplorerCardLoadedItem2({
197
206
  {
198
207
  id: entry.id,
199
208
  textValue: label,
209
+ onAction: hasAction ? onAction : void 0,
200
210
  className: styles.ExplorerCards.item(),
201
211
  isDisabled: !isSelectable,
202
212
  children: [
@@ -330,23 +340,9 @@ function ExplorerCards({
330
340
  locale
331
341
  }) {
332
342
  const [selected, setSelected] = useAtom(explorer.selection);
333
- const performAction = useSetAtom(explorer.onAction);
334
- const store = useStore();
335
343
  const selectionMode = explorer.selectionMode;
336
344
  const hasSelection = selectionMode !== "none";
337
345
  const showSelectionControls = hasSelection && explorer.showSelectionControls;
338
- function onItemAction(key) {
339
- const entry = items.find((item) => item.id === String(key));
340
- if (!entry) return;
341
- if (!explorer.hasRowAction) {
342
- const { data } = store.get(entry.data);
343
- const canOpen = !store.get(explorer.isSelectable(entry)) && data !== void 0 && store.get(data.canOpen);
344
- if (!canOpen) return;
345
- startTransition(() => performAction(entry, locale));
346
- return;
347
- }
348
- performAction(entry, locale);
349
- }
350
346
  return /* @__PURE__ */ jsx(
351
347
  "div",
352
348
  {
@@ -366,7 +362,6 @@ function ExplorerCards({
366
362
  dragAndDropHooks,
367
363
  selectedKeys: hasSelection ? selected : void 0,
368
364
  onSelectionChange: hasSelection ? setSelected : void 0,
369
- onAction: onItemAction,
370
365
  renderEmptyState,
371
366
  style: { display: "block", width: "100%", height: "100%" },
372
367
  children: (item) => /* @__PURE__ */ jsx(
@@ -375,6 +370,7 @@ function ExplorerCards({
375
370
  breadcrumbs: explorer.breadcrumbs || page.resultMode === "matches" || page.searchesEverything,
376
371
  entry: item,
377
372
  explorer,
373
+ locale,
378
374
  includeWorkspace: page.searchesEverything,
379
375
  showSelectionControls
380
376
  }
@@ -13,34 +13,34 @@ import { IcRoundInsertDriveFile } from "../icons.js";
13
13
 
14
14
  // src/dashboard/app/ExplorerFileCard.module.css
15
15
  var ExplorerFileCard_default = {
16
+ "ExplorerFileCard-meta": "alinea-ExplorerFileCard-meta",
17
+ "ExplorerFileCardMeta": "alinea-ExplorerFileCard-meta",
18
+ "ExplorerFileCard-preview-image": "alinea-ExplorerFileCard-preview-image",
19
+ "ExplorerFileCardPreviewImage": "alinea-ExplorerFileCard-preview-image",
20
+ "is-card": "alinea-is-card",
21
+ "isCard": "alinea-is-card",
22
+ "ExplorerFileCard-preview-placeholder": "alinea-ExplorerFileCard-preview-placeholder",
23
+ "ExplorerFileCardPreviewPlaceholder": "alinea-ExplorerFileCard-preview-placeholder",
24
+ "ExplorerFileCard-top": "alinea-ExplorerFileCard-top",
25
+ "ExplorerFileCardTop": "alinea-ExplorerFileCard-top",
16
26
  "ExplorerFileCard-preview": "alinea-ExplorerFileCard-preview",
17
27
  "ExplorerFileCardPreview": "alinea-ExplorerFileCard-preview",
18
- "is-breadcrumbs": "alinea-is-breadcrumbs",
19
- "isBreadcrumbs": "alinea-is-breadcrumbs",
20
- "ExplorerFileCard-body-inner": "alinea-ExplorerFileCard-body-inner",
21
- "ExplorerFileCardBodyInner": "alinea-ExplorerFileCard-body-inner",
28
+ "ExplorerFileCard-meta-details": "alinea-ExplorerFileCard-meta-details",
29
+ "ExplorerFileCardMetaDetails": "alinea-ExplorerFileCard-meta-details",
22
30
  "ExplorerFileCard-label": "alinea-ExplorerFileCard-label",
23
31
  "ExplorerFileCardLabel": "alinea-ExplorerFileCard-label",
24
- "ExplorerFileCard-top": "alinea-ExplorerFileCard-top",
25
- "ExplorerFileCardTop": "alinea-ExplorerFileCard-top",
32
+ "is-breadcrumbs": "alinea-is-breadcrumbs",
33
+ "isBreadcrumbs": "alinea-is-breadcrumbs",
26
34
  "ExplorerFileCard-body": "alinea-ExplorerFileCard-body",
27
35
  "ExplorerFileCardBody": "alinea-ExplorerFileCard-body",
28
- "is-card": "alinea-is-card",
29
- "isCard": "alinea-is-card",
30
- "ExplorerFileCard-meta": "alinea-ExplorerFileCard-meta",
31
- "ExplorerFileCardMeta": "alinea-ExplorerFileCard-meta",
32
- "ExplorerFileCard-preview-placeholder": "alinea-ExplorerFileCard-preview-placeholder",
33
- "ExplorerFileCardPreviewPlaceholder": "alinea-ExplorerFileCard-preview-placeholder",
34
- "ExplorerFileCard-meta-extension": "alinea-ExplorerFileCard-meta-extension",
35
- "ExplorerFileCardMetaExtension": "alinea-ExplorerFileCard-meta-extension",
36
+ "ExplorerFileCard-body-inner": "alinea-ExplorerFileCard-body-inner",
37
+ "ExplorerFileCardBodyInner": "alinea-ExplorerFileCard-body-inner",
36
38
  "is-row": "alinea-is-row",
37
39
  "isRow": "alinea-is-row",
40
+ "ExplorerFileCard-meta-extension": "alinea-ExplorerFileCard-meta-extension",
41
+ "ExplorerFileCardMetaExtension": "alinea-ExplorerFileCard-meta-extension",
38
42
  "ExplorerFileCard-preview-placeholder-icon": "alinea-ExplorerFileCard-preview-placeholder-icon",
39
43
  "ExplorerFileCardPreviewPlaceholderIcon": "alinea-ExplorerFileCard-preview-placeholder-icon",
40
- "ExplorerFileCard-meta-details": "alinea-ExplorerFileCard-meta-details",
41
- "ExplorerFileCardMetaDetails": "alinea-ExplorerFileCard-meta-details",
42
- "ExplorerFileCard-preview-image": "alinea-ExplorerFileCard-preview-image",
43
- "ExplorerFileCardPreviewImage": "alinea-ExplorerFileCard-preview-image",
44
44
  "ExplorerFileCard": "alinea-ExplorerFileCard"
45
45
  };
46
46
 
@@ -28,25 +28,25 @@ import { ExplorerCards } from "./ExplorerCards.js";
28
28
 
29
29
  // src/dashboard/app/ExplorerList.module.css
30
30
  var ExplorerList_default = {
31
+ "ExplorerList-empty-title": "alinea-ExplorerList-empty-title",
32
+ "ExplorerListEmptyTitle": "alinea-ExplorerList-empty-title",
33
+ "ExplorerList": "alinea-ExplorerList",
31
34
  "ExplorerList-empty-text": "alinea-ExplorerList-empty-text",
32
35
  "ExplorerListEmptyText": "alinea-ExplorerList-empty-text",
33
- "ExplorerList-pending": "alinea-ExplorerList-pending",
34
- "ExplorerListPending": "alinea-ExplorerList-pending",
35
36
  "ExplorerList-empty-copy": "alinea-ExplorerList-empty-copy",
36
37
  "ExplorerListEmptyCopy": "alinea-ExplorerList-empty-copy",
38
+ "ExplorerList-empty-button": "alinea-ExplorerList-empty-button",
39
+ "ExplorerListEmptyButton": "alinea-ExplorerList-empty-button",
40
+ "ExplorerList-empty-icon": "alinea-ExplorerList-empty-icon",
41
+ "ExplorerListEmptyIcon": "alinea-ExplorerList-empty-icon",
37
42
  "ExplorerList-drag-preview": "alinea-ExplorerList-drag-preview",
38
43
  "ExplorerListDragPreview": "alinea-ExplorerList-drag-preview",
39
- "ExplorerList-empty": "alinea-ExplorerList-empty",
40
- "ExplorerListEmpty": "alinea-ExplorerList-empty",
41
- "ExplorerList-empty-title": "alinea-ExplorerList-empty-title",
42
- "ExplorerListEmptyTitle": "alinea-ExplorerList-empty-title",
43
- "ExplorerList": "alinea-ExplorerList",
44
44
  "ExplorerList-drag-preview-label": "alinea-ExplorerList-drag-preview-label",
45
45
  "ExplorerListDragPreviewLabel": "alinea-ExplorerList-drag-preview-label",
46
- "ExplorerList-empty-button": "alinea-ExplorerList-empty-button",
47
- "ExplorerListEmptyButton": "alinea-ExplorerList-empty-button",
48
- "ExplorerList-empty-icon": "alinea-ExplorerList-empty-icon",
49
- "ExplorerListEmptyIcon": "alinea-ExplorerList-empty-icon"
46
+ "ExplorerList-pending": "alinea-ExplorerList-pending",
47
+ "ExplorerListPending": "alinea-ExplorerList-pending",
48
+ "ExplorerList-empty": "alinea-ExplorerList-empty",
49
+ "ExplorerListEmpty": "alinea-ExplorerList-empty"
50
50
  };
51
51
 
52
52
  // src/dashboard/app/ExplorerList.tsx
@@ -10,13 +10,13 @@ import { Suspense } from "react";
10
10
 
11
11
  // src/dashboard/app/ExplorerModal.module.css
12
12
  var ExplorerModal_default = {
13
- "ExplorerModal": "alinea-ExplorerModal",
14
- "ExplorerModalContent": "alinea-ExplorerModalContent",
15
- "ExplorerModalLoading": "alinea-ExplorerModalLoading",
16
- "ExplorerModalNavigation": "alinea-ExplorerModalNavigation",
17
13
  "ExplorerModalFooter": "alinea-ExplorerModalFooter",
18
14
  "ExplorerModalSelection": "alinea-ExplorerModalSelection",
19
- "ExplorerModalActions": "alinea-ExplorerModalActions"
15
+ "ExplorerModalContent": "alinea-ExplorerModalContent",
16
+ "ExplorerModalNavigation": "alinea-ExplorerModalNavigation",
17
+ "ExplorerModalLoading": "alinea-ExplorerModalLoading",
18
+ "ExplorerModalActions": "alinea-ExplorerModalActions",
19
+ "ExplorerModal": "alinea-ExplorerModal"
20
20
  };
21
21
 
22
22
  // src/dashboard/app/ExplorerModal.tsx
@@ -37,71 +37,71 @@ import { CompactField, compactFieldText } from "./CompactField.js";
37
37
 
38
38
  // src/dashboard/app/ExplorerTable.module.css
39
39
  var ExplorerTable_default = {
40
- "ExplorerTable-chevron-button": "alinea-ExplorerTable-chevron-button",
41
- "ExplorerTableChevronButton": "alinea-ExplorerTable-chevron-button",
42
- "ExplorerTable-icon": "alinea-ExplorerTable-icon",
43
- "ExplorerTableIcon": "alinea-ExplorerTable-icon",
44
- "ExplorerTable-field-label": "alinea-ExplorerTable-field-label",
45
- "ExplorerTableFieldLabel": "alinea-ExplorerTable-field-label",
46
- "ExplorerTable-row-grid": "alinea-ExplorerTable-row-grid",
47
- "ExplorerTableRowGrid": "alinea-ExplorerTable-row-grid",
48
- "is-unselectable": "alinea-is-unselectable",
49
- "isUnselectable": "alinea-is-unselectable",
50
- "ExplorerTable-header": "alinea-ExplorerTable-header",
51
- "ExplorerTableHeader": "alinea-ExplorerTable-header",
52
- "ExplorerTable-viewport": "alinea-ExplorerTable-viewport",
53
- "ExplorerTableViewport": "alinea-ExplorerTable-viewport",
54
- "ExplorerTable-cell-selection": "alinea-ExplorerTable-cell-selection",
55
- "ExplorerTableCellSelection": "alinea-ExplorerTable-cell-selection",
56
- "ExplorerTable-column": "alinea-ExplorerTable-column",
57
- "ExplorerTableColumn": "alinea-ExplorerTable-column",
58
- "ExplorerTable-breadcrumb-root": "alinea-ExplorerTable-breadcrumb-root",
59
- "ExplorerTableBreadcrumbRoot": "alinea-ExplorerTable-breadcrumb-root",
40
+ "ExplorerTable-chevron": "alinea-ExplorerTable-chevron",
41
+ "ExplorerTableChevron": "alinea-ExplorerTable-chevron",
60
42
  "ExplorerTable-empty": "alinea-ExplorerTable-empty",
61
43
  "ExplorerTableEmpty": "alinea-ExplorerTable-empty",
62
- "ExplorerTable-field-value": "alinea-ExplorerTable-field-value",
63
- "ExplorerTableFieldValue": "alinea-ExplorerTable-field-value",
64
- "ExplorerTable": "alinea-ExplorerTable",
65
- "ExplorerTable-surface": "alinea-ExplorerTable-surface",
66
- "ExplorerTableSurface": "alinea-ExplorerTable-surface",
44
+ "is-linked": "alinea-is-linked",
45
+ "isLinked": "alinea-is-linked",
67
46
  "ExplorerTable-iconDrag": "alinea-ExplorerTable-iconDrag",
68
47
  "ExplorerTableIconDrag": "alinea-ExplorerTable-iconDrag",
69
- "ExplorerTable-breadcrumbs": "alinea-ExplorerTable-breadcrumbs",
70
- "ExplorerTableBreadcrumbs": "alinea-ExplorerTable-breadcrumbs",
71
- "ExplorerTable-chevron": "alinea-ExplorerTable-chevron",
72
- "ExplorerTableChevron": "alinea-ExplorerTable-chevron",
73
- "ExplorerTable-column-selection": "alinea-ExplorerTable-column-selection",
74
- "ExplorerTableColumnSelection": "alinea-ExplorerTable-column-selection",
75
- "ExplorerTable-cell-title": "alinea-ExplorerTable-cell-title",
76
- "ExplorerTableCellTitle": "alinea-ExplorerTable-cell-title",
48
+ "ExplorerTable-title": "alinea-ExplorerTable-title",
49
+ "ExplorerTableTitle": "alinea-ExplorerTable-title",
77
50
  "ExplorerTable-cell": "alinea-ExplorerTable-cell",
78
51
  "ExplorerTableCell": "alinea-ExplorerTable-cell",
79
- "is-compact": "alinea-is-compact",
80
- "isCompact": "alinea-is-compact",
52
+ "ExplorerTable-column-selection": "alinea-ExplorerTable-column-selection",
53
+ "ExplorerTableColumnSelection": "alinea-ExplorerTable-column-selection",
54
+ "ExplorerTable-body": "alinea-ExplorerTable-body",
55
+ "ExplorerTableBody": "alinea-ExplorerTable-body",
81
56
  "ExplorerTable-checkbox": "alinea-ExplorerTable-checkbox",
82
57
  "ExplorerTableCheckbox": "alinea-ExplorerTable-checkbox",
83
- "ExplorerTable-breadcrumb-label": "alinea-ExplorerTable-breadcrumb-label",
84
- "ExplorerTableBreadcrumbLabel": "alinea-ExplorerTable-breadcrumb-label",
58
+ "ExplorerTable-row-grid": "alinea-ExplorerTable-row-grid",
59
+ "ExplorerTableRowGrid": "alinea-ExplorerTable-row-grid",
60
+ "ExplorerTable-viewport": "alinea-ExplorerTable-viewport",
61
+ "ExplorerTableViewport": "alinea-ExplorerTable-viewport",
62
+ "ExplorerTable-chevron-button": "alinea-ExplorerTable-chevron-button",
63
+ "ExplorerTableChevronButton": "alinea-ExplorerTable-chevron-button",
85
64
  "ExplorerTable-row": "alinea-ExplorerTable-row",
86
65
  "ExplorerTableRow": "alinea-ExplorerTable-row",
87
- "ExplorerTable-column-filler": "alinea-ExplorerTable-column-filler",
88
- "ExplorerTableColumnFiller": "alinea-ExplorerTable-column-filler",
89
- "is-linked": "alinea-is-linked",
90
- "isLinked": "alinea-is-linked",
91
- "is-noSelectionControls": "alinea-is-noSelectionControls",
92
- "isNoSelectionControls": "alinea-is-noSelectionControls",
93
66
  "ExplorerTable-cell-filler": "alinea-ExplorerTable-cell-filler",
94
67
  "ExplorerTableCellFiller": "alinea-ExplorerTable-cell-filler",
95
- "ExplorerTable-titleAction": "alinea-ExplorerTable-titleAction",
96
- "ExplorerTableTitleAction": "alinea-ExplorerTable-titleAction",
97
- "ExplorerTable-field": "alinea-ExplorerTable-field",
98
- "ExplorerTableField": "alinea-ExplorerTable-field",
99
- "ExplorerTable-title": "alinea-ExplorerTable-title",
100
- "ExplorerTableTitle": "alinea-ExplorerTable-title",
68
+ "ExplorerTable-header": "alinea-ExplorerTable-header",
69
+ "ExplorerTableHeader": "alinea-ExplorerTable-header",
70
+ "is-unselectable": "alinea-is-unselectable",
71
+ "isUnselectable": "alinea-is-unselectable",
72
+ "ExplorerTable-field-label": "alinea-ExplorerTable-field-label",
73
+ "ExplorerTableFieldLabel": "alinea-ExplorerTable-field-label",
101
74
  "ExplorerTable-breadcrumb": "alinea-ExplorerTable-breadcrumb",
102
75
  "ExplorerTableBreadcrumb": "alinea-ExplorerTable-breadcrumb",
103
- "ExplorerTable-body": "alinea-ExplorerTable-body",
104
- "ExplorerTableBody": "alinea-ExplorerTable-body"
76
+ "ExplorerTable-surface": "alinea-ExplorerTable-surface",
77
+ "ExplorerTableSurface": "alinea-ExplorerTable-surface",
78
+ "is-compact": "alinea-is-compact",
79
+ "isCompact": "alinea-is-compact",
80
+ "ExplorerTable": "alinea-ExplorerTable",
81
+ "ExplorerTable-icon": "alinea-ExplorerTable-icon",
82
+ "ExplorerTableIcon": "alinea-ExplorerTable-icon",
83
+ "ExplorerTable-field": "alinea-ExplorerTable-field",
84
+ "ExplorerTableField": "alinea-ExplorerTable-field",
85
+ "ExplorerTable-breadcrumb-label": "alinea-ExplorerTable-breadcrumb-label",
86
+ "ExplorerTableBreadcrumbLabel": "alinea-ExplorerTable-breadcrumb-label",
87
+ "ExplorerTable-column": "alinea-ExplorerTable-column",
88
+ "ExplorerTableColumn": "alinea-ExplorerTable-column",
89
+ "is-noSelectionControls": "alinea-is-noSelectionControls",
90
+ "isNoSelectionControls": "alinea-is-noSelectionControls",
91
+ "ExplorerTable-column-filler": "alinea-ExplorerTable-column-filler",
92
+ "ExplorerTableColumnFiller": "alinea-ExplorerTable-column-filler",
93
+ "ExplorerTable-cell-selection": "alinea-ExplorerTable-cell-selection",
94
+ "ExplorerTableCellSelection": "alinea-ExplorerTable-cell-selection",
95
+ "ExplorerTable-cell-title": "alinea-ExplorerTable-cell-title",
96
+ "ExplorerTableCellTitle": "alinea-ExplorerTable-cell-title",
97
+ "ExplorerTable-titleAction": "alinea-ExplorerTable-titleAction",
98
+ "ExplorerTableTitleAction": "alinea-ExplorerTable-titleAction",
99
+ "ExplorerTable-field-value": "alinea-ExplorerTable-field-value",
100
+ "ExplorerTableFieldValue": "alinea-ExplorerTable-field-value",
101
+ "ExplorerTable-breadcrumb-root": "alinea-ExplorerTable-breadcrumb-root",
102
+ "ExplorerTableBreadcrumbRoot": "alinea-ExplorerTable-breadcrumb-root",
103
+ "ExplorerTable-breadcrumbs": "alinea-ExplorerTable-breadcrumbs",
104
+ "ExplorerTableBreadcrumbs": "alinea-ExplorerTable-breadcrumbs"
105
105
  };
106
106
 
107
107
  // src/dashboard/app/ExplorerTable.tsx
@@ -450,7 +450,7 @@ function ExplorerTable({
450
450
  const isSearching = Boolean(search.trim());
451
451
  const breadcrumbs = explorer.breadcrumbs || page.resultMode === "matches" || isSearching || page.searchesEverything;
452
452
  const hasSelection = selectionMode !== "none";
453
- const showSelectionControls = hasSelection && !compact && explorer.showSelectionControls;
453
+ const showSelectionControls = hasSelection && explorer.showSelectionControls && (!compact || selectionMode === "multiple");
454
454
  const columns = useMemo(
455
455
  () => createExplorerTableColumns({ compact, showSelectionControls }),
456
456
  [compact, showSelectionControls]
@@ -463,7 +463,7 @@ function ExplorerTable({
463
463
  setSelected(selection);
464
464
  onSelectionChange?.(selection);
465
465
  }
466
- return /* @__PURE__ */ jsx("div", { className: styles.ExplorerTable.viewport({ compact }), children: /* @__PURE__ */ jsxs(Surface, { className: styles.ExplorerTable.surface(), children: [
466
+ return /* @__PURE__ */ jsx("div", { className: styles.ExplorerTable.viewport({ compact }), children: /* @__PURE__ */ jsxs(Surface, { className: styles.ExplorerTable.surface({ compact }), children: [
467
467
  /* @__PURE__ */ jsx(
468
468
  $143fb904d86051ce$export$89be5a243e59c4b2,
469
469
  {