@parhelia/core 0.1.12749 → 0.1.12755
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/AgentsView.js +3 -3
- package/dist/agents-view/AgentsView.js.map +1 -1
- package/dist/agents-view/AgentsWorkspaceView.js +28 -23
- package/dist/agents-view/AgentsWorkspaceView.js.map +1 -1
- package/dist/components/ui/PlaceholderInput.js +3 -3
- package/dist/components/ui/PlaceholderInput.js.map +1 -1
- package/dist/components/ui/PlaceholderInputTypes.js +2 -2
- package/dist/components/ui/PlaceholderInputTypes.js.map +1 -1
- package/dist/components/ui/PlaceholderItemSelector.js +2 -2
- package/dist/components/ui/PlaceholderItemSelector.js.map +1 -1
- package/dist/config/config.js +4 -1
- package/dist/config/config.js.map +1 -1
- package/dist/editor/LinkEditorDialog.js +2 -2
- package/dist/editor/LinkEditorDialog.js.map +1 -1
- package/dist/editor/MainLayout.d.ts +1 -0
- package/dist/editor/MainLayout.js +64 -1
- package/dist/editor/MainLayout.js.map +1 -1
- package/dist/editor/ai/AgentBanners.d.ts +11 -0
- package/dist/editor/ai/AgentBanners.js +16 -0
- package/dist/editor/ai/AgentBanners.js.map +1 -0
- package/dist/editor/ai/AgentCostDisplay.d.ts +12 -0
- package/dist/editor/ai/AgentCostDisplay.js +24 -1
- package/dist/editor/ai/AgentCostDisplay.js.map +1 -1
- package/dist/editor/ai/AgentDocumentList.js +5 -4
- package/dist/editor/ai/AgentDocumentList.js.map +1 -1
- package/dist/editor/ai/AgentInlineDialogContent.d.ts +17 -0
- package/dist/editor/ai/AgentInlineDialogContent.js +32 -0
- package/dist/editor/ai/AgentInlineDialogContent.js.map +1 -0
- package/dist/editor/ai/AgentSharingSection.d.ts +6 -0
- package/dist/editor/ai/AgentSharingSection.js +149 -0
- package/dist/editor/ai/AgentSharingSection.js.map +1 -0
- package/dist/editor/ai/AgentTerminal.d.ts +2 -1
- package/dist/editor/ai/AgentTerminal.js +288 -984
- package/dist/editor/ai/AgentTerminal.js.map +1 -1
- package/dist/editor/ai/AgentTerminalStatusBar.d.ts +18 -0
- package/dist/editor/ai/AgentTerminalStatusBar.js +388 -125
- package/dist/editor/ai/AgentTerminalStatusBar.js.map +1 -1
- package/dist/editor/ai/Agents.js +10 -5
- package/dist/editor/ai/Agents.js.map +1 -1
- package/dist/editor/ai/HeartbeatMessage.d.ts +4 -0
- package/dist/editor/ai/HeartbeatMessage.js +7 -0
- package/dist/editor/ai/HeartbeatMessage.js.map +1 -0
- package/dist/editor/ai/InitialThinkingSplash.d.ts +3 -0
- package/dist/editor/ai/InitialThinkingSplash.js +9 -0
- package/dist/editor/ai/InitialThinkingSplash.js.map +1 -0
- package/dist/editor/ai/InlineAiDialog.js +49 -1
- package/dist/editor/ai/InlineAiDialog.js.map +1 -1
- package/dist/editor/ai/QueuedPromptsPanel.d.ts +4 -0
- package/dist/editor/ai/QueuedPromptsPanel.js +36 -0
- package/dist/editor/ai/QueuedPromptsPanel.js.map +1 -0
- package/dist/editor/ai/TodoListPanel.d.ts +5 -0
- package/dist/editor/ai/TodoListPanel.js +113 -0
- package/dist/editor/ai/TodoListPanel.js.map +1 -0
- package/dist/editor/ai/ToolCallDisplay.js +54 -10
- package/dist/editor/ai/ToolCallDisplay.js.map +1 -1
- package/dist/editor/ai/UserMessage.d.ts +4 -0
- package/dist/editor/ai/UserMessage.js +42 -0
- package/dist/editor/ai/UserMessage.js.map +1 -0
- package/dist/editor/ai/agentMessageConversion.d.ts +11 -0
- package/dist/editor/ai/agentMessageConversion.js +134 -0
- package/dist/editor/ai/agentMessageConversion.js.map +1 -0
- package/dist/editor/ai/agentMessageGrouping.d.ts +22 -0
- package/dist/editor/ai/agentMessageGrouping.js +103 -0
- package/dist/editor/ai/agentMessageGrouping.js.map +1 -0
- package/dist/editor/ai/agentMessageHelpers.d.ts +23 -0
- package/dist/editor/ai/agentMessageHelpers.js +124 -0
- package/dist/editor/ai/agentMessageHelpers.js.map +1 -0
- package/dist/editor/ai/agentMessageMarkdown.d.ts +2 -0
- package/dist/editor/ai/agentMessageMarkdown.js +14 -0
- package/dist/editor/ai/agentMessageMarkdown.js.map +1 -0
- package/dist/editor/ai/agentTodoExtraction.d.ts +12 -0
- package/dist/editor/ai/agentTodoExtraction.js +205 -0
- package/dist/editor/ai/agentTodoExtraction.js.map +1 -0
- package/dist/editor/ai/useAgentStatus.js +2 -2
- package/dist/editor/ai/useAgentStatus.js.map +1 -1
- package/dist/editor/client/EditorShell.js +19 -1
- package/dist/editor/client/EditorShell.js.map +1 -1
- package/dist/editor/client/editContext.d.ts +5 -0
- package/dist/editor/client/editContext.js.map +1 -1
- package/dist/editor/client/operations.d.ts +4 -1
- package/dist/editor/client/operations.js +57 -5
- package/dist/editor/client/operations.js.map +1 -1
- package/dist/editor/client/ui/EditorChrome.js +3 -4
- package/dist/editor/client/ui/EditorChrome.js.map +1 -1
- package/dist/editor/commands/componentCommands.js +35 -2
- package/dist/editor/commands/componentCommands.js.map +1 -1
- package/dist/editor/menubar/ItemLanguageVersion.js +22 -3
- package/dist/editor/menubar/ItemLanguageVersion.js.map +1 -1
- package/dist/editor/menubar/PreviewDatePicker.d.ts +1 -0
- package/dist/editor/menubar/PreviewDatePicker.js +55 -0
- package/dist/editor/menubar/PreviewDatePicker.js.map +1 -0
- package/dist/editor/menubar/VersionPreviewCard.js +34 -3
- package/dist/editor/menubar/VersionPreviewCard.js.map +1 -1
- package/dist/editor/menubar/VersionSelector.d.ts +2 -1
- package/dist/editor/menubar/VersionSelector.js +14 -15
- package/dist/editor/menubar/VersionSelector.js.map +1 -1
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js +2 -2
- package/dist/editor/menubar/toolbar-sections/ViewportControls.js.map +1 -1
- package/dist/editor/page-editor-chrome/FrameMenu.js +2 -2
- package/dist/editor/page-editor-chrome/FrameMenu.js.map +1 -1
- package/dist/editor/page-viewer/EditorForm.js +81 -1
- package/dist/editor/page-viewer/EditorForm.js.map +1 -1
- package/dist/editor/page-viewer/PageViewer.js +22 -90
- package/dist/editor/page-viewer/PageViewer.js.map +1 -1
- package/dist/editor/page-viewer/PageViewerFrame.js +12 -2
- package/dist/editor/page-viewer/PageViewerFrame.js.map +1 -1
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js +4 -0
- package/dist/editor/page-viewer/pageModelSkeletonBuilder.js.map +1 -1
- package/dist/editor/page-viewer/pageViewContext.d.ts +2 -0
- package/dist/editor/page-viewer/pageViewContext.js +8 -1
- package/dist/editor/page-viewer/pageViewContext.js.map +1 -1
- package/dist/editor/pageModel.d.ts +2 -0
- package/dist/editor/personalization/ActionList.d.ts +7 -0
- package/dist/editor/personalization/ActionList.js +16 -0
- package/dist/editor/personalization/ActionList.js.map +1 -0
- package/dist/editor/personalization/ConditionTreeEditor.d.ts +7 -0
- package/dist/editor/personalization/ConditionTreeEditor.js +117 -0
- package/dist/editor/personalization/ConditionTreeEditor.js.map +1 -0
- package/dist/editor/personalization/PersonalizationPanel.d.ts +12 -0
- package/dist/editor/personalization/PersonalizationPanel.js +308 -0
- package/dist/editor/personalization/PersonalizationPanel.js.map +1 -0
- package/dist/editor/personalization/RuleElementPicker.d.ts +11 -0
- package/dist/editor/personalization/RuleElementPicker.js +68 -0
- package/dist/editor/personalization/RuleElementPicker.js.map +1 -0
- package/dist/editor/personalization/RuleList.d.ts +19 -0
- package/dist/editor/personalization/RuleList.js +132 -0
- package/dist/editor/personalization/RuleList.js.map +1 -0
- package/dist/editor/personalization/RuleParameterInput.d.ts +10 -0
- package/dist/editor/personalization/RuleParameterInput.js +115 -0
- package/dist/editor/personalization/RuleParameterInput.js.map +1 -0
- package/dist/editor/personalization/TreeItemPicker.d.ts +9 -0
- package/dist/editor/personalization/TreeItemPicker.js +115 -0
- package/dist/editor/personalization/TreeItemPicker.js.map +1 -0
- package/dist/editor/personalization/utils.d.ts +6 -0
- package/dist/editor/personalization/utils.js +37 -0
- package/dist/editor/personalization/utils.js.map +1 -0
- package/dist/editor/reviews/SuggestedEdit.js +65 -48
- package/dist/editor/reviews/SuggestedEdit.js.map +1 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js +5 -1
- package/dist/editor/reviews/SuggestionDisplayPopover.js.map +1 -1
- package/dist/editor/services/agentService.d.ts +24 -0
- package/dist/editor/services/agentService.js +40 -0
- package/dist/editor/services/agentService.js.map +1 -1
- package/dist/editor/services/agentStatus.d.ts +1 -0
- package/dist/editor/services/agentStatus.js +55 -1
- package/dist/editor/services/agentStatus.js.map +1 -1
- package/dist/editor/services/aiService.d.ts +10 -0
- package/dist/editor/services/aiService.js.map +1 -1
- package/dist/editor/services/contentService.d.ts +5 -0
- package/dist/editor/services/contentService.js.map +1 -1
- package/dist/editor/services/personalizationService.d.ts +5 -0
- package/dist/editor/services/personalizationService.js +32 -0
- package/dist/editor/services/personalizationService.js.map +1 -0
- package/dist/editor/services/serviceHelper.d.ts +1 -1
- package/dist/editor/services/serviceHelper.js +2 -1
- package/dist/editor/services/serviceHelper.js.map +1 -1
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js +1 -1
- package/dist/editor/settings/panels/AgentProfileConfigPanel.js.map +1 -1
- package/dist/editor/sidebar/OperationItem.js +1 -0
- package/dist/editor/sidebar/OperationItem.js.map +1 -1
- package/dist/editor/sidebar/SidebarPanel.js +3 -3
- package/dist/editor/sidebar/SidebarPanel.js.map +1 -1
- package/dist/editor/ui/PublishRestrictionsDialog.js +1 -0
- package/dist/editor/ui/PublishRestrictionsDialog.js.map +1 -1
- package/dist/editor/ui/SimpleTabs.d.ts +1 -0
- package/dist/editor/ui/SimpleTabs.js +2 -2
- package/dist/editor/ui/SimpleTabs.js.map +1 -1
- package/dist/editor/ui/Splitter.d.ts +4 -0
- package/dist/editor/ui/Splitter.js +42 -17
- package/dist/editor/ui/Splitter.js.map +1 -1
- package/dist/editor/utils/sitecoreDate.d.ts +2 -0
- package/dist/editor/utils/sitecoreDate.js +27 -0
- package/dist/editor/utils/sitecoreDate.js.map +1 -0
- package/dist/editor/utils/versionAtDate.d.ts +2 -0
- package/dist/editor/utils/versionAtDate.js +23 -0
- package/dist/editor/utils/versionAtDate.js.map +1 -0
- package/dist/lib/viewTransition.d.ts +1 -0
- package/dist/lib/viewTransition.js +17 -0
- package/dist/lib/viewTransition.js.map +1 -0
- package/dist/revision.d.ts +2 -2
- package/dist/revision.js +2 -2
- package/dist/task-board/TaskBoardWorkspace.js +126 -87
- package/dist/task-board/TaskBoardWorkspace.js.map +1 -1
- package/dist/task-board/components/ProjectAgentsPanel.js +2 -2
- package/dist/task-board/components/ProjectAgentsPanel.js.map +1 -1
- package/dist/task-board/components/ProjectDashboard.js +2 -3
- package/dist/task-board/components/ProjectDashboard.js.map +1 -1
- package/dist/task-board/components/ProjectPropertiesPanel.js +76 -24
- package/dist/task-board/components/ProjectPropertiesPanel.js.map +1 -1
- package/dist/task-board/components/TaskBoardTitlebar.js +2 -1
- package/dist/task-board/components/TaskBoardTitlebar.js.map +1 -1
- package/dist/task-board/components/TaskDetailPanel.d.ts +10 -0
- package/dist/task-board/components/TaskDetailPanel.js +10 -5
- package/dist/task-board/components/TaskDetailPanel.js.map +1 -1
- package/dist/types.d.ts +55 -1
- package/package.json +1 -1
- package/styles.css +11 -10
- package/dist/task-board/components/AssignAgentDialog.d.ts +0 -7
- package/dist/task-board/components/AssignAgentDialog.js +0 -104
- package/dist/task-board/components/AssignAgentDialog.js.map +0 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef, useState, } from "react";
|
|
3
|
+
import { CheckCircle2, ChevronDown, ChevronRight, ChevronUp, CircleDashed, Copy, GripVertical, Pencil, Trash2, } from "lucide-react";
|
|
4
|
+
import { Button } from "../../components/ui/button";
|
|
5
|
+
const DRAG_MIME = "application/x-personalization-rule-uid";
|
|
6
|
+
export function RuleList({ rules, selectedRuleId, appliedRuleId, disabled, onToggle, onApply, onDuplicate, onDelete, onMove, onRename, onReorder, renderRuleBody, }) {
|
|
7
|
+
const [draggingUid, setDraggingUid] = useState(null);
|
|
8
|
+
const [dropIndex, setDropIndex] = useState(null);
|
|
9
|
+
if (rules.length === 0)
|
|
10
|
+
return null;
|
|
11
|
+
const sourceIndex = draggingUid
|
|
12
|
+
? rules.findIndex((rule) => rule.uid === draggingUid)
|
|
13
|
+
: -1;
|
|
14
|
+
const handleDragStart = (uid) => setDraggingUid(uid);
|
|
15
|
+
const handleDragEnd = () => {
|
|
16
|
+
setDraggingUid(null);
|
|
17
|
+
setDropIndex(null);
|
|
18
|
+
};
|
|
19
|
+
const handleZoneDrop = (index) => {
|
|
20
|
+
if (sourceIndex < 0) {
|
|
21
|
+
handleDragEnd();
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
let toIndex = index;
|
|
25
|
+
if (toIndex > sourceIndex)
|
|
26
|
+
toIndex -= 1;
|
|
27
|
+
if (toIndex !== sourceIndex) {
|
|
28
|
+
onReorder(sourceIndex, toIndex);
|
|
29
|
+
}
|
|
30
|
+
handleDragEnd();
|
|
31
|
+
};
|
|
32
|
+
return (_jsxs("div", { className: "space-y-0", children: [rules.map((rule, index) => {
|
|
33
|
+
const expanded = rule.uid === selectedRuleId;
|
|
34
|
+
const isDragSource = draggingUid === rule.uid;
|
|
35
|
+
return (_jsxs("div", { children: [_jsx(DropZone, { index: index, active: draggingUid !== null, hovered: dropIndex === index, isNoOp: sourceIndex >= 0 &&
|
|
36
|
+
(index === sourceIndex || index === sourceIndex + 1), onEnter: () => setDropIndex(index), onLeave: () => setDropIndex((n) => (n === index ? null : n)), onDrop: () => handleZoneDrop(index) }), _jsx(RuleAccordionItem, { rule: rule, expanded: expanded, applied: rule.uid === appliedRuleId, disabled: disabled, isFirst: index === 0, isLast: index === rules.length - 1, isDragSource: isDragSource, onToggle: () => onToggle(rule.uid), onApply: () => onApply(rule.uid), onRename: (name) => onRename(rule.uid, name), onMove: (direction) => onMove(rule.uid, direction), onDuplicate: () => onDuplicate(rule.uid), onDelete: () => onDelete(rule.uid), onDragStart: (event) => {
|
|
37
|
+
event.dataTransfer.effectAllowed = "move";
|
|
38
|
+
event.dataTransfer.setData(DRAG_MIME, rule.uid);
|
|
39
|
+
event.dataTransfer.setData("text/plain", rule.uid);
|
|
40
|
+
handleDragStart(rule.uid);
|
|
41
|
+
}, onDragEnd: handleDragEnd, children: expanded ? renderRuleBody(rule) : null })] }, rule.uid));
|
|
42
|
+
}), _jsx(DropZone, { index: rules.length, active: draggingUid !== null, hovered: dropIndex === rules.length, isNoOp: sourceIndex === rules.length - 1, onEnter: () => setDropIndex(rules.length), onLeave: () => setDropIndex((n) => (n === rules.length ? null : n)), onDrop: () => handleZoneDrop(rules.length) })] }));
|
|
43
|
+
}
|
|
44
|
+
function DropZone({ active, hovered, isNoOp, onEnter, onLeave, onDrop, }) {
|
|
45
|
+
const showHighlight = active && hovered && !isNoOp;
|
|
46
|
+
return (_jsx("div", { onDragEnter: (event) => {
|
|
47
|
+
if (!active)
|
|
48
|
+
return;
|
|
49
|
+
event.preventDefault();
|
|
50
|
+
onEnter();
|
|
51
|
+
}, onDragOver: (event) => {
|
|
52
|
+
if (!active)
|
|
53
|
+
return;
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
event.dataTransfer.dropEffect = isNoOp ? "none" : "move";
|
|
56
|
+
onEnter();
|
|
57
|
+
}, onDragLeave: onLeave, onDrop: (event) => {
|
|
58
|
+
if (!active)
|
|
59
|
+
return;
|
|
60
|
+
event.preventDefault();
|
|
61
|
+
onDrop();
|
|
62
|
+
}, className: `relative transition-[height,margin] duration-150 ${active ? "h-3 my-0.5" : "h-1.5"}`, children: active && (_jsx("div", { className: `pointer-events-none absolute inset-x-0 top-1/2 -translate-y-1/2 rounded transition-all ${showHighlight
|
|
63
|
+
? "h-1 bg-component-blue shadow-[0_0_0_3px_rgba(59,130,246,0.15)]"
|
|
64
|
+
: isNoOp
|
|
65
|
+
? "h-px bg-transparent"
|
|
66
|
+
: "h-0.5 bg-gray-200"}` })) }));
|
|
67
|
+
}
|
|
68
|
+
function RuleAccordionItem({ rule, expanded, applied, disabled, isFirst, isLast, isDragSource, onToggle, onApply, onRename, onMove, onDuplicate, onDelete, onDragStart, onDragEnd, children, }) {
|
|
69
|
+
const [editing, setEditing] = useState(false);
|
|
70
|
+
const [draftName, setDraftName] = useState(rule.name || "");
|
|
71
|
+
const inputRef = useRef(null);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
setDraftName(rule.name || "");
|
|
74
|
+
}, [rule.name]);
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (!editing)
|
|
77
|
+
return;
|
|
78
|
+
const id = window.setTimeout(() => {
|
|
79
|
+
inputRef.current?.focus();
|
|
80
|
+
inputRef.current?.select();
|
|
81
|
+
}, 0);
|
|
82
|
+
return () => window.clearTimeout(id);
|
|
83
|
+
}, [editing]);
|
|
84
|
+
const commitRename = () => {
|
|
85
|
+
const next = draftName.trim();
|
|
86
|
+
if (next && next !== rule.name) {
|
|
87
|
+
onRename(next);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
setDraftName(rule.name || "");
|
|
91
|
+
}
|
|
92
|
+
setEditing(false);
|
|
93
|
+
};
|
|
94
|
+
const cancelRename = () => {
|
|
95
|
+
setDraftName(rule.name || "");
|
|
96
|
+
setEditing(false);
|
|
97
|
+
};
|
|
98
|
+
const headerDraggable = !disabled && !editing;
|
|
99
|
+
const handleHeaderDragStart = (event) => {
|
|
100
|
+
if (!headerDraggable) {
|
|
101
|
+
event.preventDefault();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Don't drag when the gesture starts on a button or other exempt area
|
|
105
|
+
// (action cluster, name edit input). Letting the user click these without
|
|
106
|
+
// accidentally initiating a drag.
|
|
107
|
+
const target = event.target;
|
|
108
|
+
if (target?.closest("[data-drag-exempt]")) {
|
|
109
|
+
event.preventDefault();
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
onDragStart(event);
|
|
113
|
+
};
|
|
114
|
+
return (_jsxs("div", { className: `overflow-hidden rounded border transition-colors ${expanded
|
|
115
|
+
? "border-component-blue bg-blue-50/40"
|
|
116
|
+
: "border-gray-200 bg-white"} ${isDragSource ? "opacity-40" : ""}`, children: [_jsxs("div", { draggable: headerDraggable, onDragStart: handleHeaderDragStart, onDragEnd: onDragEnd, className: `flex items-center gap-1 px-1.5 py-1.5 ${headerDraggable ? "cursor-grab active:cursor-grabbing" : ""}`, children: [_jsx("span", { "aria-hidden": true, className: "flex size-5 shrink-0 items-center justify-center text-gray-400", children: _jsx(GripVertical, { className: "size-3.5" }) }), _jsx("button", { type: "button", onClick: onToggle, "aria-label": expanded ? "Collapse rule" : "Expand rule", "data-drag-exempt": true, className: "flex size-5 shrink-0 cursor-pointer items-center justify-center rounded text-gray-500 hover:bg-gray-100 hover:text-gray-800", children: expanded ? (_jsx(ChevronDown, { className: "size-3.5" })) : (_jsx(ChevronRight, { className: "size-3.5" })) }), _jsx("button", { type: "button", onClick: onApply, disabled: disabled || applied, "data-drag-exempt": true, "aria-label": applied ? "Currently applied" : "Apply this rule", "aria-pressed": applied, title: applied ? "Currently applied" : "Apply this rule", className: `flex size-5 shrink-0 items-center justify-center rounded ${applied
|
|
117
|
+
? "cursor-default"
|
|
118
|
+
: "cursor-pointer hover:bg-gray-100 disabled:cursor-not-allowed"}`, children: applied ? (_jsx(CheckCircle2, { className: "size-3.5 text-component-blue" })) : (_jsx(CircleDashed, { className: "size-3.5 text-gray-300 hover:text-gray-500" })) }), editing ? (_jsx("input", { ref: inputRef, type: "text", "data-drag-exempt": true, className: "min-w-0 flex-1 rounded border border-gray-300 px-2 py-0.5 text-xs outline-none focus:border-component-blue", value: draftName, disabled: disabled, onChange: (event) => setDraftName(event.target.value), onBlur: commitRename, onKeyDown: (event) => {
|
|
119
|
+
if (event.key === "Enter") {
|
|
120
|
+
event.preventDefault();
|
|
121
|
+
commitRename();
|
|
122
|
+
}
|
|
123
|
+
else if (event.key === "Escape") {
|
|
124
|
+
event.preventDefault();
|
|
125
|
+
cancelRename();
|
|
126
|
+
}
|
|
127
|
+
} })) : (_jsxs("button", { type: "button", "data-drag-exempt": true, className: "flex min-w-0 flex-1 items-center gap-2 truncate text-left text-xs font-medium text-gray-800", onClick: onToggle, onDoubleClick: () => !disabled && setEditing(true), title: rule.name || "Unnamed rule", children: [_jsx("span", { className: "truncate", children: rule.name || "Unnamed rule" }), rule.unsupported && (_jsx("span", { className: "shrink-0 rounded bg-amber-100 px-1.5 py-0.5 text-2xs text-amber-700", children: "limited" }))] })), _jsxs("div", { "data-drag-exempt": true, className: "flex shrink-0 items-center", children: [_jsx(IconActionButton, { label: "Rename", disabled: disabled || editing, onClick: () => setEditing(true), children: _jsx(Pencil, { className: "size-3" }) }), _jsx(IconActionButton, { label: "Move up", disabled: disabled || isFirst, onClick: () => onMove(-1), children: _jsx(ChevronUp, { className: "size-3" }) }), _jsx(IconActionButton, { label: "Move down", disabled: disabled || isLast, onClick: () => onMove(1), children: _jsx(ChevronDown, { className: "size-3" }) }), _jsx(IconActionButton, { label: "Duplicate", disabled: disabled, onClick: onDuplicate, children: _jsx(Copy, { className: "size-3" }) }), _jsx(IconActionButton, { label: "Delete", disabled: disabled, danger: true, onClick: onDelete, children: _jsx(Trash2, { className: "size-3" }) })] })] }), expanded && children ? (_jsx("div", { className: "border-t border-gray-200 bg-white p-3", children: children })) : null] }));
|
|
128
|
+
}
|
|
129
|
+
function IconActionButton({ label, disabled, danger, onClick, children, }) {
|
|
130
|
+
return (_jsx(Button, { type: "button", size: "xxs", variant: "ghost", disabled: disabled, onClick: onClick, "aria-label": label, title: label, className: `size-6 rounded-md p-0 ${danger ? "hover:bg-red-50 hover:text-red-600" : ""}`, children: children }));
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=RuleList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuleList.js","sourceRoot":"","sources":["../../../src/editor/personalization/RuleList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
import { RuleElement } from "../../types";
|
|
3
|
+
export declare function RuleParameterInput({ element, values, disabled, onChange, prefix, stripLeadingWhere, }: {
|
|
4
|
+
element?: RuleElement;
|
|
5
|
+
values: Record<string, string>;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
onChange: (values: Record<string, string>) => void;
|
|
8
|
+
prefix?: ReactNode;
|
|
9
|
+
stripLeadingWhere?: boolean;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { TreeItemPicker } from "./TreeItemPicker";
|
|
4
|
+
function optionsFromSource(source) {
|
|
5
|
+
if (!source)
|
|
6
|
+
return [];
|
|
7
|
+
return source
|
|
8
|
+
.split(/[|;]/)
|
|
9
|
+
.map((part) => part.trim())
|
|
10
|
+
.filter(Boolean)
|
|
11
|
+
.map((part) => {
|
|
12
|
+
const [value, label] = part.includes("=")
|
|
13
|
+
? part.split("=")
|
|
14
|
+
: [part, part];
|
|
15
|
+
return {
|
|
16
|
+
value: (value || "").trim(),
|
|
17
|
+
label: (label || value || "").trim(),
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const PLACEHOLDER_RE = /\[([^\]]+)\]/g;
|
|
22
|
+
function buildSegments(text) {
|
|
23
|
+
const out = [];
|
|
24
|
+
if (!text)
|
|
25
|
+
return out;
|
|
26
|
+
let last = 0;
|
|
27
|
+
PLACEHOLDER_RE.lastIndex = 0;
|
|
28
|
+
let match;
|
|
29
|
+
while ((match = PLACEHOLDER_RE.exec(text)) !== null) {
|
|
30
|
+
if (match.index > last) {
|
|
31
|
+
out.push({ kind: "text", value: text.slice(last, match.index) });
|
|
32
|
+
}
|
|
33
|
+
const inner = match[1] ?? "";
|
|
34
|
+
const parts = inner.split(",");
|
|
35
|
+
const name = (parts[0] ?? "").trim();
|
|
36
|
+
const last4 = (parts[parts.length - 1] ?? "").trim();
|
|
37
|
+
out.push({
|
|
38
|
+
kind: "param",
|
|
39
|
+
name,
|
|
40
|
+
placeholderLabel: last4 || name,
|
|
41
|
+
});
|
|
42
|
+
last = PLACEHOLDER_RE.lastIndex;
|
|
43
|
+
}
|
|
44
|
+
if (last < text.length) {
|
|
45
|
+
out.push({ kind: "text", value: text.slice(last) });
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
export function RuleParameterInput({ element, values, disabled, onChange, prefix, stripLeadingWhere, }) {
|
|
50
|
+
const text = useMemo(() => {
|
|
51
|
+
const raw = element?.text ?? "";
|
|
52
|
+
return stripLeadingWhere ? raw.replace(/^\s*where\s+/i, "") : raw;
|
|
53
|
+
}, [element?.text, stripLeadingWhere]);
|
|
54
|
+
const segments = useMemo(() => buildSegments(text), [text]);
|
|
55
|
+
if (!element) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
// Sitecore stores rule parameters as XML attributes (e.g. s:DataSource).
|
|
59
|
+
// The placeholder name in the rule's Text field and the persisted attribute
|
|
60
|
+
// name can drift in case across Sitecore versions, so look up and write
|
|
61
|
+
// values case-insensitively to keep the UI in sync with what's stored.
|
|
62
|
+
const findKey = (name) => Object.keys(values).find((key) => key.toLowerCase() === name.toLowerCase());
|
|
63
|
+
const getValue = (name) => {
|
|
64
|
+
const key = findKey(name);
|
|
65
|
+
return key ? (values[key] ?? "") : "";
|
|
66
|
+
};
|
|
67
|
+
const setValue = (name, value) => {
|
|
68
|
+
const existingKey = findKey(name);
|
|
69
|
+
const key = existingKey ?? name;
|
|
70
|
+
onChange({ ...values, [key]: value });
|
|
71
|
+
};
|
|
72
|
+
const placeholderNamesLower = new Set(segments
|
|
73
|
+
.filter((s) => s.kind === "param")
|
|
74
|
+
.map((s) => s.name.toLowerCase()));
|
|
75
|
+
const orphanParameters = element.parameters.filter((p) => !placeholderNamesLower.has(p.name.toLowerCase()));
|
|
76
|
+
if (segments.length === 0 && element.parameters.length === 0) {
|
|
77
|
+
return (_jsx("div", { className: "text-2xs text-gray-500", children: "No parameters are required for this rule element." }));
|
|
78
|
+
}
|
|
79
|
+
return (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "text-xs leading-7 text-gray-800", children: [prefix, segments.map((segment, index) => {
|
|
80
|
+
if (segment.kind === "text") {
|
|
81
|
+
return _jsx("span", { children: segment.value }, index);
|
|
82
|
+
}
|
|
83
|
+
const parameter = element.parameters.find((p) => p.name.toLowerCase() === segment.name.toLowerCase());
|
|
84
|
+
return (_jsx(InlineParam, { parameter: parameter, fallbackName: segment.name, fallbackLabel: segment.placeholderLabel, value: getValue(segment.name), disabled: disabled, onChange: (next) => setValue(segment.name, next) }, index));
|
|
85
|
+
})] }), orphanParameters.length > 0 && (_jsx("div", { className: "space-y-2 border-t border-gray-200 pt-2", children: orphanParameters.map((parameter) => (_jsxs("label", { className: "block space-y-1", children: [_jsx("span", { className: "text-2xs font-medium text-gray-600", children: parameter.title || parameter.name }), _jsx(InlineParam, { parameter: parameter, fallbackName: parameter.name, fallbackLabel: parameter.title || parameter.name, value: getValue(parameter.name), disabled: disabled, onChange: (next) => setValue(parameter.name, next), blockLayout: true })] }, parameter.name))) }))] }));
|
|
86
|
+
}
|
|
87
|
+
const INLINE_INPUT = "inline-flex h-6 max-w-full min-w-[3rem] rounded border border-gray-300 bg-white px-1.5 align-baseline text-xs leading-6 text-gray-800 outline-none focus:border-component-blue";
|
|
88
|
+
const BLOCK_INPUT = "block w-full rounded border border-gray-300 bg-white px-2 py-1 text-xs text-gray-800 outline-none focus:border-component-blue";
|
|
89
|
+
function InlineParam({ parameter, fallbackName, fallbackLabel, value, disabled, onChange, blockLayout, }) {
|
|
90
|
+
const type = (parameter?.type || "text").toLowerCase();
|
|
91
|
+
const placeholder = fallbackLabel || parameter?.title || fallbackName;
|
|
92
|
+
const sourceOptions = useMemo(() => optionsFromSource(parameter?.source), [parameter?.source]);
|
|
93
|
+
const inputCls = blockLayout ? BLOCK_INPUT : INLINE_INPUT;
|
|
94
|
+
const widthCh = Math.max(placeholder.length + 1, Math.min(value.length + 2, 32));
|
|
95
|
+
if (type === "tree" && parameter?.rootItemId) {
|
|
96
|
+
return (_jsx(TreeItemPicker, { value: value, rootItemId: parameter.rootItemId, disabled: disabled, placeholder: placeholder, inline: !blockLayout, onChange: onChange }));
|
|
97
|
+
}
|
|
98
|
+
if ((type === "droplink" || type === "enum") && sourceOptions.length > 0) {
|
|
99
|
+
return (_jsxs("select", { className: inputCls, value: value, disabled: disabled, onChange: (event) => onChange(event.target.value), style: blockLayout ? undefined : { minWidth: `${widthCh}ch` }, children: [_jsxs("option", { value: "", children: [placeholder, "\u2026"] }), sourceOptions.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value)))] }));
|
|
100
|
+
}
|
|
101
|
+
if (type === "operator") {
|
|
102
|
+
return (_jsxs("select", { className: inputCls, value: value, disabled: disabled, onChange: (event) => onChange(event.target.value), style: blockLayout ? undefined : { minWidth: `${widthCh}ch` }, children: [_jsxs("option", { value: "", children: [placeholder, "\u2026"] }), _jsx("option", { value: "equal", children: "equals" }), _jsx("option", { value: "notequal", children: "does not equal" }), _jsx("option", { value: "greaterthan", children: "greater than" }), _jsx("option", { value: "lessthan", children: "less than" }), _jsx("option", { value: "contains", children: "contains" })] }));
|
|
103
|
+
}
|
|
104
|
+
if (type === "checkbox") {
|
|
105
|
+
const checked = value === "1" || value.toLowerCase() === "true";
|
|
106
|
+
if (blockLayout) {
|
|
107
|
+
return (_jsx("input", { type: "checkbox", checked: checked, disabled: disabled, onChange: (event) => onChange(event.target.checked ? "1" : "0") }));
|
|
108
|
+
}
|
|
109
|
+
return (_jsxs("span", { className: "inline-flex h-6 items-center gap-1 rounded border border-gray-300 bg-white px-2 align-baseline text-xs leading-6", children: [_jsx("input", { type: "checkbox", checked: checked, disabled: disabled, onChange: (event) => onChange(event.target.checked ? "1" : "0") }), _jsx("span", { className: "text-2xs text-gray-500", children: placeholder })] }));
|
|
110
|
+
}
|
|
111
|
+
// text, item (without rootItemId), tree without rootItemId, and any
|
|
112
|
+
// unknown type fall through to a plain inline text input.
|
|
113
|
+
return (_jsx("input", { type: "text", className: inputCls, value: value, disabled: disabled, placeholder: placeholder, onChange: (event) => onChange(event.target.value), style: blockLayout ? undefined : { width: `${widthCh}ch` } }));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=RuleParameterInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuleParameterInput.js","sourceRoot":"","sources":["../../../src/editor/personalization/RuleParameterInput.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function TreeItemPicker({ value, rootItemId, language, disabled, placeholder, inline, onChange, }: {
|
|
2
|
+
value: string;
|
|
3
|
+
rootItemId: string;
|
|
4
|
+
language?: string;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
inline?: boolean;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useState } from "react";
|
|
3
|
+
import { ChevronDown, X } from "lucide-react";
|
|
4
|
+
import ContentTree from "../ContentTree";
|
|
5
|
+
import { useEditContext } from "../client/editContext";
|
|
6
|
+
import { fetchItemStubs } from "../services/contentService";
|
|
7
|
+
import { Popover, PopoverContent, PopoverTrigger, } from "../../components/ui/popover";
|
|
8
|
+
import { Button } from "../../components/ui/button";
|
|
9
|
+
function normalizeLanguage(language) {
|
|
10
|
+
if (!language || language === "*" || language === "mixed")
|
|
11
|
+
return "en";
|
|
12
|
+
return language;
|
|
13
|
+
}
|
|
14
|
+
function isLikelyGuid(value) {
|
|
15
|
+
return /^[{(]?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}[)}]?$/i.test(value.trim());
|
|
16
|
+
}
|
|
17
|
+
export function TreeItemPicker({ value, rootItemId, language, disabled, placeholder = "Select item", inline, onChange, }) {
|
|
18
|
+
const editContext = useEditContext();
|
|
19
|
+
const effectiveLanguage = useMemo(() => normalizeLanguage(language ?? editContext?.currentItemDescriptor?.language ?? "en"), [language, editContext?.currentItemDescriptor?.language]);
|
|
20
|
+
const [open, setOpen] = useState(false);
|
|
21
|
+
const [stub, setStub] = useState();
|
|
22
|
+
const [resolving, setResolving] = useState(false);
|
|
23
|
+
const [fallbackStub, setFallbackStub] = useState();
|
|
24
|
+
const currentItemId = editContext?.currentItemDescriptor?.id;
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
let cancelled = false;
|
|
27
|
+
setStub(undefined);
|
|
28
|
+
if (!value || !isLikelyGuid(value))
|
|
29
|
+
return;
|
|
30
|
+
setResolving(true);
|
|
31
|
+
fetchItemStubs([
|
|
32
|
+
{ id: value, language: effectiveLanguage, version: 1 },
|
|
33
|
+
])
|
|
34
|
+
.then((stubs) => {
|
|
35
|
+
if (cancelled)
|
|
36
|
+
return;
|
|
37
|
+
setStub(stubs?.[0]);
|
|
38
|
+
})
|
|
39
|
+
.catch(() => {
|
|
40
|
+
if (!cancelled)
|
|
41
|
+
setStub(undefined);
|
|
42
|
+
})
|
|
43
|
+
.finally(() => {
|
|
44
|
+
if (!cancelled)
|
|
45
|
+
setResolving(false);
|
|
46
|
+
});
|
|
47
|
+
return () => {
|
|
48
|
+
cancelled = true;
|
|
49
|
+
};
|
|
50
|
+
}, [value, effectiveLanguage]);
|
|
51
|
+
// Fetch the current item's stub so we can expand to it when no value is selected.
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
let cancelled = false;
|
|
54
|
+
setFallbackStub(undefined);
|
|
55
|
+
if (!currentItemId || !isLikelyGuid(currentItemId))
|
|
56
|
+
return;
|
|
57
|
+
fetchItemStubs([
|
|
58
|
+
{ id: currentItemId, language: effectiveLanguage, version: 1 },
|
|
59
|
+
])
|
|
60
|
+
.then((stubs) => {
|
|
61
|
+
if (cancelled)
|
|
62
|
+
return;
|
|
63
|
+
setFallbackStub(stubs?.[0]);
|
|
64
|
+
})
|
|
65
|
+
.catch(() => {
|
|
66
|
+
if (!cancelled)
|
|
67
|
+
setFallbackStub(undefined);
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
cancelled = true;
|
|
71
|
+
};
|
|
72
|
+
}, [currentItemId, effectiveLanguage]);
|
|
73
|
+
const label = (() => {
|
|
74
|
+
if (!value)
|
|
75
|
+
return placeholder;
|
|
76
|
+
if (resolving && !stub)
|
|
77
|
+
return "Loading…";
|
|
78
|
+
if (stub)
|
|
79
|
+
return stub.displayName?.trim() || stub.name || value;
|
|
80
|
+
return value;
|
|
81
|
+
})();
|
|
82
|
+
const subtitle = stub?.path;
|
|
83
|
+
const hasValue = !!value;
|
|
84
|
+
// When a value is selected, expand to it. Otherwise fall back to the item
|
|
85
|
+
// currently being edited so its branch is visible by default. As a last
|
|
86
|
+
// resort, just expand the root.
|
|
87
|
+
const expandIdPath = stub?.idPath || fallbackStub?.idPath || `/${rootItemId}`;
|
|
88
|
+
if (inline) {
|
|
89
|
+
const triggerLabel = !value
|
|
90
|
+
? placeholder
|
|
91
|
+
: resolving && !stub
|
|
92
|
+
? "Loading…"
|
|
93
|
+
: stub?.displayName?.trim() || stub?.name || value;
|
|
94
|
+
return (_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs("button", { type: "button", disabled: disabled, title: subtitle || (hasValue ? value : undefined), className: `inline-flex h-6 max-w-[16rem] items-center gap-1 rounded border px-1.5 align-baseline text-xs leading-6 transition-colors ${hasValue
|
|
95
|
+
? "border-component-blue/40 bg-blue-50 text-gray-800 hover:bg-blue-100"
|
|
96
|
+
: "border-dashed border-gray-300 bg-white text-gray-500 hover:border-gray-400 hover:text-gray-700"} disabled:cursor-not-allowed disabled:opacity-60`, children: [_jsx("span", { className: "truncate", children: triggerLabel }), _jsx(ChevronDown, { className: "size-3 shrink-0 opacity-60" })] }) }), _jsxs(PopoverContent, { align: "start", sideOffset: 4, className: "w-[28rem] max-w-[calc(100vw-2rem)] p-0", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-gray-200 px-3 py-2 text-2xs text-gray-500", children: [_jsx("span", { children: "Select an item" }), hasValue && (_jsx("button", { type: "button", className: "rounded px-1.5 py-0.5 text-2xs text-gray-500 hover:bg-gray-100 hover:text-gray-700", onClick: () => {
|
|
97
|
+
onChange("");
|
|
98
|
+
setOpen(false);
|
|
99
|
+
}, children: "Clear" }))] }), _jsx("div", { className: "max-h-80 overflow-auto p-2", children: _jsx(ContentTree, { language: effectiveLanguage, selectionMode: "single", selectedItemIds: value ? [value] : [], rootItemIds: [rootItemId], expandIdPath: expandIdPath, scrollToSelected: true, onSelectionChange: (items) => {
|
|
100
|
+
const picked = items?.[0];
|
|
101
|
+
if (picked?.id) {
|
|
102
|
+
onChange(picked.id);
|
|
103
|
+
setOpen(false);
|
|
104
|
+
}
|
|
105
|
+
} }) })] })] }));
|
|
106
|
+
}
|
|
107
|
+
return (_jsxs("div", { className: "flex items-stretch gap-1", children: [_jsxs(Popover, { open: open, onOpenChange: setOpen, children: [_jsx(PopoverTrigger, { asChild: true, children: _jsxs(Button, { type: "button", variant: "outline", size: "xs", disabled: disabled, className: "min-w-0 flex-1 justify-between gap-2 px-2 font-normal", children: [_jsxs("span", { className: "flex min-w-0 flex-col items-start text-left", children: [_jsx("span", { className: `truncate text-xs ${hasValue ? "text-gray-800" : "text-gray-500"}`, children: label }), subtitle && (_jsx("span", { className: "truncate text-2xs text-gray-500", children: subtitle }))] }), _jsx(ChevronDown, { className: "size-3 shrink-0 text-gray-500" })] }) }), _jsxs(PopoverContent, { align: "start", sideOffset: 4, className: "w-[28rem] max-w-[calc(100vw-2rem)] p-0", children: [_jsx("div", { className: "border-b border-gray-200 px-3 py-2 text-2xs text-gray-500", children: "Select an item" }), _jsx("div", { className: "max-h-80 overflow-auto p-2", children: _jsx(ContentTree, { language: effectiveLanguage, selectionMode: "single", selectedItemIds: value ? [value] : [], rootItemIds: [rootItemId], expandIdPath: expandIdPath, scrollToSelected: true, onSelectionChange: (items) => {
|
|
108
|
+
const picked = items?.[0];
|
|
109
|
+
if (picked?.id) {
|
|
110
|
+
onChange(picked.id);
|
|
111
|
+
setOpen(false);
|
|
112
|
+
}
|
|
113
|
+
} }) })] })] }), hasValue && !disabled && (_jsx(Button, { type: "button", size: "xxs", variant: "ghost", "aria-label": "Clear selection", title: "Clear selection", className: "px-1", onClick: () => onChange(""), children: _jsx(X, { className: "size-3" }) }))] }));
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=TreeItemPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeItemPicker.js","sourceRoot":"","sources":["../../../src/editor/personalization/TreeItemPicker.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,SAAS,iBAAiB,CAAC,QAAiB;IAC1C,IAAI,CAAC,QAAQ,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IACvE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,2EAA2E,CAAC,IAAI,CACrF,KAAK,CAAC,IAAI,EAAE,CACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,GAAG,aAAa,EAC3B,MAAM,EACN,QAAQ,GAST;IACC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,iBAAiB,GAAG,OAAO,CAC/B,GAAG,EAAE,CACH,iBAAiB,CACf,QAAQ,IAAI,WAAW,EAAE,qBAAqB,EAAE,QAAQ,IAAI,IAAI,CACjE,EACH,CAAC,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CACzD,CAAC;IAEF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAwB,CAAC;IACzD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAwB,CAAC;IAEzE,MAAM,aAAa,GAAG,WAAW,EAAE,qBAAqB,EAAE,EAAE,CAAC;IAE7D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,OAAO,CAAC,SAAS,CAAC,CAAC;QACnB,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAAE,OAAO;QAC3C,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,cAAc,CAAC;YACb,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE;SACvD,CAAC;aACC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,SAAS;gBAAE,OAAO;YACtB,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,SAAS;gBAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE/B,kFAAkF;IAClF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,eAAe,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;YAAE,OAAO;QAC3D,cAAc,CAAC;YACb,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC,EAAE;SAC/D,CAAC;aACC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,SAAS;gBAAE,OAAO;YACtB,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,SAAS;gBAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC,KAAK;YAAE,OAAO,WAAW,CAAC;QAC/B,IAAI,SAAS,IAAI,CAAC,IAAI;YAAE,OAAO,UAAU,CAAC;QAC1C,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,QAAQ,GAAG,IAAI,EAAE,IAAI,CAAC;IAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;IACzB,0EAA0E;IAC1E,wEAAwE;IACxE,gCAAgC;IAChC,MAAM,YAAY,GAChB,IAAI,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;IAE3D,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,CAAC,KAAK;YACzB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI;gBAClB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC;QACvD,OAAO,CACL,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBACrB,kBACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EACjD,SAAS,EAAE,6HACT,QAAQ;4BACN,CAAC,CAAC,qEAAqE;4BACvE,CAAC,CAAC,gGACN,kDAAkD,aAElD,eAAM,SAAS,EAAC,UAAU,YAAE,YAAY,GAAQ,EAChD,KAAC,WAAW,IAAC,SAAS,EAAC,4BAA4B,GAAG,IAC/C,GACM,EACjB,MAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,wCAAwC,aAElD,eAAK,SAAS,EAAC,mGAAmG,aAChH,4CAA2B,EAC1B,QAAQ,IAAI,CACX,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,oFAAoF,EAC9F,OAAO,EAAE,GAAG,EAAE;wCACZ,QAAQ,CAAC,EAAE,CAAC,CAAC;wCACb,OAAO,CAAC,KAAK,CAAC,CAAC;oCACjB,CAAC,sBAGM,CACV,IACG,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,WAAW,IACV,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAC,QAAQ,EACtB,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EACrC,WAAW,EAAE,CAAC,UAAU,CAAC,EACzB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,QAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;oCAC3B,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;oCAC1B,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;wCACf,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wCACpB,OAAO,CAAC,KAAK,CAAC,CAAC;oCACjB,CAAC;gCACH,CAAC,GACD,GACE,IACS,IACT,CACX,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,0BAA0B,aACvC,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,aACxC,KAAC,cAAc,IAAC,OAAO,kBACrB,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,uDAAuD,aAEjE,gBAAM,SAAS,EAAC,6CAA6C,aAC3D,eACE,SAAS,EAAE,oBACT,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAC/B,EAAE,YAED,KAAK,GACD,EACN,QAAQ,IAAI,CACX,eAAM,SAAS,EAAC,iCAAiC,YAC9C,QAAQ,GACJ,CACR,IACI,EACP,KAAC,WAAW,IAAC,SAAS,EAAC,+BAA+B,GAAG,IAClD,GACM,EACjB,MAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,SAAS,EAAC,wCAAwC,aAElD,cAAK,SAAS,EAAC,2DAA2D,+BAEpE,EACN,cAAK,SAAS,EAAC,4BAA4B,YACzC,KAAC,WAAW,IACV,QAAQ,EAAE,iBAAiB,EAC3B,aAAa,EAAC,QAAQ,EACtB,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EACrC,WAAW,EAAE,CAAC,UAAU,CAAC,EACzB,YAAY,EAAE,YAAY,EAC1B,gBAAgB,QAChB,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;wCAC3B,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;wCAC1B,IAAI,MAAM,EAAE,EAAE,EAAE,CAAC;4CACf,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;4CACpB,OAAO,CAAC,KAAK,CAAC,CAAC;wCACjB,CAAC;oCACH,CAAC,GACD,GACE,IACS,IACT,EACT,QAAQ,IAAI,CAAC,QAAQ,IAAI,CACxB,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,OAAO,EAAC,OAAO,gBACJ,iBAAiB,EAC5B,KAAK,EAAC,iBAAiB,EACvB,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,YAE3B,KAAC,CAAC,IAAC,SAAS,EAAC,QAAQ,GAAG,GACjB,CACV,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PersonalizationAction, PersonalizationConditionNode, PersonalizationRule } from "../../types";
|
|
2
|
+
export declare function createId(): string;
|
|
3
|
+
export declare function createRule(name?: string): PersonalizationRule;
|
|
4
|
+
export declare function createLeafCondition(definitionItemId: string): PersonalizationConditionNode;
|
|
5
|
+
export declare function createCompositeCondition(op: "and" | "or" | "not", children?: PersonalizationConditionNode[]): PersonalizationConditionNode;
|
|
6
|
+
export declare function createAction(definitionItemId: string): PersonalizationAction;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export function createId() {
|
|
2
|
+
if (typeof crypto !== "undefined" && "randomUUID" in crypto) {
|
|
3
|
+
return crypto.randomUUID();
|
|
4
|
+
}
|
|
5
|
+
return Math.random().toString(16).slice(2) + Date.now().toString(16);
|
|
6
|
+
}
|
|
7
|
+
export function createRule(name = "New rule") {
|
|
8
|
+
return {
|
|
9
|
+
uid: createId(),
|
|
10
|
+
name,
|
|
11
|
+
conditions: null,
|
|
12
|
+
actions: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function createLeafCondition(definitionItemId) {
|
|
16
|
+
return {
|
|
17
|
+
kind: "leaf",
|
|
18
|
+
definitionItemId,
|
|
19
|
+
uniqueId: createId(),
|
|
20
|
+
parameters: {},
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function createCompositeCondition(op, children = []) {
|
|
24
|
+
return {
|
|
25
|
+
kind: "composite",
|
|
26
|
+
op,
|
|
27
|
+
children,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function createAction(definitionItemId) {
|
|
31
|
+
return {
|
|
32
|
+
uid: createId(),
|
|
33
|
+
definitionItemId,
|
|
34
|
+
parameters: {},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/editor/personalization/utils.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,QAAQ;IACtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;QAC5D,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAI,GAAG,UAAU;IAC1C,OAAO;QACL,GAAG,EAAE,QAAQ,EAAE;QACf,IAAI;QACJ,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,gBAAwB;IAC1D,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,gBAAgB;QAChB,QAAQ,EAAE,QAAQ,EAAE;QACpB,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,EAAwB,EACxB,WAA2C,EAAE;IAE7C,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,EAAE;QACF,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,gBAAwB;IACnD,OAAO;QACL,GAAG,EAAE,QAAQ,EAAE;QACf,gBAAgB;QAChB,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|