@lv-x-software-house/x_view 1.2.6-dev.10 → 1.2.6-dev.11

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/index.js CHANGED
@@ -13343,7 +13343,6 @@ function AncestryBoard({
13343
13343
  onSave,
13344
13344
  userRole
13345
13345
  }) {
13346
- const [searchTerm, setSearchTerm] = (0, import_react29.useState)("");
13347
13346
  const [groups, setGroups] = (0, import_react29.useState)([]);
13348
13347
  const [isLoaded, setIsLoaded] = (0, import_react29.useState)(false);
13349
13348
  const [saveStatus, setSaveStatus] = (0, import_react29.useState)("idle");
@@ -13360,13 +13359,6 @@ function AncestryBoard({
13360
13359
  setIsLoaded(true);
13361
13360
  }
13362
13361
  }, [initialGroups, isLoaded]);
13363
- const nodeNamesMap = (0, import_react29.useMemo)(() => {
13364
- const map = /* @__PURE__ */ new Map();
13365
- availableNodes.forEach((n) => {
13366
- if (n == null ? void 0 : n.id) map.set(String(n.id), n.name);
13367
- });
13368
- return map;
13369
- }, [availableNodes]);
13370
13362
  const allSearchableItems = (0, import_react29.useMemo)(() => {
13371
13363
  const items = [];
13372
13364
  availableAncestries.forEach((anc) => {
@@ -13393,20 +13385,6 @@ function AncestryBoard({
13393
13385
  });
13394
13386
  return items;
13395
13387
  }, [availableAncestries, availableNodes]);
13396
- const filtered = (0, import_react29.useMemo)(() => {
13397
- const term = searchTerm.toLowerCase().trim();
13398
- return allSearchableItems.filter((item) => {
13399
- if (!term) return true;
13400
- const labelMatch = (item.searchLabel || "").toLowerCase().includes(term);
13401
- const descMatch = (item.searchDesc || "").toLowerCase().includes(term);
13402
- let parentMatch = false;
13403
- if (item.type === "ancestry") {
13404
- const parentName = nodeNamesMap.get(String(item.ancestral_node)) || "";
13405
- parentMatch = parentName.toLowerCase().includes(term);
13406
- }
13407
- return labelMatch || descMatch || parentMatch;
13408
- });
13409
- }, [allSearchableItems, searchTerm, nodeNamesMap]);
13410
13388
  const sanitizeGroups = (list) => list.map((g) => ({
13411
13389
  id: g.id,
13412
13390
  content: g.content || [],
@@ -13529,40 +13507,7 @@ function AncestryBoard({
13529
13507
  },
13530
13508
  /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiX, { size: 16 })
13531
13509
  ))),
13532
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col border-r border-white/10 w-[20%] min-w-[280px] max-w-[460px] bg-slate-900 flex-none" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "p-3 border-b border-white/5 bg-slate-900/50" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "relative group" }, /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiSearch, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500 group-focus-within:text-indigo-400 transition-colors" }), /* @__PURE__ */ import_react29.default.createElement(
13533
- "input",
13534
- {
13535
- type: "text",
13536
- placeholder: "Navegar nas ancestralidades e nodes\u2026",
13537
- className: "w-full rounded-md pl-9 pr-4 py-2 text-sm bg-slate-950 border border-white/10 text-slate-200 placeholder-slate-600 focus:outline-none focus:ring-1 focus:ring-indigo-500 transition-all",
13538
- value: searchTerm,
13539
- onChange: (e) => setSearchTerm(e.target.value),
13540
- autoFocus: true
13541
- }
13542
- ))), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-3 space-y-2" }, filtered.map((anc) => {
13543
- const parentNodeName = nodeNamesMap.get(String(anc.ancestral_node)) || "Node Desconhecido";
13544
- return /* @__PURE__ */ import_react29.default.createElement(
13545
- "div",
13546
- {
13547
- key: anc.id,
13548
- className: "group relative flex items-start gap-3 p-3 text-left rounded-lg border border-white/5 bg-slate-800/40 hover:bg-indigo-600/10 hover:border-indigo-500/30 cursor-default transition-all duration-200"
13549
- },
13550
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "mt-0.5 w-8 h-8 rounded-md grid place-content-center shrink-0 border bg-slate-800 border-white/5 group-hover:bg-indigo-500 group-hover:text-white transition-all shadow-lg" }, anc.type === "quest" ? /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiCheckSquare, { size: 14, className: "text-emerald-400 group-hover:text-white" }) : anc.type === "version" ? /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiGitBranch, { size: 14, className: "text-amber-400 group-hover:text-white" }) : anc.type === "node" ? /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiBox, { size: 14, className: "text-slate-400 group-hover:text-white" }) : /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiLayers, { size: 14, className: "text-indigo-400 group-hover:text-white" })),
13551
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex-1 min-w-0 pb-2" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ import_react29.default.createElement("h4", { className: "text-sm font-medium text-slate-200 group-hover:text-white truncate transition-colors" }, anc.searchLabel || "Sem Nome"), /* @__PURE__ */ import_react29.default.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-tighter" }, anc.type)), anc.type === "ancestry" && /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex items-center gap-1.5 mt-0.5 text-[11px] text-slate-500 group-hover:text-indigo-200/70 transition-colors" }, /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiCornerUpRight, { size: 10 }), /* @__PURE__ */ import_react29.default.createElement("span", { className: "truncate max-w-[120px]" }, parentNodeName)), anc.searchDesc && /* @__PURE__ */ import_react29.default.createElement("p", { className: "mt-1.5 text-[11px] text-slate-400 line-clamp-2 leading-relaxed opacity-80" }, anc.searchDesc)),
13552
- /* @__PURE__ */ import_react29.default.createElement(
13553
- "button",
13554
- {
13555
- onClick: (e) => {
13556
- e.stopPropagation();
13557
- if (onSelect) onSelect(anc);
13558
- },
13559
- className: "absolute right-2 bottom-2 opacity-0 group-hover:opacity-100 transition-all duration-300 transform translate-y-2 group-hover:translate-y-0 z-10",
13560
- title: "Focar no cen\xE1rio"
13561
- },
13562
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "bg-indigo-500 text-white p-2 rounded-full shadow-lg hover:bg-indigo-400 hover:scale-110 transition-all" }, /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiPlay, { size: 14, className: "ml-0.5" }))
13563
- )
13564
- );
13565
- }))), /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col flex-1 bg-slate-950/30" }, /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiLayers, { size: 24, className: "opacity-20" }), /* @__PURE__ */ import_react29.default.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ import_react29.default.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ import_react29.default.createElement(
13510
+ /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar bg-slate-950/30 p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ import_react29.default.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ import_react29.default.createElement(import_fi23.FiLayers, { size: 24, className: "opacity-20" }), /* @__PURE__ */ import_react29.default.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ import_react29.default.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ import_react29.default.createElement(import_react29.default.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ import_react29.default.createElement(
13566
13511
  GroupItem,
13567
13512
  {
13568
13513
  key: group.id,
@@ -13577,8 +13522,8 @@ function AncestryBoard({
13577
13522
  onMentionClick: handleMentionClick,
13578
13523
  canEdit
13579
13524
  }
13580
- ))))),
13581
- /* @__PURE__ */ import_react29.default.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-between flex-shrink-0" }, /* @__PURE__ */ import_react29.default.createElement("span", null, filtered.length, " itens encontrados"), /* @__PURE__ */ import_react29.default.createElement("span", null, groups.length, " grupos raiz"))
13525
+ ))),
13526
+ /* @__PURE__ */ import_react29.default.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ import_react29.default.createElement("span", null, groups.length, " grupos raiz"))
13582
13527
  )
13583
13528
  );
13584
13529
  }
package/dist/index.mjs CHANGED
@@ -13389,7 +13389,6 @@ function AncestryBoard({
13389
13389
  onSave,
13390
13390
  userRole
13391
13391
  }) {
13392
- const [searchTerm, setSearchTerm] = useState27("");
13393
13392
  const [groups, setGroups] = useState27([]);
13394
13393
  const [isLoaded, setIsLoaded] = useState27(false);
13395
13394
  const [saveStatus, setSaveStatus] = useState27("idle");
@@ -13406,13 +13405,6 @@ function AncestryBoard({
13406
13405
  setIsLoaded(true);
13407
13406
  }
13408
13407
  }, [initialGroups, isLoaded]);
13409
- const nodeNamesMap = useMemo12(() => {
13410
- const map = /* @__PURE__ */ new Map();
13411
- availableNodes.forEach((n) => {
13412
- if (n == null ? void 0 : n.id) map.set(String(n.id), n.name);
13413
- });
13414
- return map;
13415
- }, [availableNodes]);
13416
13408
  const allSearchableItems = useMemo12(() => {
13417
13409
  const items = [];
13418
13410
  availableAncestries.forEach((anc) => {
@@ -13439,20 +13431,6 @@ function AncestryBoard({
13439
13431
  });
13440
13432
  return items;
13441
13433
  }, [availableAncestries, availableNodes]);
13442
- const filtered = useMemo12(() => {
13443
- const term = searchTerm.toLowerCase().trim();
13444
- return allSearchableItems.filter((item) => {
13445
- if (!term) return true;
13446
- const labelMatch = (item.searchLabel || "").toLowerCase().includes(term);
13447
- const descMatch = (item.searchDesc || "").toLowerCase().includes(term);
13448
- let parentMatch = false;
13449
- if (item.type === "ancestry") {
13450
- const parentName = nodeNamesMap.get(String(item.ancestral_node)) || "";
13451
- parentMatch = parentName.toLowerCase().includes(term);
13452
- }
13453
- return labelMatch || descMatch || parentMatch;
13454
- });
13455
- }, [allSearchableItems, searchTerm, nodeNamesMap]);
13456
13434
  const sanitizeGroups = (list) => list.map((g) => ({
13457
13435
  id: g.id,
13458
13436
  content: g.content || [],
@@ -13575,40 +13553,7 @@ function AncestryBoard({
13575
13553
  },
13576
13554
  /* @__PURE__ */ React28.createElement(FiX8, { size: 16 })
13577
13555
  ))),
13578
- /* @__PURE__ */ React28.createElement("div", { className: "flex flex-1 overflow-hidden" }, /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col border-r border-white/10 w-[20%] min-w-[280px] max-w-[460px] bg-slate-900 flex-none" }, /* @__PURE__ */ React28.createElement("div", { className: "p-3 border-b border-white/5 bg-slate-900/50" }, /* @__PURE__ */ React28.createElement("div", { className: "relative group" }, /* @__PURE__ */ React28.createElement(FiSearch8, { className: "absolute left-3 top-1/2 -translate-y-1/2 text-slate-500 group-focus-within:text-indigo-400 transition-colors" }), /* @__PURE__ */ React28.createElement(
13579
- "input",
13580
- {
13581
- type: "text",
13582
- placeholder: "Navegar nas ancestralidades e nodes\u2026",
13583
- className: "w-full rounded-md pl-9 pr-4 py-2 text-sm bg-slate-950 border border-white/10 text-slate-200 placeholder-slate-600 focus:outline-none focus:ring-1 focus:ring-indigo-500 transition-all",
13584
- value: searchTerm,
13585
- onChange: (e) => setSearchTerm(e.target.value),
13586
- autoFocus: true
13587
- }
13588
- ))), /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-3 space-y-2" }, filtered.map((anc) => {
13589
- const parentNodeName = nodeNamesMap.get(String(anc.ancestral_node)) || "Node Desconhecido";
13590
- return /* @__PURE__ */ React28.createElement(
13591
- "div",
13592
- {
13593
- key: anc.id,
13594
- className: "group relative flex items-start gap-3 p-3 text-left rounded-lg border border-white/5 bg-slate-800/40 hover:bg-indigo-600/10 hover:border-indigo-500/30 cursor-default transition-all duration-200"
13595
- },
13596
- /* @__PURE__ */ React28.createElement("div", { className: "mt-0.5 w-8 h-8 rounded-md grid place-content-center shrink-0 border bg-slate-800 border-white/5 group-hover:bg-indigo-500 group-hover:text-white transition-all shadow-lg" }, anc.type === "quest" ? /* @__PURE__ */ React28.createElement(FiCheckSquare4, { size: 14, className: "text-emerald-400 group-hover:text-white" }) : anc.type === "version" ? /* @__PURE__ */ React28.createElement(FiGitBranch4, { size: 14, className: "text-amber-400 group-hover:text-white" }) : anc.type === "node" ? /* @__PURE__ */ React28.createElement(FiBox2, { size: 14, className: "text-slate-400 group-hover:text-white" }) : /* @__PURE__ */ React28.createElement(FiLayers7, { size: 14, className: "text-indigo-400 group-hover:text-white" })),
13597
- /* @__PURE__ */ React28.createElement("div", { className: "flex-1 min-w-0 pb-2" }, /* @__PURE__ */ React28.createElement("div", { className: "flex items-center justify-between gap-2" }, /* @__PURE__ */ React28.createElement("h4", { className: "text-sm font-medium text-slate-200 group-hover:text-white truncate transition-colors" }, anc.searchLabel || "Sem Nome"), /* @__PURE__ */ React28.createElement("span", { className: "text-[9px] px-1.5 py-0.5 rounded-full bg-white/5 text-slate-500 border border-white/5 uppercase tracking-tighter" }, anc.type)), anc.type === "ancestry" && /* @__PURE__ */ React28.createElement("div", { className: "flex items-center gap-1.5 mt-0.5 text-[11px] text-slate-500 group-hover:text-indigo-200/70 transition-colors" }, /* @__PURE__ */ React28.createElement(FiCornerUpRight4, { size: 10 }), /* @__PURE__ */ React28.createElement("span", { className: "truncate max-w-[120px]" }, parentNodeName)), anc.searchDesc && /* @__PURE__ */ React28.createElement("p", { className: "mt-1.5 text-[11px] text-slate-400 line-clamp-2 leading-relaxed opacity-80" }, anc.searchDesc)),
13598
- /* @__PURE__ */ React28.createElement(
13599
- "button",
13600
- {
13601
- onClick: (e) => {
13602
- e.stopPropagation();
13603
- if (onSelect) onSelect(anc);
13604
- },
13605
- className: "absolute right-2 bottom-2 opacity-0 group-hover:opacity-100 transition-all duration-300 transform translate-y-2 group-hover:translate-y-0 z-10",
13606
- title: "Focar no cen\xE1rio"
13607
- },
13608
- /* @__PURE__ */ React28.createElement("div", { className: "bg-indigo-500 text-white p-2 rounded-full shadow-lg hover:bg-indigo-400 hover:scale-110 transition-all" }, /* @__PURE__ */ React28.createElement(FiPlay, { size: 14, className: "ml-0.5" }))
13609
- )
13610
- );
13611
- }))), /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col flex-1 bg-slate-950/30" }, /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ React28.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React28.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ React28.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ React28.createElement(
13556
+ /* @__PURE__ */ React28.createElement("div", { className: "flex-1 overflow-y-auto custom-scrollbar bg-slate-950/30 p-6 space-y-4" }, groups.length === 0 ? /* @__PURE__ */ React28.createElement("div", { className: "flex flex-col items-center justify-center h-full text-slate-500 gap-3 border-2 border-dashed border-white/5 rounded-xl m-4 bg-slate-900/20" }, /* @__PURE__ */ React28.createElement(FiLayers7, { size: 24, className: "opacity-20" }), /* @__PURE__ */ React28.createElement("p", { className: "text-xs text-center px-4" }, canEdit ? /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum grupo criado.", /* @__PURE__ */ React28.createElement("br", null), 'Use o bot\xE3o "Novo Grupo" acima.') : /* @__PURE__ */ React28.createElement(React28.Fragment, null, "Nenhum grupo dispon\xEDvel para visualiza\xE7\xE3o."))) : groups.map((group, index) => /* @__PURE__ */ React28.createElement(
13612
13557
  GroupItem,
13613
13558
  {
13614
13559
  key: group.id,
@@ -13623,8 +13568,8 @@ function AncestryBoard({
13623
13568
  onMentionClick: handleMentionClick,
13624
13569
  canEdit
13625
13570
  }
13626
- ))))),
13627
- /* @__PURE__ */ React28.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-between flex-shrink-0" }, /* @__PURE__ */ React28.createElement("span", null, filtered.length, " itens encontrados"), /* @__PURE__ */ React28.createElement("span", null, groups.length, " grupos raiz"))
13571
+ ))),
13572
+ /* @__PURE__ */ React28.createElement("div", { className: "px-5 py-2 border-t border-white/10 bg-slate-950/50 text-xs text-slate-500 flex justify-end flex-shrink-0" }, /* @__PURE__ */ React28.createElement("span", null, groups.length, " grupos raiz"))
13628
13573
  )
13629
13574
  );
13630
13575
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lv-x-software-house/x_view",
3
- "version": "1.2.6-dev.10",
3
+ "version": "1.2.6-dev.11",
4
4
  "description": "Pacote privado contendo os componentes e lógica de renderização 3D do X View.",
5
5
  "author": "iv.x - Engenharia de Software - ivxsoftwarehouse@gmail.com",
6
6
  "license": "UNLICENSED",