@parhelia/core 0.1.12910 → 0.1.12912
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/agents-view/AgentGalleryView.d.ts +1 -1
- package/dist/agents-view/AgentGalleryView.js +3 -2
- package/dist/agents-view/AgentGalleryView.js.map +1 -1
- package/dist/agents-view/AgentsView.js +1 -1
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/components/PageHeader.d.ts +7 -2
- package/dist/components/PageHeader.js +8 -3
- package/dist/components/PageHeader.js.map +1 -1
- package/dist/components/ui/UserPicker.d.ts +5 -1
- package/dist/components/ui/UserPicker.js +17 -3
- package/dist/components/ui/UserPicker.js.map +1 -1
- package/dist/components/ui/button.js +1 -1
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/command.js +1 -1
- package/dist/components/ui/delete-button.d.ts +1 -1
- package/dist/components/ui/delete-button.js +2 -2
- package/dist/components/ui/delete-button.js.map +1 -1
- package/dist/components/ui/dropdown-menu.js +3 -3
- package/dist/components/ui/input.js +1 -1
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/label.js +1 -1
- package/dist/components/ui/select.d.ts +2 -0
- package/dist/components/ui/select.js +8 -6
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/textarea.js +1 -3
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/config/config.js +5 -0
- package/dist/config/config.js.map +1 -1
- package/dist/editor/ContentTree.d.ts +3 -2
- package/dist/editor/ContentTree.js +4 -4
- package/dist/editor/ContentTree.js.map +1 -1
- package/dist/editor/EditorWarning.js +1 -1
- package/dist/editor/EditorWarning.js.map +1 -1
- package/dist/editor/FieldHistory.js +6 -4
- package/dist/editor/FieldHistory.js.map +1 -1
- package/dist/editor/ai/Agents.js +17 -23
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/ContentInspectorPopover.js +2 -1
- package/dist/editor/ai/ContentInspectorPopover.js.map +1 -1
- package/dist/editor/ai/agentCollection.d.ts +2 -0
- package/dist/editor/ai/agentCollection.js +8 -0
- package/dist/editor/ai/agentCollection.js.map +1 -0
- package/dist/editor/ai/agentMessageHelpers.d.ts +1 -0
- package/dist/editor/ai/agentMessageHelpers.js +4 -1
- package/dist/editor/ai/agentMessageHelpers.js.map +1 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.js +4 -1
- package/dist/editor/ai/terminal/agentSessionSnapshot.js.map +1 -1
- package/dist/editor/ai/terminal/components/AgentLoadingContent.js +2 -2
- package/dist/editor/ai/terminal/components/AgentLoadingContent.js.map +1 -1
- package/dist/editor/ai/terminal/components/AiResponseMessage.js +9 -3
- package/dist/editor/ai/terminal/components/AiResponseMessage.js.map +1 -1
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js +3 -3
- package/dist/editor/ai/terminal/components/EditOperationsPanel.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentDraftInitializer.js +3 -1
- package/dist/editor/ai/terminal/useAgentDraftInitializer.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentLoadErrorHandler.js +3 -1
- package/dist/editor/ai/terminal/useAgentLoadErrorHandler.js.map +1 -1
- package/dist/editor/ai/terminal/useAgentSessionFacade.js +7 -3
- package/dist/editor/ai/terminal/useAgentSessionFacade.js.map +1 -1
- package/dist/editor/bridge/protocol.d.ts +13 -0
- package/dist/editor/bridge/protocol.js +2 -1
- package/dist/editor/bridge/protocol.js.map +1 -1
- package/dist/editor/client/EditorShell.js +179 -30
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +7 -5
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/errorToast.d.ts +12 -0
- package/dist/editor/client/errorToast.js +67 -0
- package/dist/editor/client/errorToast.js.map +1 -0
- package/dist/editor/client/helpers.d.ts +2 -4
- package/dist/editor/client/helpers.js +3 -2
- package/dist/editor/client/helpers.js.map +1 -1
- package/dist/editor/client/hooks/useSocketMessageHandler.js +5 -3
- package/dist/editor/client/hooks/useSocketMessageHandler.js.map +1 -1
- package/dist/editor/client/operations.d.ts +2 -4
- package/dist/editor/client/operations.js +11 -2
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/ui/FullscreenControls.d.ts +0 -1
- package/dist/editor/client/ui/FullscreenControls.js +4 -17
- package/dist/editor/client/ui/FullscreenControls.js.map +1 -1
- package/dist/editor/field-types/DateFieldEditor.js +1 -1
- package/dist/editor/field-types/DateFieldEditor.js.map +1 -1
- package/dist/editor/field-types/DateTimeFieldEditor.js +1 -1
- package/dist/editor/field-types/DateTimeFieldEditor.js.map +1 -1
- package/dist/editor/field-types/useTextCompletion.js +12 -43
- package/dist/editor/field-types/useTextCompletion.js.map +1 -1
- package/dist/editor/media-selector/AiImageSearchPrompt.js +8 -17
- package/dist/editor/media-selector/AiImageSearchPrompt.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.d.ts +6 -1
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js +21 -13
- package/dist/editor/menubar/toolbar-sections/DeviceSwitchToolbar.js.map +1 -1
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js +6 -5
- package/dist/editor/page-editor-chrome/BridgeInlineFormatOverlay.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +8 -2
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/InsertComponentMenu.js +1 -1
- package/dist/editor/page-editor-chrome/InsertComponentMenu.js.map +1 -1
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.d.ts +3 -1
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js +34 -2
- package/dist/editor/page-editor-chrome/overlay/IframeOverlayProvider.js.map +1 -1
- package/dist/editor/page-viewer/MiniMap.d.ts +5 -1
- package/dist/editor/page-viewer/MiniMap.js +21 -9
- package/dist/editor/page-viewer/MiniMap.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +291 -4
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/RenderingParametersSection.js +1 -1
- package/dist/editor/page-viewer/RenderingParametersSection.js.map +1 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.js +2 -1
- package/dist/editor/page-viewer/bridgeFieldPatch.js.map +1 -1
- package/dist/editor/reviews/CreateReviewConfirmStep.d.ts +1 -2
- package/dist/editor/reviews/CreateReviewConfirmStep.js +3 -3
- package/dist/editor/reviews/CreateReviewConfirmStep.js.map +1 -1
- package/dist/editor/reviews/CreateReviewDialog.js +27 -3
- package/dist/editor/reviews/CreateReviewDialog.js.map +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js +1 -1
- package/dist/editor/reviews/DecisionsMatrix.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +3 -2
- package/dist/editor/services/contentService.js +19 -5
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/contextService.d.ts +8 -0
- package/dist/editor/services/contextService.js +19 -0
- package/dist/editor/services/contextService.js.map +1 -1
- package/dist/editor/services/textCompletionService.d.ts +14 -0
- package/dist/editor/services/textCompletionService.js +45 -0
- package/dist/editor/services/textCompletionService.js.map +1 -0
- package/dist/editor/settings/About.js +40 -263
- package/dist/editor/settings/About.js.map +1 -1
- package/dist/editor/settings/SettingsBreadcrumb.js +5 -1
- package/dist/editor/settings/SettingsBreadcrumb.js.map +1 -1
- package/dist/editor/settings/panels/AgentToolsPanel.js +3 -7
- package/dist/editor/settings/panels/AgentToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/AgentsPanel.js +2 -3
- package/dist/editor/settings/panels/AgentsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ClusterInstancesPanel.js +2 -3
- package/dist/editor/settings/panels/ClusterInstancesPanel.js.map +1 -1
- package/dist/editor/settings/panels/FieldTypeSerializersPanel.js +2 -4
- package/dist/editor/settings/panels/FieldTypeSerializersPanel.js.map +1 -1
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js +2 -3
- package/dist/editor/settings/panels/JavaScriptToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/McpToolsPanel.js +3 -4
- package/dist/editor/settings/panels/McpToolsPanel.js.map +1 -1
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js +2 -3
- package/dist/editor/settings/panels/ProjectTemplatesPanel.js.map +1 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.d.ts +3 -1
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js +9 -5
- package/dist/editor/setup-wizard/steps/LicenseActivationStep.js.map +1 -1
- package/dist/editor/setup-wizard/steps/LicenseEmailStep.d.ts +2 -1
- package/dist/editor/setup-wizard/steps/LicenseEmailStep.js +6 -3
- package/dist/editor/setup-wizard/steps/LicenseEmailStep.js.map +1 -1
- package/dist/editor/sidebar/EditHistory.js +11 -3
- package/dist/editor/sidebar/EditHistory.js.map +1 -1
- package/dist/editor/sidebar/WorkspaceRailMobile.js +1 -3
- package/dist/editor/sidebar/WorkspaceRailMobile.js.map +1 -1
- package/dist/editor/ui/ItemCollectionEditor.d.ts +6 -2
- package/dist/editor/ui/ItemCollectionEditor.js +163 -84
- package/dist/editor/ui/ItemCollectionEditor.js.map +1 -1
- package/dist/editor/ui/LoadingState.js +4 -4
- package/dist/editor/ui/LoadingState.js.map +1 -1
- package/dist/editor/ui/PerfectTree.d.ts +5 -1
- package/dist/editor/ui/PerfectTree.js +10 -6
- package/dist/editor/ui/PerfectTree.js.map +1 -1
- package/dist/editor/ui/SimpleIconButton.js +1 -1
- package/dist/editor/ui/TreeListSelector.d.ts +6 -2
- package/dist/editor/ui/TreeListSelector.js +2 -2
- package/dist/editor/ui/TreeListSelector.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/splash-screen/ModernSplashScreen.d.ts +2 -0
- package/dist/splash-screen/ModernSplashScreen.js +8 -3
- package/dist/splash-screen/ModernSplashScreen.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.js +2 -1
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/TaskAssigneeBadge.d.ts +1 -1
- package/dist/task-board/components/TaskAssigneeBadge.js +1 -1
- package/dist/task-board/components/TaskAssigneeBadge.js.map +1 -1
- package/dist/task-board/components/TaskAssigneePicker.js +1 -1
- package/dist/task-board/components/TaskAssigneePicker.js.map +1 -1
- package/dist/task-board/components/TaskRow.js +1 -1
- package/dist/task-board/components/TaskRow.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
3
|
import { useEditContext } from "../client/editContext";
|
|
4
4
|
import { useEffect, useMemo, useState } from "react";
|
|
5
5
|
import { SimpleIconButton } from "../ui/SimpleIconButton";
|
|
@@ -9,6 +9,9 @@ import { OperationItem } from "./OperationItem";
|
|
|
9
9
|
import { TimelineView } from "./TimelineView";
|
|
10
10
|
import { localStorageService } from "../services/localStorageService";
|
|
11
11
|
import { SearchInput } from "../../components/SearchInput";
|
|
12
|
+
import { LoadingState } from "../ui/LoadingState";
|
|
13
|
+
import { Button } from "../../components/ui/button";
|
|
14
|
+
import { Spinner } from "../ui/Spinner";
|
|
12
15
|
export function EditHistory() {
|
|
13
16
|
const editContext = useEditContext();
|
|
14
17
|
const [showDescriptions, setShowDescriptions] = useState(() => {
|
|
@@ -48,6 +51,9 @@ export function EditHistory() {
|
|
|
48
51
|
return path.includes(q) || title.includes(q) || description.includes(q);
|
|
49
52
|
});
|
|
50
53
|
}, [history, searchQuery]);
|
|
54
|
+
const showLoadMore = editContext.historyMode === "global" &&
|
|
55
|
+
editContext.canLoadMoreHistory &&
|
|
56
|
+
visibleHistory.length > 0;
|
|
51
57
|
return (_jsxs("div", { className: "absolute inset-0 flex flex-col", children: [_jsxs(SimpleToolbar, { children: [_jsx(SimpleIconButton, { selected: editContext.historyMode === "global", onClick: () => {
|
|
52
58
|
if (editContext.setHistoryMode) {
|
|
53
59
|
editContext.setHistoryMode("global");
|
|
@@ -60,8 +66,10 @@ export function EditHistory() {
|
|
|
60
66
|
if (editContext.setHistoryMode) {
|
|
61
67
|
editContext.setHistoryMode("current-version");
|
|
62
68
|
}
|
|
63
|
-
}, icon: _jsx(GitCommit, { className: "h-4 w-4", strokeWidth: 1 }), label: "Current version", "data-testid": "history-mode-current-version-button" }), _jsx("div", { className: "bg-border-default mx-1 h-4 w-px" }), _jsx(SimpleIconButton, { selected: editContext.showOnlyMyChanges, onClick: () => editContext.setShowOnlyMyChanges(!editContext.showOnlyMyChanges), icon: _jsx(User, { className: "h-4 w-4", strokeWidth: 1 }), label: "Show only my changes", "data-testid": "history-show-only-my-changes-button" }), editContext.historyMode === "global" && (_jsx(SimpleIconButton, { selected: editContext.filterByCurrentLanguage, onClick: () => editContext.setFilterByCurrentLanguage(!editContext.filterByCurrentLanguage), icon: _jsx(Languages, { className: "h-4 w-4", strokeWidth: 1 }), label: "Filter by current language", "data-testid": "history-filter-by-language-button" })), _jsx(SimpleIconButton, { selected: showDescriptions, onClick: () => setShowDescriptions(!showDescriptions), icon: _jsx(AlignLeft, { className: "h-4 w-4", strokeWidth: 1 }), label: "Show descriptions", "data-testid": "history-show-descriptions-button" })] }), _jsx("div", { className: "border-border-default border-b p-2", "data-testid": "history-search-input", children: _jsx(SearchInput, { value: searchQuery, onChange: editContext.setHistorySearchQuery, onClear: () => editContext.setHistorySearchQuery(""), placeholder: "Search history...", className: "w-full", loading: editContext.
|
|
69
|
+
}, icon: _jsx(GitCommit, { className: "h-4 w-4", strokeWidth: 1 }), label: "Current version", "data-testid": "history-mode-current-version-button" }), _jsx("div", { className: "bg-border-default mx-1 h-4 w-px" }), _jsx(SimpleIconButton, { selected: editContext.showOnlyMyChanges, onClick: () => editContext.setShowOnlyMyChanges(!editContext.showOnlyMyChanges), icon: _jsx(User, { className: "h-4 w-4", strokeWidth: 1 }), label: "Show only my changes", "data-testid": "history-show-only-my-changes-button" }), editContext.historyMode === "global" && (_jsx(SimpleIconButton, { selected: editContext.filterByCurrentLanguage, onClick: () => editContext.setFilterByCurrentLanguage(!editContext.filterByCurrentLanguage), icon: _jsx(Languages, { className: "h-4 w-4", strokeWidth: 1 }), label: "Filter by current language", "data-testid": "history-filter-by-language-button" })), _jsx(SimpleIconButton, { selected: showDescriptions, onClick: () => setShowDescriptions(!showDescriptions), icon: _jsx(AlignLeft, { className: "h-4 w-4", strokeWidth: 1 }), label: "Show descriptions", "data-testid": "history-show-descriptions-button" })] }), _jsx("div", { className: "border-border-default border-b p-2", "data-testid": "history-search-input", children: _jsx(SearchInput, { value: searchQuery, onChange: editContext.setHistorySearchQuery, onClear: () => editContext.setHistorySearchQuery(""), placeholder: "Search history...", className: "w-full", loading: editContext.isHistoryLoading || editContext.isHistoryLoadingMore }) }), _jsx("div", { className: "flex flex-1 flex-col overflow-x-hidden overflow-y-auto text-sm", children: editContext.isHistoryLoading ? (_jsx(LoadingState, { variant: "fill", spinnerSize: "lg", message: "Loading history..." })) : visibleHistory.length === 0 ? (_jsx("div", { className: "text-neutral-grey-50 p-4 text-center text-xs", children: hasSearchQuery
|
|
64
70
|
? `No history matches "${searchQuery.trim()}"`
|
|
65
|
-
: "No edit history available" })) : editContext.historyMode === "page-centric" ? (_jsx(TimelineView, { operations: visibleHistory, showUserName: !editContext.showOnlyMyChanges, showDescription: showDescriptions })) : (visibleHistory.map((o, i) => (_jsx(OperationItem, { operation: o, index: i, showUserName: !editContext.showOnlyMyChanges, showDescription: showDescriptions, hidePath: editContext.historyMode !== "global", showLanguage: editContext.historyMode === "global" }, o.id || i))))
|
|
71
|
+
: "No edit history available" })) : (_jsxs(_Fragment, { children: [editContext.historyMode === "page-centric" ? (_jsx(TimelineView, { operations: visibleHistory, showUserName: !editContext.showOnlyMyChanges, showDescription: showDescriptions })) : (visibleHistory.map((o, i) => (_jsx(OperationItem, { operation: o, index: i, showUserName: !editContext.showOnlyMyChanges, showDescription: showDescriptions, hidePath: editContext.historyMode !== "global", showLanguage: editContext.historyMode === "global" }, o.id || i)))), showLoadMore && (_jsx("div", { className: "border-border-default flex justify-center border-t bg-white px-3 py-3", children: _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: () => void editContext.loadMoreHistory(), disabled: editContext.isHistoryLoadingMore, "data-testid": "history-load-more-button", children: [editContext.isHistoryLoadingMore && _jsx(Spinner, { size: "xs" }), editContext.isHistoryLoadingMore
|
|
72
|
+
? "Loading more..."
|
|
73
|
+
: "Load more"] }) }))] })) })] }));
|
|
66
74
|
}
|
|
67
75
|
//# sourceMappingURL=EditHistory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditHistory.js","sourceRoot":"","sources":["../../../src/editor/sidebar/EditHistory.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"EditHistory.js","sourceRoot":"","sources":["../../../src/editor/sidebar/EditHistory.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,6 @@ export function WorkspaceRailMobile() {
|
|
|
9
9
|
if (!contextValues)
|
|
10
10
|
return null;
|
|
11
11
|
const { workspaceId, sidebars, showSidebarLabels, visibleWorkspaces } = contextValues;
|
|
12
|
-
const isEditorWorkspace = workspaceId === "editor";
|
|
13
12
|
const currentWorkspace = visibleWorkspaces?.find((w) => w.id === workspaceId);
|
|
14
13
|
const hasSidebars = currentWorkspace?.supportsSidebars ?? false;
|
|
15
14
|
const mobileSidebars = hasSidebars
|
|
@@ -28,7 +27,6 @@ export function WorkspaceRailMobile() {
|
|
|
28
27
|
if (settings)
|
|
29
28
|
mobileWorkspaces.push(settings);
|
|
30
29
|
}
|
|
31
|
-
return (_jsxs("div", { className: "border-border-default bg-neutral-grey-5/50 grid w-full max-w-full min-w-0 grid-cols-[auto_12px_minmax(0,1fr)] items-center justify-between gap-0 overflow-hidden border-t p-1.5 pb-[max(0.375rem,env(safe-area-inset-bottom))]", "data-testid": "bottom-row", children: [mobileWorkspaces.length > 0 && (_jsx(MobileWorkspacePopover, { workspaces: mobileWorkspaces, currentWorkspaceId: workspaceId, onWorkspaceSelect: handlers.onWorkspaceClick, showSidebarLabels: showSidebarLabels })), visibleSidebarItems.length > 0 ? _jsx(Separator, {}) : _jsx("div", {}), _jsxs("div", { className: "flex min-w-0 flex-row overflow-hidden", children: [_jsx("div", { className: "scrollbar-hide flex min-w-0 gap-1 overflow-x-auto", children:
|
|
32
|
-
visibleSidebarItems.map((sidebar) => (_jsx(NavigationPanelItem, { sidebar: sidebar, contextValues: contextValues, handlers: handlers, dragOverId: dragOverId, isMobile: true }, `sidebar-${sidebar.id}`))) }), isEditorWorkspace && mobileSidebars.length > 0 && (_jsx(MorePanelsButton, { panels: mobileSidebars, contextValues: contextValues, handlers: handlers }))] })] }));
|
|
30
|
+
return (_jsxs("div", { className: "border-border-default bg-neutral-grey-5/50 grid w-full max-w-full min-w-0 grid-cols-[auto_12px_minmax(0,1fr)] items-center justify-between gap-0 overflow-hidden border-t p-1.5 pb-[max(0.375rem,env(safe-area-inset-bottom))]", "data-testid": "bottom-row", children: [mobileWorkspaces.length > 0 && (_jsx(MobileWorkspacePopover, { workspaces: mobileWorkspaces, currentWorkspaceId: workspaceId, onWorkspaceSelect: handlers.onWorkspaceClick, showSidebarLabels: showSidebarLabels })), visibleSidebarItems.length > 0 ? _jsx(Separator, {}) : _jsx("div", {}), _jsxs("div", { className: "flex min-w-0 flex-row overflow-hidden", children: [_jsx("div", { className: "scrollbar-hide flex min-w-0 gap-1 overflow-x-auto", children: visibleSidebarItems.map((sidebar) => (_jsx(NavigationPanelItem, { sidebar: sidebar, contextValues: contextValues, handlers: handlers, dragOverId: dragOverId, isMobile: true }, `sidebar-${sidebar.id}`))) }), mobileSidebars.length > 0 && (_jsx(MorePanelsButton, { panels: mobileSidebars, contextValues: contextValues, handlers: handlers }))] })] }));
|
|
33
31
|
}
|
|
34
32
|
//# sourceMappingURL=WorkspaceRailMobile.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceRailMobile.js","sourceRoot":"","sources":["../../../src/editor/sidebar/WorkspaceRailMobile.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,CAC7B,cAAK,SAAS,EAAC,sEAAsE,GAAG,CACzF,CAAC;AAEF,MAAM,UAAU,mBAAmB;IACjC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,GAC5D,uBAAuB,EAAE,CAAC;IAE5B,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IAEhC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,GACnE,aAAa,CAAC;IAEhB,MAAM,
|
|
1
|
+
{"version":3,"file":"WorkspaceRailMobile.js","sourceRoot":"","sources":["../../../src/editor/sidebar/WorkspaceRailMobile.tsx"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export type SubitemCountState = "loading" | "error" | {
|
|
|
10
10
|
count: number;
|
|
11
11
|
complete: boolean;
|
|
12
12
|
};
|
|
13
|
-
export type SelectedTreeItemInput = Pick<ItemTreeNodeData, "id"> & Partial<Pick<ItemTreeNodeData, "displayName" | "idPath" | "language" | "name" | "path" | "version">>;
|
|
13
|
+
export type SelectedTreeItemInput = Pick<ItemTreeNodeData, "id"> & Partial<Pick<ItemTreeNodeData, "displayName" | "icon" | "idPath" | "language" | "name" | "path" | "version">>;
|
|
14
14
|
export type ItemCollectionEditorProps = {
|
|
15
15
|
/** Currently selected items with includeSubitems flag */
|
|
16
16
|
items: ItemWithSubtree[];
|
|
@@ -62,5 +62,9 @@ export type ItemCollectionEditorProps = {
|
|
|
62
62
|
expandIdPath?: string;
|
|
63
63
|
/** LocalStorage key for splitter position */
|
|
64
64
|
localStorageKey?: string;
|
|
65
|
+
/** Removes the outer frame while keeping internal panels and controls. */
|
|
66
|
+
frameless?: boolean;
|
|
67
|
+
/** Classes applied to the tree search wrapper. */
|
|
68
|
+
treeSearchContainerClassName?: string;
|
|
65
69
|
};
|
|
66
|
-
export declare function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeChange, selectedFromList, onSelectedFromListChange, onAddToList, onRemoveFromList, onAddItem, onRemoveItem, onToggleSubitems, language, rootItemIds, selectedItemsLabel, emptyMessage, emptyHint, height, subitemCounts, expandIdPath, localStorageKey, }: ItemCollectionEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
70
|
+
export declare function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeChange, selectedFromList, onSelectedFromListChange, onAddToList, onRemoveFromList, onAddItem, onRemoveItem, onToggleSubitems, language, rootItemIds, selectedItemsLabel, emptyMessage, emptyHint, height, subitemCounts, expandIdPath, localStorageKey, frameless, treeSearchContainerClassName, }: ItemCollectionEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,17 +1,42 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useCallback, useState } from "react";
|
|
3
|
-
import { ChevronLeft, ChevronRight, ClipboardCheck,
|
|
4
|
-
import { Button } from "../../components/ui/button";
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useRef, useState, } from "react";
|
|
3
|
+
import { ChevronDown, ChevronLeft, ChevronRight, ChevronUp, ClipboardCheck, } from "lucide-react";
|
|
5
4
|
import { CountBadge } from "../../components/ui/badge";
|
|
5
|
+
import { DeleteIcon } from "../../components/ui/delete-icon";
|
|
6
6
|
import { Label } from "../../components/ui/label";
|
|
7
7
|
import { Switch } from "../../components/ui/switch";
|
|
8
8
|
import { useEditContext } from "../client/editContext";
|
|
9
|
+
import { getAbsoluteIconUrl } from "../utils";
|
|
9
10
|
import { TreeListSelector } from "./TreeListSelector";
|
|
10
11
|
import { Splitter } from "./Splitter";
|
|
11
12
|
import { SimpleIconButton } from "./SimpleIconButton";
|
|
12
|
-
export function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeChange, selectedFromList, onSelectedFromListChange, onAddToList, onRemoveFromList, onAddItem, onRemoveItem, onToggleSubitems, language, rootItemIds = [], selectedItemsLabel = "Selected Items", emptyMessage = "No items selected", emptyHint = "Browse or search to add items", height = 340, subitemCounts, expandIdPath, localStorageKey = "item-collection-editor-splitter", }) {
|
|
13
|
+
export function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeChange, selectedFromList, onSelectedFromListChange, onAddToList, onRemoveFromList, onAddItem, onRemoveItem, onToggleSubitems, language, rootItemIds = [], selectedItemsLabel = "Selected Items", emptyMessage = "No items selected", emptyHint = "Browse or search to add items", height = 340, subitemCounts, expandIdPath, localStorageKey = "item-collection-editor-splitter", frameless = false, treeSearchContainerClassName, }) {
|
|
13
14
|
const editContext = useEditContext();
|
|
15
|
+
const isMobile = editContext?.isMobile ?? false;
|
|
16
|
+
const editorRef = useRef(null);
|
|
14
17
|
const [isDragOverList, setIsDragOverList] = useState(false);
|
|
18
|
+
const [isCompactLayout, setIsCompactLayout] = useState(isMobile);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
const node = editorRef.current;
|
|
21
|
+
if (!node || typeof window === "undefined") {
|
|
22
|
+
setIsCompactLayout(isMobile);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const updateLayout = () => {
|
|
26
|
+
setIsCompactLayout(isMobile || node.clientWidth < 560);
|
|
27
|
+
};
|
|
28
|
+
updateLayout();
|
|
29
|
+
window.addEventListener("resize", updateLayout);
|
|
30
|
+
if (typeof ResizeObserver === "undefined") {
|
|
31
|
+
return () => window.removeEventListener("resize", updateLayout);
|
|
32
|
+
}
|
|
33
|
+
const observer = new ResizeObserver(updateLayout);
|
|
34
|
+
observer.observe(node);
|
|
35
|
+
return () => {
|
|
36
|
+
observer.disconnect();
|
|
37
|
+
window.removeEventListener("resize", updateLayout);
|
|
38
|
+
};
|
|
39
|
+
}, [isMobile]);
|
|
15
40
|
const handleDropFromTree = useCallback((event) => {
|
|
16
41
|
event.preventDefault();
|
|
17
42
|
setIsDragOverList(false);
|
|
@@ -25,6 +50,7 @@ export function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeCh
|
|
|
25
50
|
id: descriptor.id,
|
|
26
51
|
name: descriptor.name || descriptor.path || descriptor.id,
|
|
27
52
|
displayName: descriptor.displayName,
|
|
53
|
+
icon: descriptor.icon,
|
|
28
54
|
path: descriptor.path,
|
|
29
55
|
idPath: descriptor.idPath,
|
|
30
56
|
language: descriptor.language,
|
|
@@ -49,92 +75,145 @@ export function ItemCollectionEditor({ items, selectedInTree, onSelectedInTreeCh
|
|
|
49
75
|
setIsDragOverList(false);
|
|
50
76
|
}
|
|
51
77
|
}, []);
|
|
52
|
-
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
const selectedItemIdSet = new Set(items.map((item) => item.descriptor.id));
|
|
80
|
+
if (!selectedInTree.some((item) => selectedItemIdSet.has(item.id))) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
onSelectedInTreeChange(selectedInTree.filter((item) => !selectedItemIdSet.has(item.id)));
|
|
84
|
+
}, [items, selectedInTree, onSelectedInTreeChange]);
|
|
85
|
+
const selectedItemIds = items.map((item) => item.descriptor.id);
|
|
86
|
+
const checkedTreeItemIds = [
|
|
87
|
+
...selectedItemIds,
|
|
88
|
+
...selectedInTree
|
|
89
|
+
.map((item) => item.id)
|
|
90
|
+
.filter((id) => !selectedItemIds.includes(id)),
|
|
91
|
+
];
|
|
92
|
+
const handleTreeSelectionChange = useCallback((treeItems, checkedIds) => {
|
|
93
|
+
const checkedIdSet = new Set(checkedIds ?? treeItems.map((item) => item.id));
|
|
94
|
+
const selectedItemIdSet = new Set(items.map((item) => item.descriptor.id));
|
|
95
|
+
const nextTreeSelection = treeItems.filter((item) => !selectedItemIdSet.has(item.id));
|
|
96
|
+
const itemsToAdd = nextTreeSelection.filter((item) => checkedIdSet.has(item.id));
|
|
97
|
+
const removedIndexes = items
|
|
98
|
+
.map((item, index) => ({ id: item.descriptor.id, index }))
|
|
99
|
+
.filter((item) => !checkedIdSet.has(item.id))
|
|
100
|
+
.map((item) => item.index)
|
|
101
|
+
.sort((a, b) => b - a);
|
|
102
|
+
onSelectedInTreeChange(nextTreeSelection);
|
|
103
|
+
if (itemsToAdd.length > 0) {
|
|
104
|
+
void onAddToList(itemsToAdd);
|
|
105
|
+
}
|
|
106
|
+
if (removedIndexes.length > 0) {
|
|
107
|
+
onSelectedFromListChange(selectedFromList.filter((item) => checkedIdSet.has(item.descriptor.id)));
|
|
108
|
+
for (const index of removedIndexes) {
|
|
109
|
+
onRemoveItem(index);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}, [
|
|
113
|
+
items,
|
|
114
|
+
onAddToList,
|
|
115
|
+
onRemoveItem,
|
|
116
|
+
onSelectedFromListChange,
|
|
117
|
+
onSelectedInTreeChange,
|
|
118
|
+
selectedFromList,
|
|
119
|
+
]);
|
|
120
|
+
const editorHeight = typeof height === "number" ? `${height}px` : height;
|
|
121
|
+
const renderSelectionTotal = () => {
|
|
122
|
+
if (items.length === 0)
|
|
123
|
+
return null;
|
|
124
|
+
let total = 0;
|
|
125
|
+
let pending = false;
|
|
126
|
+
for (const item of items) {
|
|
127
|
+
total += 1;
|
|
128
|
+
if (item.includeSubitems && subitemCounts) {
|
|
129
|
+
const countState = subitemCounts[item.descriptor.id];
|
|
130
|
+
if (countState === undefined || countState === "loading") {
|
|
131
|
+
pending = true;
|
|
132
|
+
}
|
|
133
|
+
else if (countState !== "error") {
|
|
134
|
+
total += countState.count;
|
|
135
|
+
if (!countState.complete)
|
|
136
|
+
pending = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return (_jsxs(CountBadge, { title: pending
|
|
141
|
+
? "Counting subitems..."
|
|
142
|
+
: `${total} item${total === 1 ? "" : "s"} will be translated`, children: [total, pending && "+"] }));
|
|
143
|
+
};
|
|
144
|
+
const renderSubitemCount = (item) => {
|
|
145
|
+
if (!item.includeSubitems || !subitemCounts)
|
|
146
|
+
return null;
|
|
147
|
+
const countState = subitemCounts[item.descriptor.id];
|
|
148
|
+
if (countState === undefined)
|
|
149
|
+
return null;
|
|
150
|
+
const isObject = countState !== "loading" && countState !== "error";
|
|
151
|
+
const count = isObject ? countState.count : null;
|
|
152
|
+
const streaming = isObject && !countState.complete;
|
|
153
|
+
const text = countState === "loading"
|
|
154
|
+
? "..."
|
|
155
|
+
: countState === "error"
|
|
156
|
+
? "?"
|
|
157
|
+
: `+${count}${streaming ? "+" : ""}`;
|
|
158
|
+
return (_jsx(CountBadge, { title: count !== null
|
|
159
|
+
? `${count}${streaming ? "+" : ""} subitem${count === 1 ? "" : "s"} will be included${streaming ? " (still counting)" : ""}`
|
|
160
|
+
: countState === "loading"
|
|
161
|
+
? "Counting subitems..."
|
|
162
|
+
: "Failed to count subitems", children: text }));
|
|
163
|
+
};
|
|
164
|
+
const getItemIcon = (item) => item.descriptor.icon;
|
|
165
|
+
const treePanel = (_jsx(TreeListSelector, { language: language, rootItemIds: rootItemIds, selectedItemIds: checkedTreeItemIds, onSelectionChange: handleTreeSelectionChange, onDoubleClick: onAddItem, onItemSelected: onAddItem, expandIdPath: expandIdPath, enableDragAndDrop: true, enableItemDrop: false, isDraggable: () => true, showGrabCursorForDraggableNodes: false, nodeCursor: "default", showCheckboxes: true, searchContainerClassName: treeSearchContainerClassName }));
|
|
166
|
+
const selectedItemsPanel = (_jsx("div", { className: "relative h-full w-full", onDrop: handleDropFromTree, onDragOver: handleDragOverList, onDragLeave: handleDragLeaveList, children: _jsxs("div", { className: `bg-neutral-grey-5/30 flex h-full min-h-0 flex-col overflow-hidden transition-colors ${isDragOverList
|
|
167
|
+
? "bg-feedback-blue-light ring-feedback-blue ring-2 ring-inset"
|
|
168
|
+
: ""}`, children: [_jsxs("div", { className: `flex shrink-0 items-center gap-2 ${frameless ? "mt-6 ml-6" : "px-3"}`, children: [_jsx("span", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: selectedItemsLabel }), renderSelectionTotal()] }), items.length > 0 ? (_jsx("div", { className: `min-h-0 flex-1 space-y-1.5 overflow-y-auto ${frameless ? "py-2 pr-2 pl-6" : "p-2"}`, children: items.map((item, index) => (_jsx("div", { className: `group flex cursor-pointer flex-col gap-1 rounded-lg border p-2 transition-all ${selectedFromList.includes(item)
|
|
169
|
+
? "border-neutral-grey-15 bg-neutral-grey-5 ring-neutral-grey-10 ring-1"
|
|
170
|
+
: "border-border-default hover:border-neutral-grey-15 hover:bg-neutral-grey-5/50 bg-white"}`, onClick: (event) => {
|
|
171
|
+
if (event.ctrlKey || event.metaKey) {
|
|
172
|
+
if (selectedFromList.includes(item)) {
|
|
173
|
+
onSelectedFromListChange(selectedFromList.filter((i) => i !== item));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
onSelectedFromListChange([...selectedFromList, item]);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else if (selectedFromList.length === 1 &&
|
|
180
|
+
selectedFromList.includes(item)) {
|
|
181
|
+
onSelectedFromListChange([]);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
onSelectedFromListChange([item]);
|
|
185
|
+
}
|
|
186
|
+
}, onDoubleClick: () => {
|
|
187
|
+
onRemoveItem(index);
|
|
188
|
+
onSelectedFromListChange([]);
|
|
189
|
+
}, children: _jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [getItemIcon(item) && (_jsx("img", { src: getAbsoluteIconUrl(getItemIcon(item)), alt: "", className: "h-6 w-6 shrink-0 object-contain" })), _jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "text-neutral-grey-100 truncate text-[13px] font-medium", children: item.descriptor.displayName ||
|
|
190
|
+
item.descriptor.name ||
|
|
191
|
+
item.descriptor.path ||
|
|
192
|
+
item.descriptor.id }), item.descriptor.path && (_jsx("span", { className: "text-muted-foreground truncate text-[10px]", title: item.descriptor.path, children: item.descriptor.path }))] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx(Label, { htmlFor: `subpages-${item.descriptor.id}-${index}`, className: "text-neutral-grey-50 cursor-pointer text-[10px] font-medium whitespace-nowrap", onClick: (event) => event.stopPropagation(), children: "Subitems" }), renderSubitemCount(item), _jsx(Switch, { id: `subpages-${item.descriptor.id}-${index}`, checked: item.includeSubitems, onCheckedChange: () => onToggleSubitems(index), onClick: (event) => event.stopPropagation(), className: "scale-[0.6]" }), _jsx(SimpleIconButton, { label: "Remove item", icon: _jsx(DeleteIcon, { size: "md" }), showTooltip: false, title: "Remove item", className: "text-neutral-grey-50 hover:bg-neutral-grey-5 hover:text-neutral-grey-100 h-6 w-6 shrink-0 p-0 opacity-0 transition-all group-hover:opacity-100", onClick: (event) => {
|
|
193
|
+
event.stopPropagation();
|
|
194
|
+
onRemoveItem(index);
|
|
195
|
+
} })] })] }) }, `${item.descriptor.id}-${index}`))) })) : (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-neutral-grey-5/50 ring-border-default rounded-full p-4 ring-8", children: _jsx(ClipboardCheck, { className: "text-neutral-grey-50 h-6 w-6", strokeWidth: 1 }) }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-neutral-grey-50 text-sm font-medium", children: isDragOverList ? "Drop items here" : emptyMessage }), _jsx("p", { className: "text-muted-foreground text-xs", children: isDragOverList
|
|
196
|
+
? "Release to add them to the selected items list"
|
|
197
|
+
: emptyHint })] })] }))] }) }));
|
|
198
|
+
if (isCompactLayout) {
|
|
199
|
+
return (_jsx("div", { ref: editorRef, "data-testid": "item-collection-editor", className: frameless
|
|
200
|
+
? "flex h-full w-full overflow-hidden bg-white"
|
|
201
|
+
: "border-border-default flex h-full w-full overflow-hidden rounded-xl border bg-white", style: { height: editorHeight }, children: _jsxs("div", { className: "flex h-full min-h-0 w-full flex-col", children: [_jsx("div", { className: "border-border-default min-h-0 border-b", style: { flex: "1.35 1 0" }, children: treePanel }), _jsxs("div", { className: "border-border-default bg-neutral-grey-5 flex shrink-0 items-center justify-center gap-2 border-b px-2 py-1.5", children: [_jsx(SimpleIconButton, { label: "Add selected items", icon: _jsx(ChevronDown, { size: 14, strokeWidth: 1 }), onClick: () => void onAddToList(selectedInTree), disabled: selectedInTree.length === 0, showTooltip: false, className: "px-0" }), _jsx(SimpleIconButton, { label: "Remove selected items", icon: _jsx(ChevronUp, { size: 14, strokeWidth: 1 }), onClick: onRemoveFromList, disabled: selectedFromList.length === 0, showTooltip: false, className: "px-0" })] }), _jsx("div", { className: "min-h-[132px]", style: { flex: "0.85 1 0" }, children: selectedItemsPanel })] }) }));
|
|
202
|
+
}
|
|
203
|
+
return (_jsx("div", { ref: editorRef, "data-testid": "item-collection-editor", className: frameless
|
|
204
|
+
? "h-full w-full overflow-hidden bg-white"
|
|
205
|
+
: "border-border-default h-full w-full overflow-hidden rounded-xl border bg-white", style: { height: editorHeight }, children: _jsx(Splitter, { className: "h-full w-full", direction: "horizontal", localStorageKey: localStorageKey, panels: [
|
|
53
206
|
{
|
|
54
207
|
name: "treeSelector",
|
|
55
208
|
defaultSize: 50,
|
|
56
|
-
|
|
209
|
+
className: frameless ? "p-6" : undefined,
|
|
210
|
+
content: treePanel,
|
|
57
211
|
},
|
|
58
212
|
{
|
|
59
213
|
name: "selectedItems",
|
|
60
214
|
defaultSize: 50,
|
|
61
|
-
content:
|
|
62
|
-
? "bg-feedback-blue-light ring-feedback-blue ring-2 ring-inset"
|
|
63
|
-
: ""}`, children: [_jsxs("div", { className: "border-border-default bg-neutral-grey-5/50 flex h-[37px] shrink-0 items-center gap-2 border-b px-3", children: [_jsx("span", { className: "text-neutral-grey-50 text-xs font-medium tracking-wider", children: selectedItemsLabel }), (() => {
|
|
64
|
-
if (items.length === 0)
|
|
65
|
-
return null;
|
|
66
|
-
let total = 0;
|
|
67
|
-
let pending = false;
|
|
68
|
-
for (const item of items) {
|
|
69
|
-
total += 1;
|
|
70
|
-
if (item.includeSubitems && subitemCounts) {
|
|
71
|
-
const c = subitemCounts[item.descriptor.id];
|
|
72
|
-
if (c === undefined || c === "loading") {
|
|
73
|
-
pending = true;
|
|
74
|
-
}
|
|
75
|
-
else if (c !== "error") {
|
|
76
|
-
total += c.count;
|
|
77
|
-
if (!c.complete)
|
|
78
|
-
pending = true;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
return (_jsxs(CountBadge, { title: pending
|
|
83
|
-
? "Counting subitems…"
|
|
84
|
-
: `${total} item${total === 1 ? "" : "s"} will be translated`, children: [total, pending && "+"] }));
|
|
85
|
-
})()] }), items.length > 0 ? (_jsx("div", { className: "min-h-0 flex-1 space-y-1.5 overflow-y-auto p-2", children: items.map((item, index) => (_jsx("div", { className: `group flex cursor-pointer flex-col gap-1 rounded-lg border p-2 transition-all ${selectedFromList.includes(item)
|
|
86
|
-
? "border-neutral-grey-15 bg-neutral-grey-5 ring-neutral-grey-10 ring-1"
|
|
87
|
-
: "border-border-default hover:border-neutral-grey-15 hover:bg-neutral-grey-5/50 bg-white"}`, onClick: (e) => {
|
|
88
|
-
if (e.ctrlKey || e.metaKey) {
|
|
89
|
-
if (selectedFromList.includes(item)) {
|
|
90
|
-
onSelectedFromListChange(selectedFromList.filter((i) => i !== item));
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
onSelectedFromListChange([
|
|
94
|
-
...selectedFromList,
|
|
95
|
-
item,
|
|
96
|
-
]);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else if (selectedFromList.length === 1 &&
|
|
100
|
-
selectedFromList.includes(item)) {
|
|
101
|
-
onSelectedFromListChange([]);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
onSelectedFromListChange([item]);
|
|
105
|
-
}
|
|
106
|
-
}, onDoubleClick: () => {
|
|
107
|
-
onRemoveItem(index);
|
|
108
|
-
onSelectedFromListChange([]);
|
|
109
|
-
}, children: _jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [_jsx("span", { className: "text-neutral-grey-100 truncate text-[13px] font-medium", children: item.descriptor.displayName ||
|
|
110
|
-
item.descriptor.name ||
|
|
111
|
-
item.descriptor.path ||
|
|
112
|
-
item.descriptor.id }), item.descriptor.path && (_jsx("span", { className: "text-muted-foreground truncate text-[10px]", title: item.descriptor.path, children: item.descriptor.path }))] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1", children: [_jsx(Label, { htmlFor: `subpages-${item.descriptor.id}-${index}`, className: "text-neutral-grey-50 cursor-pointer text-[10px] font-medium whitespace-nowrap", onClick: (e) => e.stopPropagation(), children: "Subitems" }), item.includeSubitems &&
|
|
113
|
-
subitemCounts &&
|
|
114
|
-
(() => {
|
|
115
|
-
const c = subitemCounts[item.descriptor.id];
|
|
116
|
-
if (c === undefined)
|
|
117
|
-
return null;
|
|
118
|
-
const isObject = c !== "loading" && c !== "error";
|
|
119
|
-
const count = isObject ? c.count : null;
|
|
120
|
-
const streaming = isObject && !c.complete;
|
|
121
|
-
const text = c === "loading"
|
|
122
|
-
? "…"
|
|
123
|
-
: c === "error"
|
|
124
|
-
? "?"
|
|
125
|
-
: `+${count}${streaming ? "+" : ""}`;
|
|
126
|
-
return (_jsx(CountBadge, { title: count !== null
|
|
127
|
-
? `${count}${streaming ? "+" : ""} subitem${count === 1 ? "" : "s"} will be included${streaming ? " (still counting)" : ""}`
|
|
128
|
-
: c === "loading"
|
|
129
|
-
? "Counting subitems…"
|
|
130
|
-
: "Failed to count subitems", children: text }));
|
|
131
|
-
})(), _jsx(Switch, { id: `subpages-${item.descriptor.id}-${index}`, checked: item.includeSubitems, onCheckedChange: () => onToggleSubitems(index), onClick: (e) => e.stopPropagation(), className: "scale-[0.6]" }), _jsx(Button, { variant: "ghost", size: "sm", className: "text-muted-foreground hover:bg-destructive/10 hover:text-destructive h-6 w-6 shrink-0 p-0 opacity-0 transition-all group-hover:opacity-100", onClick: (e) => {
|
|
132
|
-
e.stopPropagation();
|
|
133
|
-
onRemoveItem(index);
|
|
134
|
-
}, children: _jsx(X, { className: "h-3.5 w-3.5" }) })] })] }) }, `${item.descriptor.id}-${index}`))) })) : (_jsxs("div", { className: "flex min-h-0 flex-1 flex-col items-center justify-center gap-3 p-8 text-center", children: [_jsx("div", { className: "bg-neutral-grey-5/50 ring-border-default rounded-full p-4 ring-8", children: _jsx(ClipboardCheck, { className: "text-neutral-grey-50 h-6 w-6", strokeWidth: 1 }) }), _jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-neutral-grey-50 text-sm font-medium", children: isDragOverList ? "Drop items here" : emptyMessage }), _jsx("p", { className: "text-muted-foreground text-xs", children: isDragOverList
|
|
135
|
-
? "Release to add them to the selected items list"
|
|
136
|
-
: emptyHint })] })] }))] }) })),
|
|
215
|
+
content: selectedItemsPanel,
|
|
137
216
|
},
|
|
138
|
-
], handleContent: (index) => index === 0 ? (_jsxs("div", { className: "bg-neutral-grey-5 flex flex-col items-center gap-1
|
|
217
|
+
], handleContent: (index) => index === 0 ? (_jsxs("div", { className: "bg-neutral-grey-5 flex h-full w-full flex-col items-center justify-center gap-1 py-1", children: [_jsx(SimpleIconButton, { label: "Add", icon: _jsx(ChevronRight, { size: 14, strokeWidth: 1 }), onClick: () => void onAddToList(selectedInTree), disabled: selectedInTree.length === 0, showTooltip: false, className: "px-0" }), _jsx(SimpleIconButton, { label: "Remove", icon: _jsx(ChevronLeft, { size: 14, strokeWidth: 1 }), onClick: onRemoveFromList, disabled: selectedFromList.length === 0, showTooltip: false, className: "px-0" })] })) : null }) }));
|
|
139
218
|
}
|
|
140
219
|
//# sourceMappingURL=ItemCollectionEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemCollectionEditor.js","sourceRoot":"","sources":["../../../src/editor/ui/ItemCollectionEditor.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ItemCollectionEditor.js","sourceRoot":"","sources":["../../../src/editor/ui/ItemCollectionEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { Spinner } from "./Spinner";
|
|
|
4
4
|
const variantClassNames = {
|
|
5
5
|
centered: "flex flex-col items-center justify-center gap-3 py-16 text-center",
|
|
6
6
|
fill: "flex h-full flex-col items-center justify-center gap-3 p-6 text-center",
|
|
7
|
-
inline: "flex items-center gap-2
|
|
7
|
+
inline: "flex items-center gap-2",
|
|
8
8
|
};
|
|
9
9
|
const defaultSpinnerSizes = {
|
|
10
10
|
centered: "lg",
|
|
@@ -17,9 +17,9 @@ const defaultSpinnerClassNames = {
|
|
|
17
17
|
inline: "text-neutral-grey-50",
|
|
18
18
|
};
|
|
19
19
|
const defaultTextClassNames = {
|
|
20
|
-
centered: "text-muted-foreground text-
|
|
21
|
-
fill: "text-muted-foreground text-
|
|
22
|
-
inline: "text-neutral-grey-50 text-
|
|
20
|
+
centered: "text-muted-foreground text-[12px]",
|
|
21
|
+
fill: "text-muted-foreground text-[12px]",
|
|
22
|
+
inline: "text-neutral-grey-50 text-[12px]",
|
|
23
23
|
};
|
|
24
24
|
export function LoadingState({ "aria-live": ariaLive = "polite", className, message = "Loading...", role = "status", spinnerClassName, spinnerSize, textClassName, variant = "centered", ...props }) {
|
|
25
25
|
return (_jsxs("div", { role: role, "aria-live": ariaLive, ...props, className: cn(variantClassNames[variant], className), children: [_jsx(Spinner, { size: spinnerSize ?? defaultSpinnerSizes[variant], className: cn(defaultSpinnerClassNames[variant], spinnerClassName) }), message ? (_jsx("span", { className: cn(defaultTextClassNames[variant], textClassName), children: message })) : (_jsx("span", { className: "sr-only", children: "Loading" }))] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoadingState.js","sourceRoot":"","sources":["../../../src/editor/ui/LoadingState.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC;AAYtD,MAAM,iBAAiB,GAAwC;IAC7D,QAAQ,EAAE,mEAAmE;IAC7E,IAAI,EAAE,wEAAwE;IAC9E,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"LoadingState.js","sourceRoot":"","sources":["../../../src/editor/ui/LoadingState.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAC;AAYtD,MAAM,iBAAiB,GAAwC;IAC7D,QAAQ,EAAE,mEAAmE;IAC7E,IAAI,EAAE,wEAAwE;IAC9E,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,mBAAmB,GAA6C;IACpE,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,MAAM,wBAAwB,GAAwC;IACpE,QAAQ,EAAE,uBAAuB;IACjC,IAAI,EAAE,uBAAuB;IAC7B,MAAM,EAAE,sBAAsB;CAC/B,CAAC;AAEF,MAAM,qBAAqB,GAAwC;IACjE,QAAQ,EAAE,mCAAmC;IAC7C,IAAI,EAAE,mCAAmC;IACzC,MAAM,EAAE,kCAAkC;CAC3C,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,EAC3B,WAAW,EAAE,QAAQ,GAAG,QAAQ,EAChC,SAAS,EACT,OAAO,GAAG,YAAY,EACtB,IAAI,GAAG,QAAQ,EACf,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,OAAO,GAAG,UAAU,EACpB,GAAG,KAAK,EACU;IAClB,OAAO,CACL,eACE,IAAI,EAAE,IAAI,eACC,QAAQ,KACf,KAAK,EACT,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,aAEpD,KAAC,OAAO,IACN,IAAI,EAAE,WAAW,IAAI,mBAAmB,CAAC,OAAO,CAAC,EACjD,SAAS,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,GAClE,EACD,OAAO,CAAC,CAAC,CAAC,CACT,eAAM,SAAS,EAAE,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,YAC/D,OAAO,GACH,CACR,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,SAAS,wBAAe,CACzC,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -51,6 +51,10 @@ export interface TreeProps<T = any> {
|
|
|
51
51
|
enableDragAndDrop?: boolean;
|
|
52
52
|
/** Whether this tree renders/accepts internal drop targets. */
|
|
53
53
|
enableDropTargets?: boolean;
|
|
54
|
+
/** Cursor style used for tree rows. */
|
|
55
|
+
nodeCursor?: "pointer" | "default";
|
|
56
|
+
/** Whether selected rows get the default selected background treatment. */
|
|
57
|
+
showSelectedBackground?: boolean;
|
|
54
58
|
/**
|
|
55
59
|
* Callback that notifies when a lazy load should occur.
|
|
56
60
|
* When a node is toggled and its children haven't been loaded yet (i.e. undefined),
|
|
@@ -98,6 +102,6 @@ export interface TreeProps<T = any> {
|
|
|
98
102
|
suppressDefaultNodeChrome?: (node: TreeNode<T>) => boolean;
|
|
99
103
|
}
|
|
100
104
|
export declare const highlightText: (text: string, searchTerm: string) => React.ReactNode;
|
|
101
|
-
export declare const PerfectTree: <T>({ nodes, selectedKeys, expandedKeys, renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, onToggleExpand, onSelect, onDragOverZone, onDrop, isDragging, onStartDrag, onDragEnd, onLazyLoad, onDoubleClick, onContextMenu, enableDragAndDrop, enableDropTargets, isValidDropZone, scrollToSelected, enableKeyboardSearch, searchClearDelay, disableAutoSelectOnExpand, multiDragNoun, enableKeyboardNavigation, onKeyboardNavigationChange, }: TreeProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
105
|
+
export declare const PerfectTree: <T>({ nodes, selectedKeys, expandedKeys, renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, onToggleExpand, onSelect, onDragOverZone, onDrop, isDragging, onStartDrag, onDragEnd, onLazyLoad, onDoubleClick, onContextMenu, enableDragAndDrop, enableDropTargets, nodeCursor, showSelectedBackground, isValidDropZone, scrollToSelected, enableKeyboardSearch, searchClearDelay, disableAutoSelectOnExpand, multiDragNoun, enableKeyboardNavigation, onKeyboardNavigationChange, }: TreeProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
102
106
|
declare const _default: typeof PerfectTree;
|
|
103
107
|
export default _default;
|
|
@@ -182,7 +182,7 @@ const flattenVisibleNodes = (nodes, expandedKeys, parent = null, depth = 0) => {
|
|
|
182
182
|
return result;
|
|
183
183
|
};
|
|
184
184
|
// NodeContent component extracted and memoized
|
|
185
|
-
const NodeContent = memo(({ node, isExpanded, isSelected, onSelect, onToggleNode, onStartDrag, onDragEnd, onDragOverZone, onDrop, onDoubleClick, renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, depth, onContextMenu, enableDragAndDrop = false, enableDropTargets = true, selectedKeys, isDragging, searchTerm = "", multiDragNoun, }) => {
|
|
185
|
+
const NodeContent = memo(({ node, isExpanded, isSelected, onSelect, onToggleNode, onStartDrag, onDragEnd, onDragOverZone, onDrop, onDoubleClick, renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, depth, onContextMenu, enableDragAndDrop = false, enableDropTargets = true, nodeCursor = "pointer", showSelectedBackground = true, selectedKeys, isDragging, searchTerm = "", multiDragNoun, }) => {
|
|
186
186
|
const [isDragOver, setIsDragOver] = React.useState(false);
|
|
187
187
|
useEffect(() => {
|
|
188
188
|
if (!isDragging) {
|
|
@@ -274,15 +274,15 @@ const NodeContent = memo(({ node, isExpanded, isSelected, onSelect, onToggleNode
|
|
|
274
274
|
onContextMenu?.(node, e);
|
|
275
275
|
}, [node, onContextMenu]);
|
|
276
276
|
const suppressNodeChrome = suppressDefaultNodeChrome?.(node) ?? false;
|
|
277
|
-
return (_jsxs("div", { className: cn(`tree-node ${node?.type ? `tree-node-${node.type}` : ""} relative mb-0.5 flex
|
|
277
|
+
return (_jsxs("div", { className: cn(`tree-node ${node?.type ? `tree-node-${node.type}` : ""} relative mb-0.5 flex items-center`, nodeCursor === "default" ? "cursor-default" : "cursor-pointer", getRowClassName?.(node, depth, { isSelected, isDragOver })), draggable: enableDragAndDrop && !!node.isDraggable, onClick: handleSelect, onAuxClick: handleAuxClick, onDragStart: (event) => handleDragStart(event), onDragEnd: onDragEnd, onDragLeave: handleDragLeave, onDragEnter: handleDragEnter, onDragOver: handleDragOver, onDrop: handleDrop, onDoubleClick: handleDoubleClick, onContextMenu: handleContextMenu, "data-node-key": node.key, "data-selected": isSelected, "data-node-type": node?.type, children: [renderNodePrefix?.(node, depth), node.hasChildren || node.children?.length ? (renderToggle()) : (_jsx("div", { className: "w-[24px]" })), _jsx("div", { className: suppressNodeChrome
|
|
278
278
|
? "min-w-0 flex-1"
|
|
279
|
-
: `hover:border-border-default flex-1 rounded-
|
|
279
|
+
: `hover:border-border-default flex-1 rounded-[4px] border border-transparent p-0.5 pr-1.5 ${isDragOver
|
|
280
280
|
? "bg-feedback-blue-light"
|
|
281
|
-
: isSelected
|
|
281
|
+
: showSelectedBackground && isSelected
|
|
282
282
|
? "bg-feedback-blue-light"
|
|
283
283
|
: ""}`, onClick: handleSelect, onAuxClick: handleAuxClick, children: renderNode(node, searchTerm) })] }));
|
|
284
284
|
});
|
|
285
|
-
export const PerfectTree = ({ nodes, selectedKeys = [], expandedKeys = [], renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, onToggleExpand, onSelect, onDragOverZone, onDrop, isDragging = false, onStartDrag, onDragEnd, onLazyLoad, onDoubleClick, onContextMenu, enableDragAndDrop = false, enableDropTargets = true, isValidDropZone, scrollToSelected = false, enableKeyboardSearch = false, searchClearDelay = 1500, disableAutoSelectOnExpand = false, multiDragNoun = "items", enableKeyboardNavigation = true, onKeyboardNavigationChange, }) => {
|
|
285
|
+
export const PerfectTree = ({ nodes, selectedKeys = [], expandedKeys = [], renderNode, renderNodePrefix, renderToggleIcon, getRowClassName, suppressDefaultNodeChrome, onToggleExpand, onSelect, onDragOverZone, onDrop, isDragging = false, onStartDrag, onDragEnd, onLazyLoad, onDoubleClick, onContextMenu, enableDragAndDrop = false, enableDropTargets = true, nodeCursor = "pointer", showSelectedBackground = true, isValidDropZone, scrollToSelected = false, enableKeyboardSearch = false, searchClearDelay = 1500, disableAutoSelectOnExpand = false, multiDragNoun = "items", enableKeyboardNavigation = true, onKeyboardNavigationChange, }) => {
|
|
286
286
|
const [searchTerm, setSearchTerm] = useState("");
|
|
287
287
|
const [isFocused, setIsFocused] = useState(false);
|
|
288
288
|
const [keyboardNavPosition, setKeyboardNavPosition] = useState(null);
|
|
@@ -553,7 +553,7 @@ export const PerfectTree = ({ nodes, selectedKeys = [], expandedKeys = [], rende
|
|
|
553
553
|
const isSelected = selectedKeys.includes(node.key);
|
|
554
554
|
return (_jsxs(React.Fragment, { children: [enableDropTargets && (_jsx(DropZone, { parent: parent, index: index, isDragging: isDragging, onDragOverZone: onDragOverZone, onDrop: onDrop, onDragEnd: onDragEnd, isValidDropZone: isValidDropZone })), _jsxs("div", { style: {
|
|
555
555
|
marginLeft: depth > 0 ? "24px" : undefined,
|
|
556
|
-
}, className: "flex flex-col", children: [_jsx(NodeContent, { node: node, isExpanded: isExpanded, isSelected: isSelected, onSelect: handleSelect, onToggleNode: handleToggle, onStartDrag: handleStartDragWithTimeout, onDragEnd: handleDragEnd, onDragOverZone: onDragOverZone, onDrop: onDrop, onDoubleClick: onDoubleClick, onContextMenu: onContextMenu, renderNode: enhancedRenderNode, renderNodePrefix: renderNodePrefix, renderToggleIcon: renderToggleIcon, getRowClassName: getRowClassName, suppressDefaultNodeChrome: suppressDefaultNodeChrome, depth: depth, enableDragAndDrop: enableDragAndDrop, enableDropTargets: enableDropTargets, selectedKeys: selectedKeys, isDragging: isDragging, searchTerm: searchTerm, multiDragNoun: multiDragNoun }), isExpanded && (_jsx(_Fragment, { children: children && children.length > 0 ? (_jsx("div", { children: renderTreeList(children, depth + 1, node) })) : null }))] })] }, node.key));
|
|
556
|
+
}, className: "flex flex-col", children: [_jsx(NodeContent, { node: node, isExpanded: isExpanded, isSelected: isSelected, onSelect: handleSelect, onToggleNode: handleToggle, onStartDrag: handleStartDragWithTimeout, onDragEnd: handleDragEnd, onDragOverZone: onDragOverZone, onDrop: onDrop, onDoubleClick: onDoubleClick, onContextMenu: onContextMenu, renderNode: enhancedRenderNode, renderNodePrefix: renderNodePrefix, renderToggleIcon: renderToggleIcon, getRowClassName: getRowClassName, suppressDefaultNodeChrome: suppressDefaultNodeChrome, depth: depth, enableDragAndDrop: enableDragAndDrop, enableDropTargets: enableDropTargets, nodeCursor: nodeCursor, showSelectedBackground: showSelectedBackground, selectedKeys: selectedKeys, isDragging: isDragging, searchTerm: searchTerm, multiDragNoun: multiDragNoun }), isExpanded && (_jsx(_Fragment, { children: children && children.length > 0 ? (_jsx("div", { children: renderTreeList(children, depth + 1, node) })) : null }))] })] }, node.key));
|
|
557
557
|
}), enableDropTargets && (_jsx(DropZone, { parent: parent, index: nodes.length, isDragging: isDragging, onDragOverZone: onDragOverZone, onDrop: onDrop, onDragEnd: onDragEnd, isLast: true, isValidDropZone: isValidDropZone }))] }));
|
|
558
558
|
}, [
|
|
559
559
|
expandedKeys,
|
|
@@ -571,6 +571,8 @@ export const PerfectTree = ({ nodes, selectedKeys = [], expandedKeys = [], rende
|
|
|
571
571
|
searchTerm,
|
|
572
572
|
enableDragAndDrop,
|
|
573
573
|
enableDropTargets,
|
|
574
|
+
nodeCursor,
|
|
575
|
+
showSelectedBackground,
|
|
574
576
|
multiDragNoun,
|
|
575
577
|
isValidDropZone,
|
|
576
578
|
renderNodePrefix,
|
|
@@ -919,6 +921,8 @@ const arePropsEqual = (prevProps, nextProps) => {
|
|
|
919
921
|
prevProps.isDragging !== nextProps.isDragging ||
|
|
920
922
|
prevProps.enableDragAndDrop !== nextProps.enableDragAndDrop ||
|
|
921
923
|
prevProps.enableDropTargets !== nextProps.enableDropTargets ||
|
|
924
|
+
prevProps.nodeCursor !== nextProps.nodeCursor ||
|
|
925
|
+
prevProps.showSelectedBackground !== nextProps.showSelectedBackground ||
|
|
922
926
|
prevProps.scrollToSelected !== nextProps.scrollToSelected ||
|
|
923
927
|
prevProps.enableKeyboardSearch !== nextProps.enableKeyboardSearch ||
|
|
924
928
|
prevProps.searchClearDelay !== nextProps.searchClearDelay ||
|