1321 lines
97 KiB
JavaScript
1321 lines
97 KiB
JavaScript
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
|
|
"[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>__TURBOPACK__default__export__
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$types$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/lib/types.ts [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/plus.js [app-client] (ecmascript) <export default as Plus>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trash$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trash2$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/trash-2.js [app-client] (ecmascript) <export default as Trash2>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$arrow$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ArrowRight$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js [app-client] (ecmascript) <export default as ArrowRight>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/book-open.js [app-client] (ecmascript) <export default as BookOpen>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__MessageCircle$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/message-circle.js [app-client] (ecmascript) <export default as MessageCircle>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/zap.js [app-client] (ecmascript) <export default as Zap>");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$palette$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Palette$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js [app-client] (ecmascript) <export default as Palette>");
|
|
;
|
|
var _s = __turbopack_context__.k.signature(), _s1 = __turbopack_context__.k.signature();
|
|
'use client';
|
|
;
|
|
;
|
|
;
|
|
const CARD_WIDTH = 260;
|
|
const CARD_HEIGHT = 220;
|
|
const INITIAL_COLORS = [
|
|
'#ffffff',
|
|
'#dbeafe',
|
|
'#dcfce7',
|
|
'#fef9c3',
|
|
'#fee2e2',
|
|
'#f3e8ff'
|
|
];
|
|
const renderTextWithLinks = (text, entities, onNavigate)=>{
|
|
if (!text) return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
|
className: "text-slate-400 italic",
|
|
children: "Description..."
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 28,
|
|
columnNumber: 23
|
|
}, ("TURBOPACK compile-time value", void 0));
|
|
const parts = [
|
|
text
|
|
];
|
|
entities.forEach((entity)=>{
|
|
if (!entity.name) return;
|
|
const regex = new RegExp(`(${entity.name})`, 'gi');
|
|
for(let i = 0; i < parts.length; i++){
|
|
const part = parts[i];
|
|
if (typeof part === 'string') {
|
|
const split = part.split(regex);
|
|
if (split.length > 1) {
|
|
const newParts = split.map((s, idx)=>{
|
|
if (s.toLowerCase() === entity.name.toLowerCase()) {
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
onNavigate(entity.id);
|
|
},
|
|
className: "text-indigo-600 hover:text-indigo-800 underline decoration-indigo-300 hover:decoration-indigo-600 cursor-pointer font-medium bg-indigo-50 px-0.5 rounded transition-all",
|
|
title: `Voir la fiche de ${entity.name}`,
|
|
children: s
|
|
}, `${entity.id}-${idx}`, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 44,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0));
|
|
}
|
|
return s;
|
|
});
|
|
parts.splice(i, 1, ...newParts);
|
|
i += newParts.length - 1;
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
|
|
children: parts
|
|
}, void 0, false);
|
|
};
|
|
const StoryNode = /*#__PURE__*/ __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].memo(_s(({ node, isSelected, isEditing, isDragging, activeColorPickerId, entities, savedColors, onMouseDown, onMouseUp, onStartConnection, onUpdate, onSetEditing, onToggleColorPicker, onSaveColor, onNavigateToEntity, onInputFocus, onInputCheckAutocomplete, onKeyDownInInput })=>{
|
|
_s();
|
|
const [showTypePicker, setShowTypePicker] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
|
|
const richDescription = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"])({
|
|
"StoryNode.useMemo[richDescription]": ()=>{
|
|
return renderTextWithLinks(node.description, entities, onNavigateToEntity);
|
|
}
|
|
}["StoryNode.useMemo[richDescription]"], [
|
|
node.description,
|
|
entities,
|
|
onNavigateToEntity
|
|
]);
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: `absolute flex flex-col rounded-xl shadow-sm border z-10 group
|
|
${isDragging ? '' : 'transition-all'}
|
|
${isSelected ? 'ring-2 ring-indigo-500 shadow-lg scale-[1.01]' : 'border-slate-200 hover:shadow-md'}
|
|
`,
|
|
style: {
|
|
transform: `translate3d(${node.x}px, ${node.y}px, 0)`,
|
|
width: CARD_WIDTH,
|
|
height: CARD_HEIGHT,
|
|
backgroundColor: node.color || '#ffffff',
|
|
willChange: 'transform'
|
|
},
|
|
onMouseDown: (e)=>onMouseDown(e, node.id),
|
|
onMouseUp: (e)=>onMouseUp(e, node.id),
|
|
onDoubleClick: (e)=>e.stopPropagation(),
|
|
onMouseLeave: ()=>setShowTypePicker(false),
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "h-1.5 rounded-t-xl bg-black/5 w-full cursor-grab active:cursor-grabbing"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 120,
|
|
columnNumber: 13
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex-1 px-4 pb-4 pt-2 flex flex-col overflow-hidden relative",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex justify-between items-start mb-2 relative",
|
|
children: [
|
|
isEditing ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("input", {
|
|
className: "font-bold text-slate-800 bg-white/50 border-b border-indigo-400 outline-none w-full mr-6 text-sm p-1 rounded",
|
|
value: node.title,
|
|
onChange: (e)=>onUpdate(node.id, {
|
|
title: e.target.value
|
|
}),
|
|
onFocus: onInputFocus,
|
|
autoFocus: true
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 125,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "font-bold text-slate-800 cursor-text truncate mr-6 text-sm",
|
|
onDoubleClick: ()=>onSetEditing(node.id),
|
|
children: node.title
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 133,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
onToggleColorPicker(node.id);
|
|
},
|
|
className: "p-1 rounded-full hover:bg-black/10 text-slate-400 hover:text-indigo-600 transition-colors absolute right-0 top-0",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$palette$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Palette$3e$__["Palette"], {
|
|
size: 14
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 145,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 141,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
activeColorPickerId === node.id && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "absolute right-[-10px] top-8 bg-white rounded-lg shadow-xl border border-slate-200 p-3 z-50 w-48 animate-in fade-in zoom-in-95 duration-100 cursor-default",
|
|
onMouseDown: (e)=>e.stopPropagation(),
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "grid grid-cols-4 gap-2 mb-3",
|
|
children: savedColors.map((color)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: ()=>onUpdate(node.id, {
|
|
color
|
|
}),
|
|
className: `w-8 h-8 rounded-full border border-slate-200 shadow-sm transition-transform hover:scale-110 ${node.color === color ? 'ring-2 ring-offset-1 ring-indigo-400' : ''}`,
|
|
style: {
|
|
backgroundColor: color
|
|
}
|
|
}, color, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 152,
|
|
columnNumber: 37
|
|
}, ("TURBOPACK compile-time value", void 0)))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 150,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex items-center gap-2 pt-2 border-t border-slate-100",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "relative w-8 h-8 rounded-full overflow-hidden border border-slate-300 shadow-inner",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("input", {
|
|
type: "color",
|
|
className: "absolute -top-2 -left-2 w-16 h-16 cursor-pointer",
|
|
value: node.color || '#ffffff',
|
|
onChange: (e)=>onUpdate(node.id, {
|
|
color: e.target.value
|
|
})
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 162,
|
|
columnNumber: 37
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 161,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: ()=>onSaveColor(node.color || '#ffffff'),
|
|
className: "text-[10px] font-bold text-indigo-600 hover:text-indigo-800 hover:underline flex-1 text-right",
|
|
children: "+ SAUVER"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 169,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 160,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 149,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 123,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex-1 overflow-y-auto custom-scrollbar relative mb-4",
|
|
children: isEditing ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("textarea", {
|
|
className: `w-full h-full bg-white/70 resize-none outline-none text-xs leading-relaxed p-2 rounded border border-indigo-100 shadow-inner ${node.type === 'dialogue' ? 'font-mono text-slate-700' : 'text-slate-600'}`,
|
|
placeholder: node.type === 'dialogue' ? "Héros: Salut !\nGuide: ..." : "Résumé de l'intrigue...",
|
|
value: node.description,
|
|
onChange: (e)=>onInputCheckAutocomplete(e, node.id, 'description'),
|
|
onKeyDown: (e)=>onKeyDownInInput(e, node.id),
|
|
onFocus: onInputFocus,
|
|
onBlur: ()=>onSetEditing(null)
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 182,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: `w-full h-full text-xs text-slate-600 leading-relaxed p-1 cursor-text whitespace-pre-wrap ${node.type === 'dialogue' ? 'font-mono bg-indigo-50/30 rounded pl-2 border-l-2 border-indigo-200' : ''}`,
|
|
onClick: ()=>onSetEditing(node.id),
|
|
children: richDescription
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 192,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 180,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "absolute bottom-2 right-2 z-20",
|
|
children: [
|
|
showTypePicker && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "absolute bottom-full mb-2 right-0 bg-white shadow-xl border border-slate-200 rounded-lg p-1 flex gap-1 animate-in zoom-in-95 duration-100 w-max",
|
|
onMouseDown: (e)=>e.stopPropagation(),
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
onUpdate(node.id, {
|
|
type: 'story'
|
|
});
|
|
setShowTypePicker(false);
|
|
},
|
|
className: `p-1.5 rounded hover:bg-slate-100 ${node.type === 'story' ? 'bg-indigo-50 ring-1 ring-indigo-200' : ''}`,
|
|
title: "Narration",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"], {
|
|
size: 14,
|
|
className: "text-slate-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 209,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 204,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
onUpdate(node.id, {
|
|
type: 'action'
|
|
});
|
|
setShowTypePicker(false);
|
|
},
|
|
className: `p-1.5 rounded hover:bg-amber-50 ${node.type === 'action' ? 'bg-amber-50 ring-1 ring-amber-200' : ''}`,
|
|
title: "Action",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], {
|
|
size: 14,
|
|
className: "text-amber-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 216,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 211,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
onUpdate(node.id, {
|
|
type: 'dialogue'
|
|
});
|
|
setShowTypePicker(false);
|
|
},
|
|
className: `p-1.5 rounded hover:bg-blue-50 ${node.type === 'dialogue' ? 'bg-blue-50 ring-1 ring-blue-200' : ''}`,
|
|
title: "Dialogue",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__MessageCircle$3e$__["MessageCircle"], {
|
|
size: 14,
|
|
className: "text-blue-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 223,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 218,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 203,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
className: "p-1.5 rounded-full bg-white/70 hover:bg-white shadow-sm border border-slate-100 hover:border-indigo-200 transition-all opacity-80 group-hover:opacity-100",
|
|
onClick: (e)=>{
|
|
e.stopPropagation();
|
|
setShowTypePicker(!showTypePicker);
|
|
},
|
|
children: [
|
|
node.type === 'story' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$book$2d$open$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__BookOpen$3e$__["BookOpen"], {
|
|
size: 14,
|
|
className: "text-slate-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 232,
|
|
columnNumber: 51
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
node.type === 'action' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$zap$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Zap$3e$__["Zap"], {
|
|
size: 14,
|
|
className: "text-amber-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 233,
|
|
columnNumber: 52
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
node.type === 'dialogue' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__MessageCircle$3e$__["MessageCircle"], {
|
|
size: 14,
|
|
className: "text-blue-500"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 234,
|
|
columnNumber: 54
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 228,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 201,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 122,
|
|
columnNumber: 13
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
className: "absolute -right-3 top-1/2 -translate-y-1/2 w-6 h-6 bg-white border border-slate-300 rounded-full flex items-center justify-center text-slate-400 hover:text-indigo-600 hover:border-indigo-500 shadow-sm opacity-0 group-hover:opacity-100 transition-all z-20",
|
|
onMouseDown: (e)=>onStartConnection(e, node.id),
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$arrow$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ArrowRight$3e$__["ArrowRight"], {
|
|
size: 12
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 243,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 239,
|
|
columnNumber: 13
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 103,
|
|
columnNumber: 9
|
|
}, ("TURBOPACK compile-time value", void 0));
|
|
}, "8yNvnjGOL794S5OUWPkg1xgktL0="), (prev, next)=>{
|
|
return prev.node === next.node && prev.isSelected === next.isSelected && prev.isEditing === next.isEditing && prev.isDragging === next.isDragging && prev.activeColorPickerId === next.activeColorPickerId && prev.entities === next.entities;
|
|
});
|
|
_c = StoryNode;
|
|
const StoryWorkflow = ({ data, onUpdate, entities, onNavigateToEntity })=>{
|
|
_s1();
|
|
const containerRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
|
|
const rafRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
|
|
const [internalNodes, setInternalNodes] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(data.nodes);
|
|
const internalNodesRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(internalNodes);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
|
|
"StoryWorkflow.useEffect": ()=>{
|
|
internalNodesRef.current = internalNodes;
|
|
}
|
|
}["StoryWorkflow.useEffect"], [
|
|
internalNodes
|
|
]);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
|
|
"StoryWorkflow.useEffect": ()=>{
|
|
setInternalNodes(data.nodes);
|
|
}
|
|
}["StoryWorkflow.useEffect"], [
|
|
data.nodes
|
|
]);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
|
|
"StoryWorkflow.useEffect": ()=>{
|
|
return ({
|
|
"StoryWorkflow.useEffect": ()=>{
|
|
if (rafRef.current) cancelAnimationFrame(rafRef.current);
|
|
}
|
|
})["StoryWorkflow.useEffect"];
|
|
}
|
|
}["StoryWorkflow.useEffect"], []);
|
|
const [activeSuggestion, setActiveSuggestion] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
|
|
const [selectedNodeIds, setSelectedNodeIds] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(new Set());
|
|
const [savedColors, setSavedColors] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(INITIAL_COLORS);
|
|
const [activeColorPickerId, setActiveColorPickerId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
|
|
const [editingNodeId, setEditingNodeId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
|
|
const [history, setHistory] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])([]);
|
|
const [isDragging, setIsDragging] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
|
|
const [dragStartPositions, setDragStartPositions] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(new Map());
|
|
const [dragStartMouse, setDragStartMouse] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({
|
|
x: 0,
|
|
y: 0
|
|
});
|
|
const [connectingNodeId, setConnectingNodeId] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(null);
|
|
const [mousePos, setMousePos] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({
|
|
x: 0,
|
|
y: 0
|
|
});
|
|
const [isPanning, setIsPanning] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
|
|
const [panStart, setPanStart] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({
|
|
x: 0,
|
|
y: 0
|
|
});
|
|
const [scrollStart, setScrollStart] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])({
|
|
x: 0,
|
|
y: 0
|
|
});
|
|
const pushHistory = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[pushHistory]": ()=>{
|
|
setHistory({
|
|
"StoryWorkflow.useCallback[pushHistory]": (prev)=>{
|
|
const newHistory = [
|
|
...prev,
|
|
data
|
|
];
|
|
if (newHistory.length > 20) return newHistory.slice(newHistory.length - 20);
|
|
return newHistory;
|
|
}
|
|
}["StoryWorkflow.useCallback[pushHistory]"]);
|
|
}
|
|
}["StoryWorkflow.useCallback[pushHistory]"], [
|
|
data
|
|
]);
|
|
const updateNode = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[updateNode]": (id, updates)=>{
|
|
const currentNodes = internalNodesRef.current;
|
|
onUpdate({
|
|
...data,
|
|
nodes: currentNodes.map({
|
|
"StoryWorkflow.useCallback[updateNode]": (n)=>n.id === id ? {
|
|
...n,
|
|
...updates
|
|
} : n
|
|
}["StoryWorkflow.useCallback[updateNode]"])
|
|
});
|
|
}
|
|
}["StoryWorkflow.useCallback[updateNode]"], [
|
|
data,
|
|
onUpdate
|
|
]);
|
|
const handleInputFocus = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleInputFocus]": (e)=>{
|
|
e.stopPropagation();
|
|
}
|
|
}["StoryWorkflow.useCallback[handleInputFocus]"], []);
|
|
const handleInputWithAutocomplete = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleInputWithAutocomplete]": (e, nodeId, field)=>{
|
|
const val = e.target.value;
|
|
updateNode(nodeId, {
|
|
[field]: val
|
|
});
|
|
const cursor = e.target.selectionStart || 0;
|
|
const textBeforeCursor = val.slice(0, cursor);
|
|
const match = textBeforeCursor.match(/([@#^])([^@#^\s]*)$/);
|
|
if (match) {
|
|
const trigger = match[1];
|
|
const query = match[2].toLowerCase();
|
|
const targetType = trigger === '@' ? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$types$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EntityType"].CHARACTER : trigger === '#' ? __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$types$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EntityType"].LOCATION : __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$lib$2f$types$2e$ts__$5b$app$2d$client$5d$__$28$ecmascript$29$__["EntityType"].OBJECT;
|
|
const filtered = entities.filter({
|
|
"StoryWorkflow.useCallback[handleInputWithAutocomplete].filtered": (ent)=>ent.type === targetType && ent.name.toLowerCase().includes(query)
|
|
}["StoryWorkflow.useCallback[handleInputWithAutocomplete].filtered"]);
|
|
setActiveSuggestion({
|
|
active: true,
|
|
trigger,
|
|
query,
|
|
nodeId,
|
|
field,
|
|
cursorIndex: cursor,
|
|
selectedIndex: 0,
|
|
filteredEntities: filtered
|
|
});
|
|
} else {
|
|
setActiveSuggestion(null);
|
|
}
|
|
}
|
|
}["StoryWorkflow.useCallback[handleInputWithAutocomplete]"], [
|
|
updateNode,
|
|
entities
|
|
]);
|
|
const insertEntity = (entity)=>{
|
|
if (!activeSuggestion) return;
|
|
const { nodeId, field, trigger, query } = activeSuggestion;
|
|
const node = internalNodesRef.current.find((n)=>n.id === nodeId);
|
|
if (!node) return;
|
|
const currentText = node[field];
|
|
const cursor = activeSuggestion.cursorIndex;
|
|
const insertionLength = trigger.length + query.length;
|
|
const startIdx = cursor - insertionLength;
|
|
if (startIdx < 0) return;
|
|
const before = currentText.slice(0, startIdx);
|
|
const after = currentText.slice(cursor);
|
|
const isDialogue = node.type === 'dialogue' && activeSuggestion.trigger === '@';
|
|
const suffix = isDialogue ? ": " : " ";
|
|
updateNode(nodeId, {
|
|
[field]: before + entity.name + suffix + after
|
|
});
|
|
setActiveSuggestion(null);
|
|
};
|
|
const handleKeyDownInInput = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleKeyDownInInput]": (e, nodeId)=>{
|
|
if (activeSuggestion && activeSuggestion.nodeId === nodeId) {
|
|
if (e.key === 'ArrowDown') {
|
|
e.preventDefault();
|
|
setActiveSuggestion({
|
|
"StoryWorkflow.useCallback[handleKeyDownInInput]": (prev)=>prev ? {
|
|
...prev,
|
|
selectedIndex: (prev.selectedIndex + 1) % prev.filteredEntities.length
|
|
} : null
|
|
}["StoryWorkflow.useCallback[handleKeyDownInInput]"]);
|
|
return;
|
|
} else if (e.key === 'ArrowUp') {
|
|
e.preventDefault();
|
|
setActiveSuggestion({
|
|
"StoryWorkflow.useCallback[handleKeyDownInInput]": (prev)=>prev ? {
|
|
...prev,
|
|
selectedIndex: (prev.selectedIndex - 1 + prev.filteredEntities.length) % prev.filteredEntities.length
|
|
} : null
|
|
}["StoryWorkflow.useCallback[handleKeyDownInInput]"]);
|
|
return;
|
|
} else if (e.key === 'Tab' || e.key === 'Enter') {
|
|
e.preventDefault();
|
|
if (activeSuggestion.filteredEntities.length > 0) {
|
|
insertEntity(activeSuggestion.filteredEntities[activeSuggestion.selectedIndex]);
|
|
} else {
|
|
setActiveSuggestion(null);
|
|
}
|
|
return;
|
|
} else if (e.key === 'Escape') {
|
|
setActiveSuggestion(null);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}["StoryWorkflow.useCallback[handleKeyDownInInput]"], [
|
|
activeSuggestion,
|
|
entities,
|
|
updateNode
|
|
]);
|
|
const handleNodeMouseDown = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleNodeMouseDown]": (e, nodeId)=>{
|
|
e.stopPropagation();
|
|
setActiveColorPickerId(null);
|
|
setSelectedNodeIds({
|
|
"StoryWorkflow.useCallback[handleNodeMouseDown]": (prevSelected)=>{
|
|
const newSelection = new Set(prevSelected);
|
|
if (e.ctrlKey) {
|
|
if (newSelection.has(nodeId)) newSelection.delete(nodeId);
|
|
else newSelection.add(nodeId);
|
|
} else {
|
|
if (!newSelection.has(nodeId)) {
|
|
newSelection.clear();
|
|
newSelection.add(nodeId);
|
|
}
|
|
}
|
|
const finalDragIds = e.ctrlKey ? newSelection : newSelection.has(nodeId) ? newSelection : new Set([
|
|
nodeId
|
|
]);
|
|
const startPositions = new Map();
|
|
internalNodesRef.current.forEach({
|
|
"StoryWorkflow.useCallback[handleNodeMouseDown]": (n)=>{
|
|
if (finalDragIds.has(n.id)) {
|
|
startPositions.set(n.id, {
|
|
x: n.x,
|
|
y: n.y
|
|
});
|
|
}
|
|
}
|
|
}["StoryWorkflow.useCallback[handleNodeMouseDown]"]);
|
|
setDragStartPositions(startPositions);
|
|
return newSelection;
|
|
}
|
|
}["StoryWorkflow.useCallback[handleNodeMouseDown]"]);
|
|
setIsDragging(true);
|
|
setDragStartMouse({
|
|
x: e.clientX,
|
|
y: e.clientY
|
|
});
|
|
pushHistory();
|
|
}
|
|
}["StoryWorkflow.useCallback[handleNodeMouseDown]"], [
|
|
pushHistory
|
|
]);
|
|
const startConnection = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[startConnection]": (e, nodeId)=>{
|
|
e.stopPropagation();
|
|
pushHistory();
|
|
setConnectingNodeId(nodeId);
|
|
}
|
|
}["StoryWorkflow.useCallback[startConnection]"], [
|
|
pushHistory
|
|
]);
|
|
const finishConnection = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[finishConnection]": (e, targetId)=>{
|
|
if (connectingNodeId && connectingNodeId !== targetId) {
|
|
const exists = data.connections.some({
|
|
"StoryWorkflow.useCallback[finishConnection].exists": (c)=>c.source === connectingNodeId && c.target === targetId
|
|
}["StoryWorkflow.useCallback[finishConnection].exists"]);
|
|
if (!exists) {
|
|
const newConn = {
|
|
id: `conn-${Date.now()}`,
|
|
source: connectingNodeId,
|
|
target: targetId
|
|
};
|
|
onUpdate({
|
|
...data,
|
|
nodes: internalNodesRef.current,
|
|
connections: [
|
|
...data.connections,
|
|
newConn
|
|
]
|
|
});
|
|
}
|
|
}
|
|
setConnectingNodeId(null);
|
|
}
|
|
}["StoryWorkflow.useCallback[finishConnection]"], [
|
|
data,
|
|
onUpdate,
|
|
connectingNodeId
|
|
]);
|
|
const handleToggleColorPicker = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleToggleColorPicker]": (id)=>{
|
|
setActiveColorPickerId({
|
|
"StoryWorkflow.useCallback[handleToggleColorPicker]": (prev)=>prev === id ? null : id
|
|
}["StoryWorkflow.useCallback[handleToggleColorPicker]"]);
|
|
}
|
|
}["StoryWorkflow.useCallback[handleToggleColorPicker]"], []);
|
|
const handleSaveColor = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"])({
|
|
"StoryWorkflow.useCallback[handleSaveColor]": (color)=>{
|
|
setSavedColors({
|
|
"StoryWorkflow.useCallback[handleSaveColor]": (prev)=>!prev.includes(color) ? [
|
|
...prev,
|
|
color
|
|
] : prev
|
|
}["StoryWorkflow.useCallback[handleSaveColor]"]);
|
|
}
|
|
}["StoryWorkflow.useCallback[handleSaveColor]"], []);
|
|
const handleMouseMove = (e)=>{
|
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
if (!rect) return;
|
|
const clientX = e.clientX;
|
|
const clientY = e.clientY;
|
|
if (isPanning && containerRef.current) {
|
|
const dx = clientX - panStart.x;
|
|
const dy = clientY - panStart.y;
|
|
containerRef.current.scrollLeft = scrollStart.x - dx;
|
|
containerRef.current.scrollTop = scrollStart.y - dy;
|
|
return;
|
|
}
|
|
// Only update mousePos when connecting (drawing a line), not during node drag
|
|
if (connectingNodeId) {
|
|
const scrollLeft = containerRef.current?.scrollLeft || 0;
|
|
const scrollTop = containerRef.current?.scrollTop || 0;
|
|
setMousePos({
|
|
x: clientX - rect.left + scrollLeft,
|
|
y: clientY - rect.top + scrollTop
|
|
});
|
|
}
|
|
if (isDragging) {
|
|
if (rafRef.current) return;
|
|
rafRef.current = requestAnimationFrame(()=>{
|
|
const dx = clientX - dragStartMouse.x;
|
|
const dy = clientY - dragStartMouse.y;
|
|
setInternalNodes((prevNodes)=>prevNodes.map((node)=>{
|
|
const startPos = dragStartPositions.get(node.id);
|
|
if (startPos) return {
|
|
...node,
|
|
x: startPos.x + dx,
|
|
y: startPos.y + dy
|
|
};
|
|
return node;
|
|
}));
|
|
rafRef.current = null;
|
|
});
|
|
}
|
|
};
|
|
const handleMouseUp = (e)=>{
|
|
if (rafRef.current) {
|
|
cancelAnimationFrame(rafRef.current);
|
|
rafRef.current = null;
|
|
}
|
|
if (isDragging) onUpdate({
|
|
...data,
|
|
nodes: internalNodesRef.current
|
|
});
|
|
// Hit-test: if connecting, check if mouse is over any node
|
|
if (connectingNodeId && containerRef.current) {
|
|
const rect = containerRef.current.getBoundingClientRect();
|
|
const scrollLeft = containerRef.current.scrollLeft;
|
|
const scrollTop = containerRef.current.scrollTop;
|
|
const mx = e.clientX - rect.left + scrollLeft;
|
|
const my = e.clientY - rect.top + scrollTop;
|
|
const targetNode = internalNodesRef.current.find((n)=>n.id !== connectingNodeId && mx >= n.x && mx <= n.x + CARD_WIDTH && my >= n.y && my <= n.y + CARD_HEIGHT);
|
|
if (targetNode) {
|
|
const exists = data.connections.some((c)=>c.source === connectingNodeId && c.target === targetNode.id);
|
|
if (!exists) {
|
|
const newConn = {
|
|
id: `conn-${Date.now()}`,
|
|
source: connectingNodeId,
|
|
target: targetNode.id
|
|
};
|
|
onUpdate({
|
|
...data,
|
|
nodes: internalNodesRef.current,
|
|
connections: [
|
|
...data.connections,
|
|
newConn
|
|
]
|
|
});
|
|
}
|
|
}
|
|
}
|
|
setIsDragging(false);
|
|
setIsPanning(false);
|
|
setConnectingNodeId(null);
|
|
};
|
|
const handleCanvasMouseDown = (e)=>{
|
|
if (!e.ctrlKey) setSelectedNodeIds(new Set());
|
|
setActiveSuggestion(null);
|
|
setActiveColorPickerId(null);
|
|
setEditingNodeId(null);
|
|
setIsPanning(true);
|
|
setPanStart({
|
|
x: e.clientX,
|
|
y: e.clientY
|
|
});
|
|
if (containerRef.current) {
|
|
setScrollStart({
|
|
x: containerRef.current.scrollLeft,
|
|
y: containerRef.current.scrollTop
|
|
});
|
|
}
|
|
};
|
|
const handleCanvasDoubleClick = (e)=>{
|
|
e.preventDefault();
|
|
const rect = containerRef.current?.getBoundingClientRect();
|
|
if (!rect) return;
|
|
const x = e.clientX - rect.left + (containerRef.current?.scrollLeft || 0) - CARD_WIDTH / 2;
|
|
const y = e.clientY - rect.top + (containerRef.current?.scrollTop || 0) - CARD_HEIGHT / 2;
|
|
pushHistory();
|
|
const newNode = {
|
|
id: `node-${Date.now()}`,
|
|
x,
|
|
y,
|
|
title: 'Nouvel événement',
|
|
description: '',
|
|
color: INITIAL_COLORS[0],
|
|
type: 'story'
|
|
};
|
|
onUpdate({
|
|
...data,
|
|
nodes: [
|
|
...internalNodesRef.current,
|
|
newNode
|
|
]
|
|
});
|
|
setSelectedNodeIds(new Set([
|
|
newNode.id
|
|
]));
|
|
setEditingNodeId(newNode.id);
|
|
};
|
|
const handleDeleteSelected = ()=>{
|
|
if (selectedNodeIds.size === 0) return;
|
|
pushHistory();
|
|
const newNodes = internalNodes.filter((n)=>!selectedNodeIds.has(n.id));
|
|
const newConnections = data.connections.filter((c)=>!selectedNodeIds.has(c.source) && !selectedNodeIds.has(c.target));
|
|
onUpdate({
|
|
nodes: newNodes,
|
|
connections: newConnections
|
|
});
|
|
setSelectedNodeIds(new Set());
|
|
};
|
|
const handleAddNodeCenter = ()=>{
|
|
pushHistory();
|
|
const scrollLeft = containerRef.current?.scrollLeft || 0;
|
|
const scrollTop = containerRef.current?.scrollTop || 0;
|
|
const clientWidth = containerRef.current?.clientWidth || 800;
|
|
const clientHeight = containerRef.current?.clientHeight || 600;
|
|
const newNode = {
|
|
id: `node-${Date.now()}`,
|
|
x: scrollLeft + clientWidth / 2 - CARD_WIDTH / 2,
|
|
y: scrollTop + clientHeight / 2 - CARD_HEIGHT / 2,
|
|
title: 'Nouveau point d\'intrigue',
|
|
description: '',
|
|
color: INITIAL_COLORS[0],
|
|
type: 'story'
|
|
};
|
|
onUpdate({
|
|
...data,
|
|
nodes: [
|
|
...internalNodesRef.current,
|
|
newNode
|
|
]
|
|
});
|
|
setSelectedNodeIds(new Set([
|
|
newNode.id
|
|
]));
|
|
setEditingNodeId(newNode.id);
|
|
};
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "h-full flex flex-col overflow-hidden bg-[#eef2ff] relative",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "h-12 bg-white border-b border-indigo-100 flex items-center justify-between px-4 z-10 shadow-sm shrink-0",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex items-center gap-2",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: handleAddNodeCenter,
|
|
className: "flex items-center gap-1.5 px-3 py-1.5 bg-indigo-600 text-white rounded-lg hover:bg-indigo-700 text-xs font-bold transition-all shadow-md shadow-indigo-100",
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$plus$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Plus$3e$__["Plus"], {
|
|
size: 14
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 616,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
" AJOUTER NŒUD"
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 615,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "w-px h-6 bg-slate-100 mx-2"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 618,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "text-[10px] uppercase font-bold text-slate-400 tracking-wider",
|
|
children: selectedNodeIds.size > 0 ? `${selectedNodeIds.size} SÉLECTIONNÉ(S)` : 'Double-cliquez sur le canvas pour créer'
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 619,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 614,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "flex items-center gap-2",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
onClick: handleDeleteSelected,
|
|
disabled: selectedNodeIds.size === 0,
|
|
className: "p-2 text-red-500 hover:bg-red-50 rounded-lg disabled:opacity-30 transition-colors",
|
|
title: "Supprimer",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$trash$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Trash2$3e$__["Trash2"], {
|
|
size: 16
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 625,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 624,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 623,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 613,
|
|
columnNumber: 13
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
ref: containerRef,
|
|
className: "flex-1 overflow-auto relative cursor-grab active:cursor-grabbing bg-[#eef2ff]",
|
|
onMouseDown: handleCanvasMouseDown,
|
|
onMouseMove: handleMouseMove,
|
|
onMouseUp: handleMouseUp,
|
|
onDoubleClick: handleCanvasDoubleClick,
|
|
style: {
|
|
backgroundImage: 'radial-gradient(#d1d5db 1px, transparent 1px)',
|
|
backgroundSize: '24px 24px'
|
|
},
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("svg", {
|
|
className: "absolute top-0 left-0 w-[4000px] h-[4000px] pointer-events-none z-0",
|
|
children: [
|
|
data.connections.map((conn)=>{
|
|
const source = internalNodes.find((n)=>n.id === conn.source);
|
|
const target = internalNodes.find((n)=>n.id === conn.target);
|
|
if (!source || !target) return null;
|
|
const startX = source.x + CARD_WIDTH / 2;
|
|
const startY = source.y + CARD_HEIGHT / 2;
|
|
const endX = target.x + CARD_WIDTH / 2;
|
|
const endY = target.y + CARD_HEIGHT / 2;
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("line", {
|
|
x1: startX,
|
|
y1: startY,
|
|
x2: endX,
|
|
y2: endY,
|
|
stroke: "#cbd5e1",
|
|
strokeWidth: "2",
|
|
markerEnd: "url(#arrowhead)"
|
|
}, conn.id, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 652,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0));
|
|
}),
|
|
connectingNodeId && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("line", {
|
|
x1: (internalNodes.find((n)=>n.id === connectingNodeId)?.x || 0) + CARD_WIDTH / 2,
|
|
y1: (internalNodes.find((n)=>n.id === connectingNodeId)?.y || 0) + CARD_HEIGHT / 2,
|
|
x2: mousePos.x,
|
|
y2: mousePos.y,
|
|
stroke: "#6366f1",
|
|
strokeWidth: "2",
|
|
strokeDasharray: "5,5",
|
|
markerEnd: "url(#arrowhead-blue)"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 656,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("defs", {
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("marker", {
|
|
id: "arrowhead",
|
|
markerWidth: "10",
|
|
markerHeight: "7",
|
|
refX: "28",
|
|
refY: "3.5",
|
|
orient: "auto",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("path", {
|
|
d: "M0,0 L0,7 L10,3.5 Z",
|
|
fill: "#cbd5e1"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 665,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 664,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("marker", {
|
|
id: "arrowhead-blue",
|
|
markerWidth: "10",
|
|
markerHeight: "7",
|
|
refX: "10",
|
|
refY: "3.5",
|
|
orient: "auto",
|
|
children: /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("path", {
|
|
d: "M0,0 L0,7 L10,3.5 Z",
|
|
fill: "#6366f1"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 668,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 667,
|
|
columnNumber: 25
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 663,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 642,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
internalNodes.map((node)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(StoryNode, {
|
|
node: node,
|
|
isSelected: selectedNodeIds.has(node.id),
|
|
isEditing: editingNodeId === node.id,
|
|
isDragging: isDragging,
|
|
activeColorPickerId: activeColorPickerId,
|
|
entities: entities,
|
|
savedColors: savedColors,
|
|
onMouseDown: handleNodeMouseDown,
|
|
onMouseUp: finishConnection,
|
|
onStartConnection: startConnection,
|
|
onUpdate: updateNode,
|
|
onSetEditing: setEditingNodeId,
|
|
onToggleColorPicker: handleToggleColorPicker,
|
|
onSaveColor: handleSaveColor,
|
|
onNavigateToEntity: onNavigateToEntity,
|
|
onInputFocus: handleInputFocus,
|
|
onInputCheckAutocomplete: handleInputWithAutocomplete,
|
|
onKeyDownInInput: handleKeyDownInInput
|
|
}, node.id, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 674,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0)))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 630,
|
|
columnNumber: 13
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
activeSuggestion && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "fixed z-50 bg-white rounded-xl shadow-2xl border border-indigo-100 w-64 max-h-48 overflow-y-auto",
|
|
style: {
|
|
left: '50%',
|
|
top: '50%',
|
|
transform: 'translate(-50%, -50%)'
|
|
},
|
|
children: [
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "px-3 py-2 bg-indigo-600 text-white text-[10px] font-black uppercase tracking-widest",
|
|
children: [
|
|
"Insérer ",
|
|
activeSuggestion.trigger === '@' ? 'Personnage' : activeSuggestion.trigger === '#' ? 'Lieu' : 'Objet'
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 700,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0)),
|
|
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "divide-y divide-slate-50",
|
|
children: activeSuggestion.filteredEntities.length > 0 ? activeSuggestion.filteredEntities.map((ent, idx)=>/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
|
|
className: `w-full text-left px-4 py-3 text-xs flex items-center gap-3 hover:bg-indigo-50 transition-colors ${idx === activeSuggestion.selectedIndex ? 'bg-indigo-50 text-indigo-700 font-bold' : 'text-slate-700'}`,
|
|
onClick: ()=>insertEntity(ent),
|
|
children: ent.name
|
|
}, ent.id, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 706,
|
|
columnNumber: 33
|
|
}, ("TURBOPACK compile-time value", void 0))) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
|
|
className: "p-4 text-xs text-slate-400 italic text-center",
|
|
children: "Aucun résultat"
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 715,
|
|
columnNumber: 29
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 703,
|
|
columnNumber: 21
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 699,
|
|
columnNumber: 17
|
|
}, ("TURBOPACK compile-time value", void 0))
|
|
]
|
|
}, void 0, true, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx",
|
|
lineNumber: 612,
|
|
columnNumber: 9
|
|
}, ("TURBOPACK compile-time value", void 0));
|
|
};
|
|
_s1(StoryWorkflow, "GlJ/7gZkBYC3Q3ryQRUN9XEyk6A=");
|
|
_c1 = StoryWorkflow;
|
|
const __TURBOPACK__default__export__ = StoryWorkflow;
|
|
var _c, _c1;
|
|
__turbopack_context__.k.register(_c, "StoryNode");
|
|
__turbopack_context__.k.register(_c1, "StoryWorkflow");
|
|
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
|
|
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
|
|
}
|
|
}),
|
|
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>WorkflowPage
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$StoryWorkflow$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/components/StoryWorkflow.tsx [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/src/providers/ProjectProvider.tsx [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/next/navigation.js [app-client] (ecmascript)");
|
|
;
|
|
var _s = __turbopack_context__.k.signature();
|
|
'use client';
|
|
;
|
|
;
|
|
;
|
|
function WorkflowPage() {
|
|
_s();
|
|
const { project, projectId, updateProject } = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"])();
|
|
const router = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"])();
|
|
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$StoryWorkflow$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
|
|
data: project.workflow || {
|
|
nodes: [],
|
|
connections: []
|
|
},
|
|
onUpdate: (workflow)=>updateProject({
|
|
workflow
|
|
}),
|
|
entities: project.entities || [],
|
|
onNavigateToEntity: ()=>router.push(`/project/${projectId}/world`)
|
|
}, void 0, false, {
|
|
fileName: "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page.tsx",
|
|
lineNumber: 12,
|
|
columnNumber: 9
|
|
}, this);
|
|
}
|
|
_s(WorkflowPage, "EW3OgC7709EYo06wA7cP5/nAUdg=", false, function() {
|
|
return [
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$providers$2f$ProjectProvider$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useProjectContext"],
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRouter"]
|
|
];
|
|
});
|
|
_c = WorkflowPage;
|
|
var _c;
|
|
__turbopack_context__.k.register(_c, "WorkflowPage");
|
|
if (typeof globalThis.$RefreshHelpers$ === 'object' && globalThis.$RefreshHelpers !== null) {
|
|
__turbopack_context__.k.registerExports(__turbopack_context__.m, globalThis.$RefreshHelpers$);
|
|
}
|
|
}),
|
|
"[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>ArrowRight
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.563.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M5 12h14",
|
|
key: "1ays0h"
|
|
}
|
|
],
|
|
[
|
|
"path",
|
|
{
|
|
d: "m12 5 7 7-7 7",
|
|
key: "xquz4c"
|
|
}
|
|
]
|
|
];
|
|
const ArrowRight = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("arrow-right", __iconNode);
|
|
;
|
|
//# sourceMappingURL=arrow-right.js.map
|
|
}),
|
|
"[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js [app-client] (ecmascript) <export default as ArrowRight>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"ArrowRight",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$arrow$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$arrow$2d$right$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/arrow-right.js [app-client] (ecmascript)");
|
|
}),
|
|
"[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>Palette
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.563.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",
|
|
key: "e79jfc"
|
|
}
|
|
],
|
|
[
|
|
"circle",
|
|
{
|
|
cx: "13.5",
|
|
cy: "6.5",
|
|
r: ".5",
|
|
fill: "currentColor",
|
|
key: "1okk4w"
|
|
}
|
|
],
|
|
[
|
|
"circle",
|
|
{
|
|
cx: "17.5",
|
|
cy: "10.5",
|
|
r: ".5",
|
|
fill: "currentColor",
|
|
key: "f64h9f"
|
|
}
|
|
],
|
|
[
|
|
"circle",
|
|
{
|
|
cx: "6.5",
|
|
cy: "12.5",
|
|
r: ".5",
|
|
fill: "currentColor",
|
|
key: "qy21gx"
|
|
}
|
|
],
|
|
[
|
|
"circle",
|
|
{
|
|
cx: "8.5",
|
|
cy: "7.5",
|
|
r: ".5",
|
|
fill: "currentColor",
|
|
key: "fotxhn"
|
|
}
|
|
]
|
|
];
|
|
const Palette = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("palette", __iconNode);
|
|
;
|
|
//# sourceMappingURL=palette.js.map
|
|
}),
|
|
"[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js [app-client] (ecmascript) <export default as Palette>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Palette",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$palette$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$palette$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/palette.js [app-client] (ecmascript)");
|
|
}),
|
|
]);
|
|
|
|
//# sourceMappingURL=Documents_00%20-%20projet_plumeia_06c48656._.js.map
|