@umodeapporg/ui 0.23.0 → 0.23.1
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/assets/umode-ui.css +0 -105
- package/dist/components/Form/ControlledSelect.js +5 -3
- package/dist/components/Form/ControlledSelect.js.map +1 -1
- package/dist/locales/en/ui.json.d.ts +0 -67
- package/dist/locales/en/ui.json.js +0 -3
- package/dist/locales/en/ui.json.js.map +1 -1
- package/dist/locales/index.d.ts +0 -134
- package/dist/locales/pt/ui.json.d.ts +0 -67
- package/dist/locales/pt/ui.json.js +0 -3
- package/dist/locales/pt/ui.json.js.map +1 -1
- package/package.json +1 -10
- package/dist/components/UI/Flow/FlowBlockNode.d.ts +0 -35
- package/dist/components/UI/Flow/FlowBlockNode.js +0 -84
- package/dist/components/UI/Flow/FlowBlockNode.js.map +0 -1
- package/dist/components/UI/Flow/FlowCanvas.d.ts +0 -22
- package/dist/components/UI/Flow/FlowCanvas.js +0 -263
- package/dist/components/UI/Flow/FlowCanvas.js.map +0 -1
- package/dist/components/UI/Flow/FlowConnectionEdge.d.ts +0 -10
- package/dist/components/UI/Flow/FlowConnectionEdge.js +0 -54
- package/dist/components/UI/Flow/FlowConnectionEdge.js.map +0 -1
- package/dist/components/UI/Flow/FlowEditorProvider.d.ts +0 -17
- package/dist/components/UI/Flow/FlowEditorProvider.js +0 -27
- package/dist/components/UI/Flow/FlowEditorProvider.js.map +0 -1
- package/dist/components/UI/Flow/FlowInspector.d.ts +0 -11
- package/dist/components/UI/Flow/FlowInspector.js +0 -124
- package/dist/components/UI/Flow/FlowInspector.js.map +0 -1
- package/dist/components/UI/Flow/FlowIssueList.d.ts +0 -8
- package/dist/components/UI/Flow/FlowIssueList.js +0 -55
- package/dist/components/UI/Flow/FlowIssueList.js.map +0 -1
- package/dist/components/UI/Flow/FlowLaneMap.d.ts +0 -30
- package/dist/components/UI/Flow/FlowLaneMap.js +0 -206
- package/dist/components/UI/Flow/FlowLaneMap.js.map +0 -1
- package/dist/components/UI/Flow/FlowNodeShell.d.ts +0 -20
- package/dist/components/UI/Flow/FlowNodeShell.js +0 -81
- package/dist/components/UI/Flow/FlowNodeShell.js.map +0 -1
- package/dist/components/UI/Flow/FlowPalette.d.ts +0 -7
- package/dist/components/UI/Flow/FlowPalette.js +0 -90
- package/dist/components/UI/Flow/FlowPalette.js.map +0 -1
- package/dist/components/UI/Flow/FlowResizablePanel.d.ts +0 -20
- package/dist/components/UI/Flow/FlowResizablePanel.js +0 -117
- package/dist/components/UI/Flow/FlowResizablePanel.js.map +0 -1
- package/dist/components/UI/Flow/FlowZoomControls.d.ts +0 -12
- package/dist/components/UI/Flow/FlowZoomControls.js +0 -53
- package/dist/components/UI/Flow/FlowZoomControls.js.map +0 -1
- package/dist/components/UI/Flow/flowBlockRegistry.d.ts +0 -12
- package/dist/components/UI/Flow/flowBlockRegistry.js +0 -15
- package/dist/components/UI/Flow/flowBlockRegistry.js.map +0 -1
- package/dist/components/UI/Flow/flowConstants.d.ts +0 -2
- package/dist/components/UI/Flow/flowConstants.js +0 -5
- package/dist/components/UI/Flow/flowConstants.js.map +0 -1
- package/dist/components/UI/Flow/flowEditorStore.d.ts +0 -44
- package/dist/components/UI/Flow/flowEditorStore.js +0 -258
- package/dist/components/UI/Flow/flowEditorStore.js.map +0 -1
- package/dist/components/UI/Flow/flowGraph.d.ts +0 -32
- package/dist/components/UI/Flow/flowGraph.js +0 -156
- package/dist/components/UI/Flow/flowGraph.js.map +0 -1
- package/dist/components/UI/Flow/flowTypes.d.ts +0 -74
- package/dist/components/UI/Flow/flowTypes.js +0 -2
- package/dist/components/UI/Flow/flowTypes.js.map +0 -1
- package/dist/components/UI/Flow/index.d.ts +0 -14
- package/dist/components/UI/Flow/index.js +0 -43
- package/dist/components/UI/Flow/index.js.map +0 -1
- package/dist/components/UI/Flow/useFlowLabels.d.ts +0 -10
- package/dist/components/UI/Flow/useFlowLabels.js +0 -51
- package/dist/components/UI/Flow/useFlowLabels.js.map +0 -1
package/dist/locales/index.d.ts
CHANGED
|
@@ -218,73 +218,6 @@ export declare const uiLocales: {
|
|
|
218
218
|
keepEditing: string;
|
|
219
219
|
discard: string;
|
|
220
220
|
};
|
|
221
|
-
flow: {
|
|
222
|
-
canvas: string;
|
|
223
|
-
resizePanel: string;
|
|
224
|
-
ports: {
|
|
225
|
-
next: string;
|
|
226
|
-
true: string;
|
|
227
|
-
false: string;
|
|
228
|
-
error: string;
|
|
229
|
-
};
|
|
230
|
-
categories: {
|
|
231
|
-
trigger: string;
|
|
232
|
-
condition: string;
|
|
233
|
-
action: string;
|
|
234
|
-
};
|
|
235
|
-
palette: {
|
|
236
|
-
title: string;
|
|
237
|
-
search: string;
|
|
238
|
-
empty: string;
|
|
239
|
-
limitReached: string;
|
|
240
|
-
};
|
|
241
|
-
inspector: {
|
|
242
|
-
title: string;
|
|
243
|
-
empty: string;
|
|
244
|
-
label: string;
|
|
245
|
-
delete: string;
|
|
246
|
-
duplicate: string;
|
|
247
|
-
unknownBlock: string;
|
|
248
|
-
close: string;
|
|
249
|
-
};
|
|
250
|
-
issues: {
|
|
251
|
-
title: string;
|
|
252
|
-
none: string;
|
|
253
|
-
missingTrigger: string;
|
|
254
|
-
multipleTriggers: string;
|
|
255
|
-
unknownBlock: string;
|
|
256
|
-
unreachableNode: string;
|
|
257
|
-
multipleInputs: string;
|
|
258
|
-
portFanOut: string;
|
|
259
|
-
cycle: string;
|
|
260
|
-
missingTrueBranch: string;
|
|
261
|
-
};
|
|
262
|
-
run: {
|
|
263
|
-
passed: string;
|
|
264
|
-
failed: string;
|
|
265
|
-
skipped: string;
|
|
266
|
-
wouldRun: string;
|
|
267
|
-
error: string;
|
|
268
|
-
blocked: string;
|
|
269
|
-
};
|
|
270
|
-
controls: {
|
|
271
|
-
zoomIn: string;
|
|
272
|
-
zoomOut: string;
|
|
273
|
-
fitView: string;
|
|
274
|
-
undo: string;
|
|
275
|
-
redo: string;
|
|
276
|
-
layout: string;
|
|
277
|
-
};
|
|
278
|
-
node: {
|
|
279
|
-
disabled: string;
|
|
280
|
-
addBlock: string;
|
|
281
|
-
issueCount_one: string;
|
|
282
|
-
issueCount_other: string;
|
|
283
|
-
};
|
|
284
|
-
laneMap: {
|
|
285
|
-
label: string;
|
|
286
|
-
};
|
|
287
|
-
};
|
|
288
221
|
followUp: {
|
|
289
222
|
messages: string;
|
|
290
223
|
chat: {
|
|
@@ -839,73 +772,6 @@ export declare const uiLocales: {
|
|
|
839
772
|
keepEditing: string;
|
|
840
773
|
discard: string;
|
|
841
774
|
};
|
|
842
|
-
flow: {
|
|
843
|
-
canvas: string;
|
|
844
|
-
resizePanel: string;
|
|
845
|
-
ports: {
|
|
846
|
-
next: string;
|
|
847
|
-
true: string;
|
|
848
|
-
false: string;
|
|
849
|
-
error: string;
|
|
850
|
-
};
|
|
851
|
-
categories: {
|
|
852
|
-
trigger: string;
|
|
853
|
-
condition: string;
|
|
854
|
-
action: string;
|
|
855
|
-
};
|
|
856
|
-
palette: {
|
|
857
|
-
title: string;
|
|
858
|
-
search: string;
|
|
859
|
-
empty: string;
|
|
860
|
-
limitReached: string;
|
|
861
|
-
};
|
|
862
|
-
inspector: {
|
|
863
|
-
title: string;
|
|
864
|
-
empty: string;
|
|
865
|
-
label: string;
|
|
866
|
-
delete: string;
|
|
867
|
-
duplicate: string;
|
|
868
|
-
unknownBlock: string;
|
|
869
|
-
close: string;
|
|
870
|
-
};
|
|
871
|
-
issues: {
|
|
872
|
-
title: string;
|
|
873
|
-
none: string;
|
|
874
|
-
missingTrigger: string;
|
|
875
|
-
multipleTriggers: string;
|
|
876
|
-
unknownBlock: string;
|
|
877
|
-
unreachableNode: string;
|
|
878
|
-
multipleInputs: string;
|
|
879
|
-
portFanOut: string;
|
|
880
|
-
cycle: string;
|
|
881
|
-
missingTrueBranch: string;
|
|
882
|
-
};
|
|
883
|
-
run: {
|
|
884
|
-
passed: string;
|
|
885
|
-
failed: string;
|
|
886
|
-
skipped: string;
|
|
887
|
-
wouldRun: string;
|
|
888
|
-
error: string;
|
|
889
|
-
blocked: string;
|
|
890
|
-
};
|
|
891
|
-
controls: {
|
|
892
|
-
zoomIn: string;
|
|
893
|
-
zoomOut: string;
|
|
894
|
-
fitView: string;
|
|
895
|
-
undo: string;
|
|
896
|
-
redo: string;
|
|
897
|
-
layout: string;
|
|
898
|
-
};
|
|
899
|
-
node: {
|
|
900
|
-
disabled: string;
|
|
901
|
-
addBlock: string;
|
|
902
|
-
issueCount_one: string;
|
|
903
|
-
issueCount_other: string;
|
|
904
|
-
};
|
|
905
|
-
laneMap: {
|
|
906
|
-
label: string;
|
|
907
|
-
};
|
|
908
|
-
};
|
|
909
775
|
followUp: {
|
|
910
776
|
messages: string;
|
|
911
777
|
chat: {
|
|
@@ -216,73 +216,6 @@ declare const _default: {
|
|
|
216
216
|
"keepEditing": "Continuar editando",
|
|
217
217
|
"discard": "Descartar"
|
|
218
218
|
},
|
|
219
|
-
"flow": {
|
|
220
|
-
"canvas": "Editor de fluxo",
|
|
221
|
-
"resizePanel": "Arraste para ajustar a largura. Clique duplo restaura",
|
|
222
|
-
"ports": {
|
|
223
|
-
"next": "Próximo",
|
|
224
|
-
"true": "Sim",
|
|
225
|
-
"false": "Não",
|
|
226
|
-
"error": "Erro"
|
|
227
|
-
},
|
|
228
|
-
"categories": {
|
|
229
|
-
"trigger": "Gatilhos",
|
|
230
|
-
"condition": "Condições",
|
|
231
|
-
"action": "Ações"
|
|
232
|
-
},
|
|
233
|
-
"palette": {
|
|
234
|
-
"title": "Blocos",
|
|
235
|
-
"search": "Buscar bloco",
|
|
236
|
-
"empty": "Nenhum bloco encontrado",
|
|
237
|
-
"limitReached": "Este fluxo já tem o máximo deste bloco"
|
|
238
|
-
},
|
|
239
|
-
"inspector": {
|
|
240
|
-
"title": "Configuração do bloco",
|
|
241
|
-
"empty": "Selecione um bloco para configurar",
|
|
242
|
-
"label": "Nome do bloco",
|
|
243
|
-
"delete": "Excluir bloco",
|
|
244
|
-
"duplicate": "Duplicar bloco",
|
|
245
|
-
"unknownBlock": "Este tipo de bloco não existe mais",
|
|
246
|
-
"close": "Fechar"
|
|
247
|
-
},
|
|
248
|
-
"issues": {
|
|
249
|
-
"title": "Pendências",
|
|
250
|
-
"none": "Nenhuma pendência",
|
|
251
|
-
"missingTrigger": "O fluxo precisa de um gatilho",
|
|
252
|
-
"multipleTriggers": "O fluxo só pode ter um gatilho",
|
|
253
|
-
"unknownBlock": "Bloco de um tipo que não existe mais",
|
|
254
|
-
"unreachableNode": "Bloco solto: nenhum caminho do gatilho chega até ele",
|
|
255
|
-
"multipleInputs": "Bloco com mais de uma entrada",
|
|
256
|
-
"portFanOut": "Uma saída só pode ligar a um bloco",
|
|
257
|
-
"cycle": "Os blocos formam um ciclo",
|
|
258
|
-
"missingTrueBranch": "A condição não tem o caminho do sim"
|
|
259
|
-
},
|
|
260
|
-
"run": {
|
|
261
|
-
"passed": "Passou",
|
|
262
|
-
"failed": "Não passou",
|
|
263
|
-
"skipped": "Pulado",
|
|
264
|
-
"wouldRun": "Executaria",
|
|
265
|
-
"error": "Erro",
|
|
266
|
-
"blocked": "Bloqueado"
|
|
267
|
-
},
|
|
268
|
-
"controls": {
|
|
269
|
-
"zoomIn": "Aproximar",
|
|
270
|
-
"zoomOut": "Afastar",
|
|
271
|
-
"fitView": "Enquadrar",
|
|
272
|
-
"undo": "Desfazer",
|
|
273
|
-
"redo": "Refazer",
|
|
274
|
-
"layout": "Organizar blocos"
|
|
275
|
-
},
|
|
276
|
-
"node": {
|
|
277
|
-
"disabled": "Desativado",
|
|
278
|
-
"addBlock": "Adicionar o próximo bloco",
|
|
279
|
-
"issueCount_one": "{{count}} pendência",
|
|
280
|
-
"issueCount_other": "{{count}} pendências"
|
|
281
|
-
},
|
|
282
|
-
"laneMap": {
|
|
283
|
-
"label": "Mapa do fluxo"
|
|
284
|
-
}
|
|
285
|
-
},
|
|
286
219
|
"followUp": {
|
|
287
220
|
"messages": "Mensagens",
|
|
288
221
|
"chat": {
|
|
@@ -12,7 +12,6 @@ const detailsTable = { "size": "Tam", "quantity": "Qtd" };
|
|
|
12
12
|
const errorPage = { "message": "Esta tela não conseguiu carregar", "headline": "Algo inesperado aconteceu ao montar a página. Atualizar costuma resolver. Se acontecer de novo, fale com o suporte contando o que você estava fazendo.", "backToStart": "Voltar para o início" };
|
|
13
13
|
const filters = { "activeFilters": "Filtros aplicados", "appliedCount_one": "{{count}} filtro aplicado", "appliedCount_other": "{{count}} filtros aplicados", "clearAll": "Limpar tudo", "noFields": "Nenhum filtro disponível para esta listagem.", "noOptions": "Nenhuma opção encontrada.", "optionsError": "Não foi possível carregar as opções de {{field}}.", "rangeMax": "Máximo", "rangeMin": "Mínimo", "rangeSeparator": "até", "searchOptions": "Buscar opções" };
|
|
14
14
|
const filtersDrawer = { "selectedFilters": "Filtros Selecionados:", "pendingChanges": "Alterações pendentes", "discardChangesTitle": "Descartar alterações?", "discardChangesMessage": "Você tem alterações de filtro não aplicadas. Deseja descartá-las?", "keepEditing": "Continuar editando", "discard": "Descartar" };
|
|
15
|
-
const flow = { "canvas": "Editor de fluxo", "resizePanel": "Arraste para ajustar a largura. Clique duplo restaura", "ports": { "next": "Próximo", "true": "Sim", "false": "Não", "error": "Erro" }, "categories": { "trigger": "Gatilhos", "condition": "Condições", "action": "Ações" }, "palette": { "title": "Blocos", "search": "Buscar bloco", "empty": "Nenhum bloco encontrado", "limitReached": "Este fluxo já tem o máximo deste bloco" }, "inspector": { "title": "Configuração do bloco", "empty": "Selecione um bloco para configurar", "label": "Nome do bloco", "delete": "Excluir bloco", "duplicate": "Duplicar bloco", "unknownBlock": "Este tipo de bloco não existe mais", "close": "Fechar" }, "issues": { "title": "Pendências", "none": "Nenhuma pendência", "missingTrigger": "O fluxo precisa de um gatilho", "multipleTriggers": "O fluxo só pode ter um gatilho", "unknownBlock": "Bloco de um tipo que não existe mais", "unreachableNode": "Bloco solto: nenhum caminho do gatilho chega até ele", "multipleInputs": "Bloco com mais de uma entrada", "portFanOut": "Uma saída só pode ligar a um bloco", "cycle": "Os blocos formam um ciclo", "missingTrueBranch": "A condição não tem o caminho do sim" }, "run": { "passed": "Passou", "failed": "Não passou", "skipped": "Pulado", "wouldRun": "Executaria", "error": "Erro", "blocked": "Bloqueado" }, "controls": { "zoomIn": "Aproximar", "zoomOut": "Afastar", "fitView": "Enquadrar", "undo": "Desfazer", "redo": "Refazer", "layout": "Organizar blocos" }, "node": { "disabled": "Desativado", "addBlock": "Adicionar o próximo bloco", "issueCount_one": "{{count}} pendência", "issueCount_other": "{{count}} pendências" }, "laneMap": { "label": "Mapa do fluxo" } };
|
|
16
15
|
const followUp = { "messages": "Mensagens", "chat": { "loadingMessages": "Carregando mensagens", "placeholder": "Escrever mensagem...", "invalidMessage": "Por favor, insira uma mensagem válida", "noMessagesYet": "Nenhuma mensagem por enquanto", "startConversation": "Inicie uma conversa adicionando a primeira mensagem", "loadError": "Não foi possível carregar as mensagens", "sendFailed": "Não foi possível enviar a mensagem. Tente novamente.", "sendFailedInline": "Falha no envio", "resend": "Reenviar", "discard": "Descartar", "today": "Hoje", "yesterday": "Ontem", "typingOne": "{{name}} está digitando...", "typingMany": "{{count}} pessoas estão digitando...", "someone": "Alguém", "you": "Você", "newMessages": "Novas mensagens", "backToLatest": "Voltar para as recentes", "deletedMessage": "Mensagem apagada", "edited": "editada", "readBy": "Lida por {{names}}", "copied": "Mensagem copiada", "replyingTo": "Respondendo a {{name}}", "attachmentFallback": "Anexo", "editTitle": "Editar mensagem", "deleteTitle": "Apagar mensagem?", "deleteSubtitle": "A mensagem será marcada como apagada para todos os participantes", "sendHint": "Enter envia, Shift+Enter quebra a linha", "formatting": "Formatação" }, "actions": { "reply": "Responder", "copy": "Copiar texto", "edit": "Editar", "delete": "Apagar" }, "attachments": { "attach": "Anexar", "pickFile": "Arquivo", "pickImage": "Imagem", "takePhoto": "Tirar foto", "dropHere": "Solte os arquivos para anexar", "tooMany": "Limite de {{max}} anexos por mensagem", "tooLarge": "O arquivo {{name}} passa do limite de 50 MB", "uploadFailed": "Falha no upload", "uploading": "Enviando anexos...", "imagePreview": "Visualizar imagem", "showTranscript": "Ver transcrição", "hideTranscript": "Ocultar transcrição" }, "voice": { "record": "Gravar áudio", "recording": "Gravando", "stop": "Concluir gravação", "cancel": "Cancelar gravação", "rerecord": "Regravar", "attach": "Adicionar ao envio", "discard": "Descartar", "transcriptLabel": "Transcrição", "transcriptPlaceholder": "A transcrição da fala aparece aqui e pode ser editada" }, "camera": { "title": "Tirar foto", "unavailable": "Câmera indisponível", "unavailableHint": "Verifique a permissão de câmera do navegador", "switch": "Alternar câmera", "capture": "Capturar foto" }, "search": { "open": "Buscar na conversa", "placeholder": "Buscar mensagens", "noResults": "Nenhuma mensagem encontrada", "error": "Não foi possível buscar as mensagens" } };
|
|
17
16
|
const generatedByAI = { "tooltip": "Gerado por IA" };
|
|
18
17
|
const imageAiAdjust = { "action": "Ajustar com IA", "title": "Ajustar imagem com IA", "subtitle": "Descreva o ajuste. A IA altera só o que você pedir e preserva o resto da imagem.", "original": "Original", "result": "Resultado", "resultHint": "Descreva o ajuste e clique em Gerar para ver o resultado aqui.", "promptLabel": "Ajuste desejado", "promptPlaceholder": "Ex.: remover o fundo e deixar branco, tirar os vincos da manga, clarear a iluminação", "generate": "Gerar", "generating": "Gerando a imagem...", "tryAgain": "Gerar outra", "useResult": "Usar esta imagem", "errorGenerate": "Não foi possível ajustar a imagem com IA", "errorSave": "Não foi possível salvar a imagem ajustada", "errorRefused": "A IA não conseguiu fazer este ajuste: {{reason}}", "mask": { "start": "Marcar a área", "stop": "Usar a imagem toda", "hint": "Pinte a área que a IA pode alterar. O resto da imagem é mantido." }, "verification": { "changedMoreThanRequested": "A IA mudou mais do que o pedido. Confira as áreas fora do ajuste antes de usar.", "colorMismatch": "A cor da peça ({{dominant}}) ficou diferente da cor pedida ({{target}})." } };
|
|
@@ -51,7 +50,6 @@ const pt = {
|
|
|
51
50
|
errorPage,
|
|
52
51
|
filters,
|
|
53
52
|
filtersDrawer,
|
|
54
|
-
flow,
|
|
55
53
|
followUp,
|
|
56
54
|
generatedByAI,
|
|
57
55
|
imageAiAdjust,
|
|
@@ -92,7 +90,6 @@ export {
|
|
|
92
90
|
errorPage,
|
|
93
91
|
filters,
|
|
94
92
|
filtersDrawer,
|
|
95
|
-
flow,
|
|
96
93
|
followUp,
|
|
97
94
|
generatedByAI,
|
|
98
95
|
imageAiAdjust,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umodeapporg/ui",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.1",
|
|
4
4
|
"license": "UNLICENSED",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": [
|
|
@@ -50,10 +50,6 @@
|
|
|
50
50
|
"types": "./dist/components/UI/DataTable/index.d.ts",
|
|
51
51
|
"import": "./dist/components/UI/DataTable/index.js"
|
|
52
52
|
},
|
|
53
|
-
"./components/UI/Flow": {
|
|
54
|
-
"types": "./dist/components/UI/Flow/index.d.ts",
|
|
55
|
-
"import": "./dist/components/UI/Flow/index.js"
|
|
56
|
-
},
|
|
57
53
|
"./components/UI/ImageMaskPainter": {
|
|
58
54
|
"types": "./dist/components/UI/ImageMaskPainter/index.d.ts",
|
|
59
55
|
"import": "./dist/components/UI/ImageMaskPainter/index.js"
|
|
@@ -109,7 +105,6 @@
|
|
|
109
105
|
"@dnd-kit/sortable": "^10.0.0",
|
|
110
106
|
"@dnd-kit/utilities": "^3.2.2",
|
|
111
107
|
"@tanstack/react-table": "^8.21.3",
|
|
112
|
-
"@xyflow/react": "^12.11.2",
|
|
113
108
|
"apexcharts": ">=3.52.0 <4",
|
|
114
109
|
"date-fns": "^4.0.0",
|
|
115
110
|
"i18next": ">=23",
|
|
@@ -142,9 +137,6 @@
|
|
|
142
137
|
"@tanstack/react-table": {
|
|
143
138
|
"optional": true
|
|
144
139
|
},
|
|
145
|
-
"@xyflow/react": {
|
|
146
|
-
"optional": true
|
|
147
|
-
},
|
|
148
140
|
"apexcharts": {
|
|
149
141
|
"optional": true
|
|
150
142
|
},
|
|
@@ -201,7 +193,6 @@
|
|
|
201
193
|
"@typescript-eslint/eslint-plugin": "^8.42.0",
|
|
202
194
|
"@typescript-eslint/parser": "^8.42.0",
|
|
203
195
|
"@vitejs/plugin-react-swc": "^3.5.0",
|
|
204
|
-
"@xyflow/react": "^12.12.0",
|
|
205
196
|
"apexcharts": "3.52.0",
|
|
206
197
|
"autoprefixer": "^10.4.19",
|
|
207
198
|
"conventional-changelog-conventionalcommits": "^8.0.0",
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { SymbolCodepoints } from '../MaterialSymbol';
|
|
3
|
-
import { Node, NodeProps } from '@xyflow/react';
|
|
4
|
-
import { TFlowIssueSeverity, TFlowPortId, TFlowRunStepStatus } from './flowTypes';
|
|
5
|
-
export declare const FLOW_INPUT_HANDLE_ID = "in";
|
|
6
|
-
export interface IFlowAddableBlock {
|
|
7
|
-
type: string;
|
|
8
|
-
label: string;
|
|
9
|
-
icon: SymbolCodepoints;
|
|
10
|
-
}
|
|
11
|
-
export interface IFlowBlockNodeData extends Record<string, unknown> {
|
|
12
|
-
icon: SymbolCodepoints;
|
|
13
|
-
title: string;
|
|
14
|
-
categoryLabel: string;
|
|
15
|
-
summary?: ReactNode;
|
|
16
|
-
hasInput: boolean;
|
|
17
|
-
outputs: Array<TFlowPortId>;
|
|
18
|
-
/** Ports already wired: their edge carries the label, so the port does not repeat it. */
|
|
19
|
-
connectedPorts: Array<TFlowPortId>;
|
|
20
|
-
portLabels: Record<TFlowPortId, string>;
|
|
21
|
-
/** What a free port can grow into; empty in a read-only canvas. */
|
|
22
|
-
addableBlocks: Array<IFlowAddableBlock>;
|
|
23
|
-
onAddFromPort?: (port: TFlowPortId, type: string) => void;
|
|
24
|
-
disabled?: boolean;
|
|
25
|
-
issueSeverity?: TFlowIssueSeverity;
|
|
26
|
-
issueCount: number;
|
|
27
|
-
runStatus?: TFlowRunStepStatus;
|
|
28
|
-
}
|
|
29
|
-
export type TFlowBlockNode = Node<IFlowBlockNodeData, 'flowBlock'>;
|
|
30
|
-
/**
|
|
31
|
-
* Input on the left edge, output ports spread along the right edge; a lone `next` port needs no
|
|
32
|
-
* label. A free port shows a "+" that adds the next block already wired to it.
|
|
33
|
-
*/
|
|
34
|
-
declare const FlowBlockNode: React.FC<NodeProps<TFlowBlockNode>>;
|
|
35
|
-
export default FlowBlockNode;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useTranslation } from "react-i18next";
|
|
3
|
-
import ControlledButton from "../../Form/ControlledButton.js";
|
|
4
|
-
import ControlledMenu from "../ControlledMenu.js";
|
|
5
|
-
import { MaterialSymbol } from "../MaterialSymbol/index.js";
|
|
6
|
-
import { Handle, Position } from "@xyflow/react";
|
|
7
|
-
import FlowNodeShell from "./FlowNodeShell.js";
|
|
8
|
-
const FLOW_INPUT_HANDLE_ID = "in";
|
|
9
|
-
const portTop = (index, count) => `${(index + 1) / (count + 1) * 100}%`;
|
|
10
|
-
const FlowBlockNode = ({ data, selected }) => {
|
|
11
|
-
const { t } = useTranslation("ui");
|
|
12
|
-
const outputs = Array.isArray(data.outputs) ? data.outputs : [];
|
|
13
|
-
const connectedPorts = Array.isArray(data.connectedPorts) ? data.connectedPorts : [];
|
|
14
|
-
const addableBlocks = Array.isArray(data.addableBlocks) ? data.addableBlocks : [];
|
|
15
|
-
const showPortLabels = !(outputs.length === 1 && outputs[0] === "next");
|
|
16
|
-
const canAdd = Boolean(data.onAddFromPort) && addableBlocks.length > 0;
|
|
17
|
-
return /* @__PURE__ */ jsxs(
|
|
18
|
-
FlowNodeShell,
|
|
19
|
-
{
|
|
20
|
-
icon: data.icon,
|
|
21
|
-
title: data.title,
|
|
22
|
-
categoryLabel: data.categoryLabel,
|
|
23
|
-
summary: data.summary,
|
|
24
|
-
selected,
|
|
25
|
-
disabled: data.disabled,
|
|
26
|
-
issueSeverity: data.issueSeverity,
|
|
27
|
-
issueCount: data.issueCount,
|
|
28
|
-
runStatus: data.runStatus,
|
|
29
|
-
className: showPortLabels ? "pr-12" : void 0,
|
|
30
|
-
children: [
|
|
31
|
-
data.hasInput && /* @__PURE__ */ jsx(Handle, { id: FLOW_INPUT_HANDLE_ID, type: "target", position: Position.Left, className: "umode-flow-handle" }),
|
|
32
|
-
outputs.map((port, index) => /* @__PURE__ */ jsx(
|
|
33
|
-
Handle,
|
|
34
|
-
{
|
|
35
|
-
id: port,
|
|
36
|
-
type: "source",
|
|
37
|
-
position: Position.Right,
|
|
38
|
-
className: "umode-flow-handle",
|
|
39
|
-
"data-port": port,
|
|
40
|
-
style: { top: portTop(index, outputs.length) },
|
|
41
|
-
children: showPortLabels && !connectedPorts.includes(port) && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 whitespace-nowrap text-xxs font-semibold text-foreground-subtle", children: data.portLabels[port] })
|
|
42
|
-
},
|
|
43
|
-
port
|
|
44
|
-
)),
|
|
45
|
-
canAdd && outputs.map(
|
|
46
|
-
(port, index) => connectedPorts.includes(port) ? null : /* @__PURE__ */ jsx(
|
|
47
|
-
"div",
|
|
48
|
-
{
|
|
49
|
-
className: "nodrag nopan absolute -right-10 -translate-y-1/2",
|
|
50
|
-
style: { top: portTop(index, outputs.length) },
|
|
51
|
-
children: /* @__PURE__ */ jsx(
|
|
52
|
-
ControlledMenu,
|
|
53
|
-
{
|
|
54
|
-
placement: "right-start",
|
|
55
|
-
triggerTooltip: t("flow.node.addBlock"),
|
|
56
|
-
items: addableBlocks.map((block) => ({
|
|
57
|
-
key: block.type,
|
|
58
|
-
label: block.label,
|
|
59
|
-
icon: block.icon,
|
|
60
|
-
onClick: () => data.onAddFromPort?.(port, block.type)
|
|
61
|
-
})),
|
|
62
|
-
trigger: /* @__PURE__ */ jsx(
|
|
63
|
-
ControlledButton,
|
|
64
|
-
{
|
|
65
|
-
defaultHtmlButton: true,
|
|
66
|
-
className: "interactive flex size-6 items-center justify-center rounded-full border border-border-emphasis bg-surface text-foreground-muted shadow-sm hover:border-brand-border hover:bg-brand-soft hover:text-brand-emphasis focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
|
|
67
|
-
children: /* @__PURE__ */ jsx(MaterialSymbol, { icon: "add", size: 16, "aria-hidden": true })
|
|
68
|
-
}
|
|
69
|
-
)
|
|
70
|
-
}
|
|
71
|
-
)
|
|
72
|
-
},
|
|
73
|
-
`add|${port}`
|
|
74
|
-
)
|
|
75
|
-
)
|
|
76
|
-
]
|
|
77
|
-
}
|
|
78
|
-
);
|
|
79
|
-
};
|
|
80
|
-
export {
|
|
81
|
-
FLOW_INPUT_HANDLE_ID,
|
|
82
|
-
FlowBlockNode as default
|
|
83
|
-
};
|
|
84
|
-
//# sourceMappingURL=FlowBlockNode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowBlockNode.js","sources":["../../../../src/components/UI/Flow/FlowBlockNode.tsx"],"sourcesContent":["import { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport ControlledButton from '@/components/Form/ControlledButton';\nimport ControlledMenu from '@/components/UI/ControlledMenu';\nimport { MaterialSymbol, type SymbolCodepoints } from '@/components/UI/MaterialSymbol';\nimport { Handle, type Node, type NodeProps, Position } from '@xyflow/react';\n\nimport FlowNodeShell from './FlowNodeShell';\nimport type { TFlowIssueSeverity, TFlowPortId, TFlowRunStepStatus } from './flowTypes';\n\nexport const FLOW_INPUT_HANDLE_ID = 'in';\n\nexport interface IFlowAddableBlock {\n type: string;\n label: string;\n icon: SymbolCodepoints;\n}\n\nexport interface IFlowBlockNodeData extends Record<string, unknown> {\n icon: SymbolCodepoints;\n title: string;\n categoryLabel: string;\n summary?: ReactNode;\n hasInput: boolean;\n outputs: Array<TFlowPortId>;\n /** Ports already wired: their edge carries the label, so the port does not repeat it. */\n connectedPorts: Array<TFlowPortId>;\n portLabels: Record<TFlowPortId, string>;\n /** What a free port can grow into; empty in a read-only canvas. */\n addableBlocks: Array<IFlowAddableBlock>;\n onAddFromPort?: (port: TFlowPortId, type: string) => void;\n disabled?: boolean;\n issueSeverity?: TFlowIssueSeverity;\n issueCount: number;\n runStatus?: TFlowRunStepStatus;\n}\n\nexport type TFlowBlockNode = Node<IFlowBlockNodeData, 'flowBlock'>;\n\nconst portTop = (index: number, count: number): string => `${((index + 1) / (count + 1)) * 100}%`;\n\n/**\n * Input on the left edge, output ports spread along the right edge; a lone `next` port needs no\n * label. A free port shows a \"+\" that adds the next block already wired to it.\n */\nconst FlowBlockNode: React.FC<NodeProps<TFlowBlockNode>> = ({ data, selected }) => {\n const { t } = useTranslation('ui');\n const outputs = Array.isArray(data.outputs) ? data.outputs : [];\n const connectedPorts = Array.isArray(data.connectedPorts) ? data.connectedPorts : [];\n const addableBlocks = Array.isArray(data.addableBlocks) ? data.addableBlocks : [];\n const showPortLabels = !(outputs.length === 1 && outputs[0] === 'next');\n const canAdd = Boolean(data.onAddFromPort) && addableBlocks.length > 0;\n\n return (\n <FlowNodeShell\n icon={data.icon}\n title={data.title}\n categoryLabel={data.categoryLabel}\n summary={data.summary}\n selected={selected}\n disabled={data.disabled}\n issueSeverity={data.issueSeverity}\n issueCount={data.issueCount}\n runStatus={data.runStatus}\n className={showPortLabels ? 'pr-12' : undefined}\n >\n {data.hasInput && (\n <Handle id={FLOW_INPUT_HANDLE_ID} type=\"target\" position={Position.Left} className=\"umode-flow-handle\" />\n )}\n {outputs.map((port, index) => (\n <Handle\n key={port}\n id={port}\n type=\"source\"\n position={Position.Right}\n className=\"umode-flow-handle\"\n data-port={port}\n style={{ top: portTop(index, outputs.length) }}\n >\n {showPortLabels && !connectedPorts.includes(port) && (\n <span className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 whitespace-nowrap text-xxs font-semibold text-foreground-subtle\">\n {data.portLabels[port]}\n </span>\n )}\n </Handle>\n ))}\n {canAdd &&\n outputs.map((port, index) =>\n connectedPorts.includes(port) ? null : (\n <div\n key={`add|${port}`}\n className=\"nodrag nopan absolute -right-10 -translate-y-1/2\"\n style={{ top: portTop(index, outputs.length) }}\n >\n <ControlledMenu\n placement=\"right-start\"\n triggerTooltip={t('flow.node.addBlock')}\n items={addableBlocks.map((block) => ({\n key: block.type,\n label: block.label,\n icon: block.icon,\n onClick: () => data.onAddFromPort?.(port, block.type),\n }))}\n trigger={\n <ControlledButton\n defaultHtmlButton\n className=\"interactive flex size-6 items-center justify-center rounded-full border border-border-emphasis bg-surface text-foreground-muted shadow-sm hover:border-brand-border hover:bg-brand-soft hover:text-brand-emphasis focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <MaterialSymbol icon=\"add\" size={16} aria-hidden />\n </ControlledButton>\n }\n />\n </div>\n ),\n )}\n </FlowNodeShell>\n );\n};\n\nexport default FlowBlockNode;\n"],"names":[],"mappings":";;;;;;;AAWO,MAAM,uBAAuB;AA6BpC,MAAM,UAAU,CAAC,OAAe,UAA0B,IAAK,QAAQ,MAAM,QAAQ,KAAM,GAAG;AAM9F,MAAM,gBAAqD,CAAC,EAAE,MAAM,eAAe;AACjF,QAAM,EAAE,EAAA,IAAM,eAAe,IAAI;AACjC,QAAM,UAAU,MAAM,QAAQ,KAAK,OAAO,IAAI,KAAK,UAAU,CAAA;AAC7D,QAAM,iBAAiB,MAAM,QAAQ,KAAK,cAAc,IAAI,KAAK,iBAAiB,CAAA;AAClF,QAAM,gBAAgB,MAAM,QAAQ,KAAK,aAAa,IAAI,KAAK,gBAAgB,CAAA;AAC/E,QAAM,iBAAiB,EAAE,QAAQ,WAAW,KAAK,QAAQ,CAAC,MAAM;AAChE,QAAM,SAAS,QAAQ,KAAK,aAAa,KAAK,cAAc,SAAS;AAErE,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,eAAe,KAAK;AAAA,MACpB,SAAS,KAAK;AAAA,MACd;AAAA,MACA,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,MACpB,YAAY,KAAK;AAAA,MACjB,WAAW,KAAK;AAAA,MAChB,WAAW,iBAAiB,UAAU;AAAA,MAErC,UAAA;AAAA,QAAA,KAAK,YACJ,oBAAC,QAAA,EAAO,IAAI,sBAAsB,MAAK,UAAS,UAAU,SAAS,MAAM,WAAU,oBAAA,CAAoB;AAAA,QAExG,QAAQ,IAAI,CAAC,MAAM,UAClB;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,IAAI;AAAA,YACJ,MAAK;AAAA,YACL,UAAU,SAAS;AAAA,YACnB,WAAU;AAAA,YACV,aAAW;AAAA,YACX,OAAO,EAAE,KAAK,QAAQ,OAAO,QAAQ,MAAM,EAAA;AAAA,YAE1C,UAAA,kBAAkB,CAAC,eAAe,SAAS,IAAI,KAC9C,oBAAC,QAAA,EAAK,WAAU,iIACb,UAAA,KAAK,WAAW,IAAI,EAAA,CACvB;AAAA,UAAA;AAAA,UAXG;AAAA,QAAA,CAcR;AAAA,QACA,UACC,QAAQ;AAAA,UAAI,CAAC,MAAM,UACjB,eAAe,SAAS,IAAI,IAAI,OAC9B;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAU;AAAA,cACV,OAAO,EAAE,KAAK,QAAQ,OAAO,QAAQ,MAAM,EAAA;AAAA,cAE3C,UAAA;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,gBAAgB,EAAE,oBAAoB;AAAA,kBACtC,OAAO,cAAc,IAAI,CAAC,WAAW;AAAA,oBACnC,KAAK,MAAM;AAAA,oBACX,OAAO,MAAM;AAAA,oBACb,MAAM,MAAM;AAAA,oBACZ,SAAS,MAAM,KAAK,gBAAgB,MAAM,MAAM,IAAI;AAAA,kBAAA,EACpD;AAAA,kBACF,SACE;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,mBAAiB;AAAA,sBACjB,WAAU;AAAA,sBAEV,8BAAC,gBAAA,EAAe,MAAK,OAAM,MAAM,IAAI,eAAW,KAAA,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACnD;AAAA,cAAA;AAAA,YAEJ;AAAA,YArBK,OAAO,IAAI;AAAA,UAAA;AAAA,QAsBlB;AAAA,MAEJ;AAAA,IAAA;AAAA,EAAA;AAGR;"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
import { PanelPosition } from '@xyflow/react';
|
|
3
|
-
import { IFlowIssue, IFlowRunOverlay } from './flowTypes';
|
|
4
|
-
export interface IFlowCanvasProps {
|
|
5
|
-
issues?: Array<IFlowIssue>;
|
|
6
|
-
runOverlay?: IFlowRunOverlay | null;
|
|
7
|
-
readOnly?: boolean;
|
|
8
|
-
/** Accessible name of the canvas region, from `t()`. Defaults to the library label. */
|
|
9
|
-
ariaLabel?: string;
|
|
10
|
-
className?: string;
|
|
11
|
-
/** Where the zoom and history controls sit; move them when floating chrome takes that corner. */
|
|
12
|
-
controlsPosition?: PanelPosition;
|
|
13
|
-
/** Floating chrome drawn over the canvas (toolbars, panels); position it with absolute classes. */
|
|
14
|
-
children?: ReactNode;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* The editing surface. Renders the graph held by `FlowEditorProvider` and turns every
|
|
18
|
-
* gesture (drag, connect, select, delete, drop, shortcuts) into a store action, so undo
|
|
19
|
-
* and the dirty flag see all of them.
|
|
20
|
-
*/
|
|
21
|
-
declare const FlowCanvas: React.FC<IFlowCanvasProps>;
|
|
22
|
-
export default FlowCanvas;
|