diff --git a/client/packages/openblocks-comps/src/comps/chartComp/reactEcharts/index.ts b/client/packages/openblocks-comps/src/comps/chartComp/reactEcharts/index.ts index 80fc9ae9..95f3cae6 100644 --- a/client/packages/openblocks-comps/src/comps/chartComp/reactEcharts/index.ts +++ b/client/packages/openblocks-comps/src/comps/chartComp/reactEcharts/index.ts @@ -1,6 +1,14 @@ import * as echarts from "echarts"; import { EChartsReactProps, EChartsOption, EChartsInstance } from "./types"; import EChartsReactCore from "./core"; +import * as locales from "../../../i18n/comps/locales/echarts"; + +Object.keys(locales).forEach((l) => { + echarts.registerLocale( + l.toUpperCase(), + locales[l as keyof typeof locales] as any + ); +}); /** * reference: https://github.com/hustcc/echarts-for-react diff --git a/client/packages/openblocks-comps/src/i18n/comps/index.tsx b/client/packages/openblocks-comps/src/i18n/comps/index.tsx index 15972f82..99e8da62 100644 --- a/client/packages/openblocks-comps/src/i18n/comps/index.tsx +++ b/client/packages/openblocks-comps/src/i18n/comps/index.tsx @@ -15,6 +15,8 @@ export function getEchartsLocale() { return "EN"; case "zh": return "ZH"; + case "pt": + return "PT"; } }); } @@ -23,6 +25,8 @@ export function getCalendarLocale() { switch (language) { case "zh": return "zh-cn"; + case "pt": + return "pt-br" default: return "en-gb"; } diff --git a/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/index.ts b/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/index.ts new file mode 100644 index 00000000..0e5cd64a --- /dev/null +++ b/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/index.ts @@ -0,0 +1 @@ +export * from "./pt"; diff --git a/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/pt.ts b/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/pt.ts new file mode 100644 index 00000000..253b5444 --- /dev/null +++ b/client/packages/openblocks-comps/src/i18n/comps/locales/echarts/pt.ts @@ -0,0 +1,149 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * Language: English. + */ + +export const pt = { + time: { + month: [ + "Janeiro", + "Fevereiro", + "Março", + "Abril", + "Maio", + "Junho", + "Julho", + "Agosto", + "Setembro", + "Outubro", + "Novembro", + "Dezembro", + ], + monthAbbr: [ + "Jan", + "Fev", + "Mar", + "Abr", + "Mai", + "Jun", + "Jul", + "Ago", + "Set", + "out", + "Nov", + "Dez", + ], + dayOfWeek: [ + "Domingo", + "Segunda", + "Terça", + "Quarta", + "Quinta", + "Sexta", + "Sábado", + ], + dayOfWeekAbbr: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], + }, + legend: { selector: { all: "Todos", inverse: "Inverso" } }, + toolbox: { + brush: { + title: { + rect: "Caixa de seleção", + polygon: "Selecionar Lasso", + lineX: "Selecione horizontalmente", + lineY: "Selecione verticalmente", + keep: "Mantenha seleções", + clear: "Limpar seleções", + }, + }, + dataView: { + title: "Visualização de dados", + lang: ["Visualização de dados", "Fechar", "Atualizar"], + }, + dataZoom: { title: { zoom: "Zoom", back: "Reset de zoom" } }, + magicType: { + title: { + line: "Mudar para gráfico de linha", + bar: "Mudar para gráfico de barras", + stack: "Stack", + tiled: "Telha", + }, + }, + restore: { title: "Restaurar" }, + saveAsImage: { + title: "Salvar como imagem", + lang: ["Clique com o direito para salvar a imagem"], + }, + }, + series: { + typeNames: { + pie: "Gráfico de pizza", + bar: "Gráfico de barras", + line: "Gráfico de linha", + scatter: "Enredo de dispersão", + effectScatter: "Lote de dispersão", + radar: "Gráfico de radar", + tree: "Árvore", + treemap: "Um mapa de árvores", + boxplot: "Papel de caixa", + candlestick: "Punho de vela", + k: "Gráfico de linha K", + heatmap: "Mapa do calor", + map: "Mapa", + parallel: "Mapa da coordenada paralela", + lines: "Gráfico de linha", + graph: "Gráfico de relacionamento", + sankey: "Diagrama de Sankey", + funnel: "Gráfico de Funil", + gauge: "Calibre", + pictorialBar: "Barra de pictórica", + themeRiver: "Mapa do Rio Tema", + sunburst: "Sunburst", + }, + }, + aria: { + general: { + withTitle: 'Este é um gráfico sobre "{title}"', + withoutTitle: "Este é um gráfico", + }, + series: { + single: { + prefix: "- ..", + withName: "com tipo {seriesType} nomeado {seriesName}.", + withoutName: "com tipo {seriesType}.", + }, + multiple: { + prefix: ". Consiste na contagem de séries {seriesCount}.", + withName: + "A série {seriesId} é uma {seriesType} representando {seriesName}.", + withoutName: "A série {seriesId} é uma {seriesType}.", + separator: { middle: "- ..", end: "- .." }, + }, + }, + data: { + allData: "Os dados são os seguintes:", + partialData: "Os primeiros itens são:", + withName: "os dados para {name} é {value}", + withoutName: "Não", + separator: { middle: ",", end: "." }, + }, + }, +}; diff --git a/client/packages/openblocks-comps/src/i18n/comps/locales/index.ts b/client/packages/openblocks-comps/src/i18n/comps/locales/index.ts index ab1abfb2..45330cb2 100644 --- a/client/packages/openblocks-comps/src/i18n/comps/locales/index.ts +++ b/client/packages/openblocks-comps/src/i18n/comps/locales/index.ts @@ -1,7 +1,9 @@ // file examples: en, enGB, zh, zhHK // fallback example: current locale is zh-HK, fallback order is zhHK => zh => en export * from "./en"; +export * from "./pt"; export * from "./zh"; export * from "./enObj"; +export * from "./ptObj"; export * from "./zhObj"; diff --git a/client/packages/openblocks-comps/src/i18n/comps/locales/pt.ts b/client/packages/openblocks-comps/src/i18n/comps/locales/pt.ts new file mode 100644 index 00000000..f72f9248 --- /dev/null +++ b/client/packages/openblocks-comps/src/i18n/comps/locales/pt.ts @@ -0,0 +1,147 @@ +export const pt = { + chart: { + delete: "Excluir", + data: "Dados", + mode: "Modo", + config: "Configuração", + UIMode: "Modo UI", + chartType: "Tipo de gráfico", + xAxis: "Eixo X", + chartSeries: "Série de gráficos", + customSeries: "Série personalizada", + add: "Adicionar", + confirmDelete: "Confirme Excluir:", + seriesName: "Nome da série", + dataColumns: "Colunas de dados", + title: "Título", + xAxisDirection: "Direção do eixo X", + xAxisName: "Nome do eixo X", + xAxisType: "Tipo de eixo X", + xAxisTypeTooltip: + "Por padrão, ele será automaticamente detectado de acordo com dados do eixo X. Para a descrição do tipo, consulte:", + logBase: "Base de Dados", + yAxisName: "Nome do eixo Y", + yAxisType: "Tipo de eixo Y", + yAxisDataFormat: "Tipo de dados do eixo Y", + yAxisDataFormatTooltip: + "O valor indica o valor de cada coordenada. Exemplo: '", + basicBar: "Barra básica", + stackedBar: "Barra empilhada", + barType: "Tipo de gráfico de barras", + categoryAxis: "Eixo de categoria", + valueAxis: "Eixo de valor", + timeAxis: "Eixo de tempo", + logAxis: "Eixo de log", + auto: "Padrão", + legendPosition: "Posição da lengenda", + basicLine: "Linha básica", + stackedLine: "Linha empilhada", + areaLine: "Linha de área", + smooth: "Curva suave", + lineType: "Tipo de gráfico de linha", + basicPie: "Pizza básica", + doughnutPie: "Donut", + rosePie: "Pizza de rosa", + pieType: "Tipo de gráfico de peças", + spending: "Gastos", + budget: "Orçamento", + bar: "Gráfico de barras", + line: "Gráfico de linha", + scatter: "Gráfico de dispersão", + pie: "Gráfico de peças", + horizontal: "Horizontal", + vertical: "Vertical", + noData: "Sem dados", + unknown: "Desconhecido", + select: "Selecione", + unSelect: "Sem seleção", + echartsOptionLabel: "Opção", + echartsOptionTooltip: "Opção ECharts", + echartsOptionExamples: "Exemplos ECharts", + selectDesc: + "Acionado quando o usuário seleciona parte dos dados no gráfico", + unselectDesc: + "Acionado quando o usuário não seleciona parte dos dados no gráfico", + selectedPointsDesc: "Pontos selecionados", + dataDesc: "Os dados brutos usados no gráfico atual", + titleDesc: "Título do gráfico atual", + scatterShape: "Forma de dispersão", + circle: "Círculo", + rect: "Retângulo", + triangle: "Triângulo", + diamond: "Diamantes", + pin: "Pinças", + arrow: "Seta", + pointColorLabel: "Cor de ponto", + pointColorTooltip: + "Defina a cor do ponto de acordo com o nome da série e o valor do ponto atual, variáveis opcionais: seriesName, value. Exemplo: '", + }, + imageEditor: { + defaultSrc: "- ..", + save: "Salvar", + saveDesc: "Salvar imagem", + src: "Fonte de imagem", + name: "Nome da imagem", + buttonText: "Texto de botão", + srcDesc: "Fonte de imagem", + nameDesc: "Nome da imagem", + dataURIDesc: "Dados de imagem URI", + dataDesc: "Dados de imagem", + buttonTextDesc: "Texto de botão", + }, + calendar: { + events: "Dados de eventos", + editable: "Editável", + defaultDate: "Data padrão", + defaultDateTooltip: "A data que o calendário exibe inicialmente", + defaultView: "Vista padrão", + defaultViewTooltip: "A vista que o calendário exibe inicialmente", + showEventTime: "Mostrar horários de eventos", + showEventTimeTooltip: "Se exibir o texto do tempo do evento", + showWeekends: "Mostrar fins de semana", + showAllDay: "Mostrar o dia todo", + showAllDayTooltip: + "Se para exibir o slot de todos os dias nas vistas da semana e do dia", + dayMaxEvents: "Dia eventos máximos", + dayMaxEventsTooltip: + "O número máximo de eventos a serem exibidos no mês de vista por dia, com 0 sendo limitado à altura da célula", + eventMaxStack: "Evento máximo pilha", + eventMaxStackTooltip: + "O número máximo de eventos para empilhar horizontalmente nas vistas da semana e do dia, com 0 sendo nenhum limite", + selectInterval: "O intervalo selecionado no calendário", + selectEvent: "Evento selecionado", + changeSet: + "O objeto de evento alterado arrastando no calendário, a chave é o evento Id, e o valor é o evento", + headerBtnBackground: "Fundo do botão", + btnText: "Texto de botão", + title: "Título", + selectBackground: "Fundo selecionado", + today: "Hoje", + month: "Mês", + week: "Semana", + day: "Dia", + list: "Lista", + monday: "Segunda-feira", + tuesday: "Terça-feira", + wednesday: "Quarta-feira", + thursday: "Quinta-feira", + friday: "Sexta-feira", + saturday: "Sábado", + sunday: "Domingo", + startWeek: "Comece a partir de", + creatEvent: "Criar evento", + editEvent: "Editar evento", + eventName: "Nome do evento", + eventColor: "Cor do evento", + eventGroupId: "ID de grupo", + groupIdTooltip: + "ID de grupo é usado para agrupar diferentes eventos, e eventos no mesmo grupo podem ser arrastados e redimensionados juntos.", + more: "mais", + allDay: "Todos os dias", + eventNameRequire: "Por favor, entre com o nome do evento", + eventId: "ID do evento", + eventIdRequire: "Por favor, entre com a ID do evento", + eventIdTooltip: "ID único para cada evento", + eventIdExist: "ID já existe", + }, +}; diff --git a/client/packages/openblocks-comps/src/i18n/comps/locales/ptObj.tsx b/client/packages/openblocks-comps/src/i18n/comps/locales/ptObj.tsx new file mode 100644 index 00000000..98cbd1af --- /dev/null +++ b/client/packages/openblocks-comps/src/i18n/comps/locales/ptObj.tsx @@ -0,0 +1,3 @@ +import { I18nObjects } from "./types"; + +export const ptObj: I18nObjects | undefined = undefined; diff --git a/client/packages/openblocks-core/src/i18n/locales/index.ts b/client/packages/openblocks-core/src/i18n/locales/index.ts index b52d5880..3d9b975c 100644 --- a/client/packages/openblocks-core/src/i18n/locales/index.ts +++ b/client/packages/openblocks-core/src/i18n/locales/index.ts @@ -1,4 +1,5 @@ // file examples: en, enGB, zh, zhHK // fallback example: current locale is zh-HK, fallback order is zhHK => zh => en export * from "./en"; +export * from "./pt"; export * from "./zh"; diff --git a/client/packages/openblocks-core/src/i18n/locales/pt.ts b/client/packages/openblocks-core/src/i18n/locales/pt.ts new file mode 100644 index 00000000..ea3e75dd --- /dev/null +++ b/client/packages/openblocks-core/src/i18n/locales/pt.ts @@ -0,0 +1 @@ +export const pt = {}; diff --git a/client/packages/openblocks-design/src/i18n/design/locales/index.ts b/client/packages/openblocks-design/src/i18n/design/locales/index.ts index b52d5880..3d9b975c 100644 --- a/client/packages/openblocks-design/src/i18n/design/locales/index.ts +++ b/client/packages/openblocks-design/src/i18n/design/locales/index.ts @@ -1,4 +1,5 @@ // file examples: en, enGB, zh, zhHK // fallback example: current locale is zh-HK, fallback order is zhHK => zh => en export * from "./en"; +export * from "./pt"; export * from "./zh"; diff --git a/client/packages/openblocks-design/src/i18n/design/locales/pt.ts b/client/packages/openblocks-design/src/i18n/design/locales/pt.ts new file mode 100644 index 00000000..98a38d59 --- /dev/null +++ b/client/packages/openblocks-design/src/i18n/design/locales/pt.ts @@ -0,0 +1,54 @@ +export const pt = { + addItem: "Adicionar", + duplicate: "Duplicar", + rename: "Renomear", + delete: "Excluir", + edit: "Editar", + ok: "OK", + cancel: "Cancelar", + previousStep: "Anterior", + nextStep: "Próximo", + finish: "Finalizar", + country: { china: "China" }, + notification: { + copySuccess: "Copiado com sucesso", + copyFail: "Falha ao copiar", + }, + prop: { + basic: "Básico", + interaction: "Interação", + advanced: "Avançado", + validation: "Validação", + layout: "Layout", + style: "Estilo", + }, + passwordInput: { + label: "Senha:", + placeholder: "Digite sua senha", + inconsistentPassword: "As senhas são inconsistentes", + confirmPasswordLabel: "Confirmar senha:", + confirmPasswordPlaceholder: "Digite sua senha novamente", + }, + verifyCodeInput: { + label: "Código de verificação:", + errorMsg: "Código deve ter {digitNum} dígitos", + placeholder: "Por favor entre com um código de {digitNum} dígitos", + sendCode: "Enviar código", + }, + iconSelect: { + title: "Selecione o ícone", + searchPlaceholder: "Ícone de pesquisa", + }, + eventHandler: { advanced: "Avançado" }, + comp: { + selectedCompsTitle: "{selectCompNum} componentes selecionados", + selectedCompsDetail: "Clique no componente para ver suas propriedades", + batchDelete: "Remoção em lote", + }, + optionsControl: { + optionItemErrorMSg: + 'Encontrado valor de opção duplicado "{value}". Apenas o primeiro item será exibido. Por favor, mude para um valor único.', + emptyList: "Sem opções", + }, + container: { hintPlaceHolder: "Arraste os componentes do painel direito" }, +}; diff --git a/client/packages/openblocks/src/components/PermissionDialog/PermissionList.tsx b/client/packages/openblocks/src/components/PermissionDialog/PermissionList.tsx index 11705a84..7f95cef1 100644 --- a/client/packages/openblocks/src/components/PermissionDialog/PermissionList.tsx +++ b/client/packages/openblocks/src/components/PermissionDialog/PermissionList.tsx @@ -108,8 +108,8 @@ function PermissionLiItem(props: { {isCreator && {trans("home.creator")}} {isCreator || permissionItem.type === "ORG_ADMIN" ? ( - - {props.ownerLabel} + + ({props.ownerLabel}) ) : ( - `${ALL_APPLICATIONS_URL}/${appId}/${viewMode}`; + `${ALL_APPLICATIONS_URL}/${appId}${viewMode === "view" ? "" : "/" + viewMode}`; export const isAuthUnRequired = (pathname: string): boolean => { return ( diff --git a/client/packages/openblocks/src/i18n/antdLocale.ts b/client/packages/openblocks/src/i18n/antdLocale.ts index 7842afab..125fad5b 100644 --- a/client/packages/openblocks/src/i18n/antdLocale.ts +++ b/client/packages/openblocks/src/i18n/antdLocale.ts @@ -3,6 +3,7 @@ import en_US from "antd/lib/locale/en_US"; import zh_CN from "antd/es/locale/zh_CN"; import zh_HK from "antd/es/locale/zh_HK"; import zh_TW from "antd/es/locale/zh_TW"; +import pt_BR from "antd/es/locale/pt_BR"; import { getValueByLocale } from "openblocks-core"; export function getAntdLocale(language?: string) { @@ -28,5 +29,7 @@ function selectAntdLocale(language: string, region?: string) { return zh_TW; } return zh_CN; + case "pt": + return pt_BR; } } diff --git a/client/packages/openblocks/src/i18n/locales/index.ts b/client/packages/openblocks/src/i18n/locales/index.ts index cd48e5ce..14d89b5a 100644 --- a/client/packages/openblocks/src/i18n/locales/index.ts +++ b/client/packages/openblocks/src/i18n/locales/index.ts @@ -2,8 +2,10 @@ // fallback example: current locale is zh-HK, fallback order is zhHK => zh => en export * from "./en"; export * from "./it"; +export * from "./pt"; export * from "@openblocks-ee/i18n/locales/zh"; export * from "./enObj"; export * from "./itObj"; +export * from "./ptObj"; export * from "@openblocks-ee/i18n/locales/zhObj"; diff --git a/client/packages/openblocks/src/i18n/locales/pt.ts b/client/packages/openblocks/src/i18n/locales/pt.ts new file mode 100644 index 00000000..1f93cf43 --- /dev/null +++ b/client/packages/openblocks/src/i18n/locales/pt.ts @@ -0,0 +1,2459 @@ +/* eslint-disable only-ascii/only-ascii */ +import table from "./componentDocExtra/table.md?url"; + +export const pt = { + productName: "Bloqueios abertos", + productDesc: "Construa ferramentas internas rapidamente, sem limitações", + notSupportedBrowser: + "Seu navegador atual pode ter problemas de compatibilidade. Para uma melhor experiência de usuário, recomenda-se usar a versão mais recente do navegador Chrome.", + create: "Criar", + move: "Mexam-se", + addItem: "Adicionar", + newItem: "Novo", + copy: "Entendido", + rename: "Renomear", + delete: "Excluir", + deletePermanently: "Excluir", + remove: "Remover", + recover: "Recuperar", + edit: "Editar", + view: "Ver", + value: "Valor", + data: "Dados", + information: "Informação", + success: "Sucesso", + warning: "Aviso", + error: "Erro", + reference: "Referência", + text: "Texto", + label: "Etiqueta", + color: "Cor", + form: "Formulário", + menu: "Menu", + menuItem: "Item de menu", + ok: "ESTÁ BEM", + cancel: "Cancelar", + finish: "Finalizar", + reset: "Redefinição", + icon: "Ícone", + code: "Código", + title: "Título", + emptyContent: "Conteúdo vazio", + more: "Mais", + search: "Pesquisar", + back: "Voltar", + accessControl: "Controle de Acesso", + copySuccess: "Copiado", + copyError: "Copiar erro", + api: { + publishSuccess: "Publicado", + recoverFailed: "Recuperar falhada", + needUpdate: + "Sua versão atual é muito antiga, por favor atualize para a versão mais recente.", + }, + codeEditor: { + notSupportAutoFormat: + "Editor de código atual não suporta formatação automática", + fold: "Dobrável", + }, + exportMethod: { + setDesc: "Propriedade definida: Não", + clearDesc: "Propriedade limpa: Não", + resetDesc: "Repor propriedade: {property} ao valor padrão", + }, + method: { + focus: "Definir foco", + focusOptions: "Opções de foco. Ver HTMLElement.focus()", + blur: "Remover foco", + click: "Clique em", + select: "Selecione todo o texto", + setSelectionRange: + "Defina as posições iniciais e finais da seleção de texto atual", + selectionStart: "O índice baseado em 0 do primeiro caractere selecionado.", + selectionEnd: + "O índice baseado em 0 do personagem após o último caractere selecionado.", + setRangeText: "Substituir uma gama de texto", + replacement: "A string para inserir.", + replaceStart: "O índice baseado em 0 do primeiro personagem a substituir.", + replaceEnd: + "O índice baseado em 0 do personagem após o último personagem substituir.", + }, + errorBoundary: { + encounterError: + "Carregando componente falhou. Por favor, verifique sua configuração.", + clickToReload: "Clique para recarregar", + errorMsg: "Erro:", + }, + imgUpload: { + notSupportError: "Somente suporte de upload {types} imagem", + exceedSizeError: "O tamanho da imagem não deve exceder Não", + }, + gridCompOperator: { + notSupport: "Não apoio", + selectAtLeastOneComponent: "Por favor, selecione pelo menos um componente", + selectCompFirst: "Por favor, selecione componentes antes de copiar", + noContainerSelected: "[bug] Nenhum recipiente selecionado", + deleteCompsSuccess: + "Removido com sucesso. Você pode usar {undoKey} para desfazer.", + deleteCompsTitle: "Excluir componentes", + deleteCompsBody: + "Tem certeza de que deseja excluir {compNum} componentes selecionados?", + cutCompsSuccess: + "Corte o sucesso. Você pode usar {pasteKey} para colar ou usar {undoKey} para desfazer.", + }, + leftPanel: { + queries: "Consultas", + globals: "Globals", + propTipsArr: "{num} produtos", + propTips: "chaves", + propTipArr: "{num} item", + propTip: "chave", + stateTab: "Estado", + settingsTab: "Configurações", + toolbarTitle: "Outros", + toolbarPreload: "Scripts e estilo", + components: "Componentes", + modals: "Modals", + expandTip: "Clique para expandir os dados de {component}", + collapseTip: "Clique para entrar em colapso {component}'s data", + }, + bottomPanel: { + title: "Consultas", + run: "Corre", + noSelectedQuery: "Nenhuma consulta selecionada", + metaData: "Metadados", + noMetadata: "Sem metadados", + metaSearchPlaceholder: "Pesquisar metadados", + allData: "Todas as tabelas", + }, + rightPanel: { + propertyTab: "Propriedades", + noSelectedComps: + "Nenhum componente selecionado. Clique para selecionar um.", + createTab: "Inserção", + searchPlaceHolder: "Procurar componentes ou módulos", + uiComponentTab: "Componentes", + extensionTab: "Extensões", + modulesTab: "Módulos", + moduleListTitle: "Módulos", + pluginListTitle: "Plugins", + emptyModules: + "Os módulos são grupos reutilizáveis de componentes e consultas.", + searchNotFound: + "Não consegue encontrar um componente adequado? Submeter um problema", + emptyPlugins: "Sem plugins adicionados.", + contactUs: "Contacte-nos", + issueHere: "aqui.", + }, + prop: { + expand: "Expandir", + columns: "Colunas", + rowSelection: "Seleção de linha", + toolbar: "Barra de ferramentas", + pagination: "Paginação", + logo: "Logotipo", + style: "Estilo", + inputs: "Entradas", + meta: "Meta dados", + hide: "Escondido", + loading: "A carregar", + disabled: "Deficientes", + placeholder: "Accionista local", + showClear: "Mostrar botão claro", + showSearch: "Pesquisar", + defaultValue: "Valor padrão", + required: "Campo necessário", + readOnly: "Ler apenas", + readOnlyTooltip: + "Leia apenas o componente parece igual ao componente normal, é focalizável e selecionável, mas não pode ser modificado", + minimum: "Mínimo", + maximum: "Máximo", + regex: "Regex", + minLength: "Comprimento mínimo", + maxLength: "Comprimento máximo", + height: "Altura", + width: "Largura", + selectApp: "Aplicativo", + showCount: "Mostrar contagem", + textType: "Tipo de texto", + customRule: "Regra geral", + customRuleTooltip: + "Se o resultado for string não vazia, é uma mensagem de erro. Se vazio ou nulo, a validação passa. Exemplo:", + manual: "Manual", + map: "Maculada", + use12Hours: "Use 12 horas", + hourStep: "Passo de hora", + minuteStep: "Passo a passo", + secondStep: "Segundo passo", + minDate: "Data mínima", + maxDate: "Data máxima", + minTime: "Minha hora", + maxTime: "Tempo máximo", + type: "Tipo", + showLabel: "Mostrar etiqueta", + showHeader: "Mostrar cabeçalho", + showBody: "Mostrar corpo", + showFooter: "Mostrar rodapé", + maskClosable: "Clique na máscara para fechar", + showMask: "Mostrar máscara", + }, + autoHeightProp: { auto: "Automática", fixed: "Fixa" }, + labelProp: { + text: "Etiqueta", + tooltip: "Ponta da ferramenta", + position: "Posição", + left: "Esquerda", + top: "Topo", + align: "Alinhamento", + width: "Largura", + widthTooltip: + "Largura do rótulo. Ele suporta porcentagem da largura do componente (%), pixels (px)", + }, + eventHandler: { + eventHandlers: "Manipuladores de eventos", + emptyEventHandlers: "Sem manipuladores de eventos", + incomplete: "Seleção incompleta", + inlineEventTitle: "Sobre", + event: "Evento", + action: "Acção", + noSelect: "Não selecione", + runQuery: "Corre a consulta", + selectQuery: "Selecione a consulta", + controlComp: "Componente de controle", + runScript: "Executar JavaScript", + runScriptPlaceHolder: "Escrever código aqui", + component: "Componente", + method: "Método", + setTempState: "Definir estado temporário", + state: "Estado", + triggerModuleEvent: "Evento de módulo de gatilho", + moduleEvent: "Evento do módulo", + goToApp: "Ir para o aplicativo", + queryParams: "Params de consulta", + hashParams: "Params de Hash", + showNotification: "Mostrar notificação", + text: "Texto", + level: "Nível", + duration: "Duração", + notifyDurationTooltip: + "Unidade de tempo pode ser s (segundo, padrão), ms (milissegundo). Duração máxima é {max} segundos", + goToURL: "Ir para a URL", + openInNewTab: "Abra em uma nova aba", + copyToClipboard: "Copiar para clipboard", + copyToClipboardValue: "Valor", + export: "Dados de exportação", + exportNoFileType: "Não selecionar (opcional)", + fileName: "Nome do arquivo", + fileNameTooltip: + "Extensão de suporte para especificar o tipo de arquivo, como image.png.", + fileType: "Tipo de arquivo", + condition: "Apenas corra quando", + conditionTooltip: + 'Apenas execute o manipulador do evento quando esta condição avalia para "verdade"', + debounce: "Debounce", + throttle: "Throt", + slowdownTooltip: + "Use o engano ou o acelerador para controlar com que frequência a ação é desencadeada. Unidade de tempo pode ser ms (milissegundo, padrão), s (segundo).", + notHandledError: "Não tratado", + currentApp: "Corrente", + }, + event: { + submit: "Submeter-me", + submitDesc: "Triggers on submit", + change: "Alterar", + changeDesc: "Acionadores sobre mudanças de valor", + focus: "Foco", + focusDesc: "Acionadores em foco", + blur: "Blur", + blurDesc: "Triggers on blur", + click: "Clique em", + clickDesc: "Acionadores no clique", + close: "Fechar", + closeDesc: "Triggers on close", + parse: "Parse", + parseDesc: "Triggers on parse", + success: "Sucesso", + successDesc: "Acionadores sobre o sucesso", + }, + themeDetail: { + primary: "Cor da marca", + primaryDesc: "A maioria dos componentes usa a cor primária padrão", + textDark: "Texto cor escura", + textDarkDesc: "Aplicar quando a cor de fundo é luz", + textLight: "Cor da luz do texto", + textLightDesc: "Aplicar quando a cor de fundo é escura", + canvas: "Cor de lona", + canvasDesc: "A cor de fundo padrão do aplicativo", + primarySurface: "Cor do recipiente", + primarySurfaceDesc: "A cor de fundo padrão para componentes como tabelas", + borderRadius: "Raio de fronteira", + borderRadiusDesc: + "A maioria dos componentes usa o raio de fronteira padrão", + chart: "Estilo de gráfico", + chartDesc: "Entrada Echarts", + echartsJson: "Tema JSON", + }, + style: { + resetTooltip: + "Restaurar estilos. Exclua o valor da entrada para redefinir um campo individual.", + contrastText: "Cor de texto de contraste", + generated: "Geração", + customize: "Personalizar", + staticText: "Texto estático", + accent: "Accent", + validate: "Mensagem de validação", + border: "Fronteira", + borderRadius: "Raio de fronteira", + background: "Fundo", + headerBackground: "Fundo de cabeçalho", + footerBackground: "Fundo de rodapé", + fill: "Preenchimento", + track: "Rastrear", + links: "Links", + thumb: "Thumb", + thumbBorder: "Thumb fronteira", + checked: "Verificado", + unchecked: "Desmarcado", + handle: "Liderança", + tags: "Tags", + tagsText: "Tags texto", + multiIcon: "Ícone Multiselect", + tabText: "Texto da guia", + tabAccent: "Sotaque de guia", + checkedBackground: "Fundo verificado", + uncheckedBackground: "Fundo desmarcado", + uncheckedBorder: "Fronteira desmarcada", + indicatorBackground: "Indicador de fundo", + tableCellText: "Texto de célula", + selectedRowBackground: "Fundo de linha selecionado", + hoverRowBackground: "Fundo de linha Hover", + alternateRowBackground: "Fundo de linha alternativo", + tableHeaderBackground: "Fundo de cabeçalho", + tableHeaderText: "Texto de cabeçalho", + toolbarBackground: "Fundo da barra de ferramentas", + toolbarText: "Texto da barra de ferramentas", + pen: "Pena", + footerIcon: "Ícone do rodapé", + tips: "Dicas", + }, + export: { + hiddenDesc: "Se for verdade, o componente está escondido", + disabledDesc: + "Se for verdade, o componente será acinzentado e não interactivo", + visibleDesc: "Se for verdade, o componente é visível", + inputValueDesc: "Valor atual da entrada", + invalidDesc: "Se o valor é inválido", + placeholderDesc: "Texto para exibir quando nenhum valor é definido", + requiredDesc: "Se for verdade, um valor válido deve ser fornecido", + submitDesc: "Formulário de envio", + richTextEditorValueDesc: "Valor atual do Editor", + richTextEditorReadOnlyDesc: "Se for verdade, o Editor é somente leitura", + richTextEditorHideToolBarDesc: + "Se for verdade, a barra de ferramentas está escondida", + jsonEditorDesc: "Dados atuais do json", + sliderValueDesc: "Valor selecionado atualmente", + sliderMaxValueDesc: "O valor máximo do intervalo atual", + sliderMinValueDesc: "O valor mínimo do intervalo atual", + sliderStartDesc: "O valor do ponto de partida selecionado atualmente", + sliderEndDesc: "O valor do ponto final selecionado atualmente", + ratingValueDesc: "A pontuação selecionada atualmente", + ratingMaxDesc: "A pontuação máxima atualmente definida", + datePickerValueDesc: "Data selecionada atualmente", + datePickerFormattedValueDesc: + "Data selecionada formatada de acordo com o formato especificado", + datePickerTimestampDesc: "O timestamp selecionado atualmente da data (s)", + dateRangeStartDesc: "Atualmente selecionada data de início", + dateRangeEndDesc: "Atualmente selecionada data final", + dateRangeStartTimestampDesc: + "O timestamp selecionado atualmente da data de início (s)", + dateRangeEndTimestampDesc: + "O timestamp selecionado atualmente da data final (s)", + dateRangeFormattedValueDesc: + "Data selecionada formatada de acordo com o formato especificado", + dateRangeFormattedStartValueDesc: + "Data de início formatada de acordo com o formato especificado", + dateRangeFormattedEndValueDesc: + "Data final formatada de acordo com o formato especificado", + timePickerValueDesc: "Tempo selecionado atualmente", + timePickerFormattedValueDesc: + "Tempo selecionado formatado de acordo com o formato especificado", + timeRangeStartDesc: "Tempo de início selecionado atualmente", + timeRangeEndDesc: "Atualmente selecionado tempo final", + timeRangeFormattedValueDesc: + "Tempo selecionado formatado de acordo com o formato especificado", + timeRangeFormattedStartValueDesc: + "Tempo de início formatado de acordo com o formato especificado", + timeRangeFormattedEndValueDesc: + "Tempo de fim formatado de acordo com o formato especificado", + }, + validationDesc: { + email: "Digite um endereço de email válido", + url: "Digite uma URL válida", + regex: "Digite o conteúdo que corresponde ao regex", + maxLength: + "Número excessivo de caracteres, comprimento atual {length}, comprimento máximo Não", + minLength: + "Número insuficiente de caracteres, comprimento atual {length}, comprimento mínimo Não", + maxValue: "Maior que o máximo, corrente {value}, máximo Não", + minValue: "Menos do que o mínimo, corrente {value}, mínimo Não", + maxTime: + "Maior que o tempo máximo, tempo atual {time}, o tempo máximo {maxTime}", + minTime: + "Menos do que o tempo mínimo, tempo atual {time}, o tempo mínimo {minTime}", + maxDate: "Maior que a data máxima, hora atual {date}, data máxima Não", + minDate: "Menos do que a data mínima, hora atual {date}, data mínima Não", + }, + query: { + noQueries: "Não há consultas disponíveis.", + queryTutorialButton: "Ver {value} documentos", + datasource: "Fontes de dados", + newDatasource: "Nova fonte de dados", + generalTab: "Geral", + notificationTab: "Notificação", + advancedTab: "Avançado", + showFailNotification: "Mostrar notificação sobre falha", + failCondition: "Condições de utilização", + failConditionTooltip1: + "Personaliza a condição de falha e a notificação correspondente.", + failConditionTooltip2: + "Se qualquer condição retornar verdadeira, a consulta será marcada como falha e desencadeia a notificação correspondente.", + showSuccessNotification: "Mostrar notificações sobre o sucesso", + successMessageLabel: "Mensagem de sucesso", + successMessage: "Executar sucesso", + notifyDuration: "Duração", + notifyDurationTooltip: + "Duração da notificação. Unidade de tempo pode ser s(segundo, padrão), ms(milissegundo). O valor padrão é {default}s. O máximo é {max}s.", + successMessageWithName: "{name} executar sucesso", + failMessageWithName: "a execução falhou. não", + showConfirmationModal: "Mostrar um modal de confirmação antes de executar", + confirmationMessageLabel: "Mensagem de confirmação", + confirmationMessage: "Tens a certeza que queres gerir esta consulta?", + newQuery: "Nova consulta", + newFolder: "Nova pasta", + recentlyUsed: "Recentemente usado", + folder: "Pasta", + folderNotEmpty: "A pasta não está vazia", + dataResponder: "Respondedor de dados", + tempState: "Estado temporário", + transformer: "Transformador", + quickRestAPI: "REST Query", + quickGraphql: "Query do GraphQL", + openblocksAPI: "API Openblocks", + executeJSCode: "Executar JavaScript Código", + importFromQueryLibrary: "Importação da Biblioteca de Consulta", + importFromFile: "Importação de arquivo", + triggerType: "Atraído quando", + triggerTypeAuto: "As entradas mudam ou na carga da página", + triggerTypePageLoad: "Carga na página", + triggerTypeManual: "Invocado manualmente", + chooseDataSource: "Fonte de dados", + method: "Método", + updateExceptionDataSourceTitle: "Atualização falha na fonte de dados", + updateExceptionDataSourceContent: + "Atualize a seguinte consulta com a mesma fonte de dados de falha:", + update: "Atualização", + disablePreparedStatement: "Desativar declarações preparadas", + disablePreparedStatementTooltip: + "Desativar declarações preparadas pode gerar SQL dinamicamente, mas arrisca a injeção SQL", + timeout: "Timeout após", + timeoutTooltip: + "Unidade padrão: ms, unidades de entrada suportadas: ms, s.\nValor padrão: {defaultSeconds} segundos\nValor máximo: {maxSeconds} segundos.\n\nPor exemplo, 300 (ou seja 300ms), 800ms, 5s.", + periodic: "Executar esta consulta periodicamente", + periodicTime: "Período", + periodicTimeTooltip: + "Período entre execuções sucessivas.\nUnidade padrão: ms, unidades de entrada suportadas: ms, s.\nValor mínimo: 100ms, execução periódica será desativada para valores abaixo disso.\n\nPor exemplo, 300 (ou seja 300ms), 800ms, 5s.", + cancelPrevious: + "Ignore os resultados das execuções não concluídas anteriores.", + cancelPreviousTooltip: "", + dataSourceStatusError: + "Se uma nova execução for desencadeada, o resultado das execuções não concluídas anteriores será ignorado se as execuções anteriores não forem concluídas, e as execuções ignoradas não provocarão a lista de eventos da consulta.", + success: "Sucesso", + fail: "Processo", + successDesc: "Acionado quando o sucesso da execução", + failDesc: "Acionado quando a execução falhou", + fixedDelayError: "Query não funciona", + execSuccess: "sucesso de execução", + execFail: "falhada", + execIgnored: "Os resultados desta consulta foram ignorados.", + deleteSuccessMessage: + "Excluído com sucesso. Você pode usar {undoKey} para desfazer.", + dataExportDesc: "Dados obtidos pela consulta atual", + codeExportDesc: "Código de status de consulta atual", + successExportDesc: "Se a consulta atual foi executada com sucesso", + messageExportDesc: "InformaçÃμes retornadas pela consulta atual", + extraExportDesc: "Outros dados na consulta atual", + isFetchingExportDesc: "É a consulta atual no pedido", + runTimeExportDesc: "Tempo atual de execução da consulta (ms)", + latestEndTimeExportDesc: "Último tempo de execução", + triggerTypeExportDesc: "Tipo de gatilho", + chooseResource: "Escolha um recurso", + createDataSource: "Criar uma nova fonte de dados", + editDataSource: "Editar", + datasourceName: "Nome", + datasourceNameRuleMessage: "Digite um nome de fonte de dados", + generalSetting: "Definições gerais", + advancedSetting: "Definições avançadas", + port: "Porto", + portRequiredMessage: "Por favor, insira uma porta", + portErrorMessage: "Digite uma porta correta", + connectionType: "Tipo de conexão", + regular: "Regular", + host: "Anfitrião", + hostRequiredMessage: "Digite um nome de domínio host ou endereço IP", + userName: "Nome do utilizador", + password: "Senha", + encryptedServer: "------ Criptografado no lado do servidor ---------", + uriRequiredMessage: "Por favor, insira um URI", + urlRequiredMessage: "Digite uma URL", + uriErrorMessage: "Digite um URI correto", + urlErrorMessage: "Digite uma URL correta", + httpRequiredMessage: "Digite http:// ou https://", + databaseName: "Nome do banco de dados", + databaseNameRequiredMessage: "Digite um nome de banco de dados", + useSSL: "Use SSL", + userNameRequiredMessage: "Digite seu nome", + passwordRequiredMessage: "Digite sua senha", + authentication: "Autenticação", + authenticationType: "Tipo de autenticação", + sslCertVerificationType: "SSL Verificação de Cert", + sslCertVerificationTypeDefault: "Verificar a CA Certeza", + sslCertVerificationTypeSelf: "Verificar o certificado auto-assinado", + sslCertVerificationTypeDisabled: "Deficientes", + selfSignedCert: "Cert auto-assinado", + selfSignedCertRequireMsg: "Insira o seu Certificado", + enableTurnOffPreparedStatement: + "Permite alternar declarações preparadas para consultas", + enableTurnOffPreparedStatementTooltip: + "Você pode ativar ou desativar as declarações preparadas na consulta A guia Avançada", + serviceName: "Nome do serviço", + serviceNameRequiredMessage: "Digite seu nome de serviço", + useSID: "Use o SID", + connectSuccessfully: "Conexão bem sucedida", + saveSuccessfully: "Salvo", + database: "Banco de dados", + cloudHosting: + "Cloud-hosted Openblocks não pode acessar seus serviços locais com 127.0.0.1 ou localhost. Tente conectar fontes de dados de rede pública ou usar um proxy inverso frente seus serviços privados.", + notCloudHosting: + "Para a implantação do docker hospedado, o Openblocks usa redes de ponte, então 127.0.0.1 e localhost são inválidos para endereços de host. Para visitar fontes de dados em sua máquina local, consulte esta", + howToAccessHostDocLink: "Como acessar a API/DB do host", + returnList: "Voltar", + chooseDatasourceType: "Escolha o tipo de fonte de dados", + viewDocuments: "Documentos", + testConnection: "Conexão de teste", + save: "Salvar", + whitelist: "Lista de permissões", + whitelistTooltip: + "Adicione os seguintes endereços IP de Openblocks à lista de permissões de origem de dados quando necessário.", + address: "Endereço:", + nameExists: "Nome {name} já existe", + jsQueryDocLink: "Sobre a consulta do JavaScript", + dynamicDataSourceConfigLoadingText: "Extra datasource config loading...", + dynamicDataSourceConfigErrText: + "Falha para carregar configuração de datasource extra.", + retry: "Repito", + }, + sqlQuery: { + keyValuePairs: "Par de valor-chave", + object: "Objeto", + allowMultiModify: "Permitir modificar multi-row", + allowMultiModifyTooltip: + "Se este parâmetro for selecionado, todas as linhas que atendem às condições são operadas. Caso contrário, apenas a primeira linha que atende às condições é operada", + array: "Array", + insertList: "Lista de inserção", + insertListTooltip: "Valor inserido quando não existe", + filterRule: "Regra de filtro", + updateList: "Lista de atualizações", + updateListTooltip: + "Valores atualizados como eles existem podem ser substituídos pelos mesmos valores de lista de inserção", + sqlMode: "Modo SQL", + guiMode: "Modo de interface", + operation: "Operação", + insert: "Inserção", + upsert: "Inserir, atualizar se conflito", + update: "Atualização", + delete: "Excluir", + bulkInsert: "Inserção em massa", + bulkUpdate: "Atualização em massa", + table: "Quadro", + primaryKeyColumn: "Coluna de chave primária", + }, + EsQuery: { + rawCommand: "Comando bruto", + queryTutorialButton: "Visualizar Elasticsearch Documentos de API", + request: "Solicitação", + }, + googleSheets: { + rowIndex: "Índice de linha", + spreadsheetId: "Folha de cálculo", + sheetName: "Nome da folha", + readData: "Ler dados", + appendData: "Linha do Anexo", + updateData: "Linha de atualização", + deleteData: "Excluir linha", + clearData: "Linha clara", + serviceAccountRequireMessage: "Insira sua Conta de Serviço", + ASC: "ASC", + DESC: "DESCRIÇÃO", + sort: "Tipo", + sortPlaceholder: "Nome", + }, + queryLibrary: { + export: "Exportar para JSON", + noInput: "A consulta atual não tem entrada", + inputName: "Nome", + inputDesc: "Descrição", + emptyInputs: "Sem entradas", + clickToAdd: "Adicionar", + chooseQuery: "Escolha a consulta", + viewQuery: "Ver consulta", + chooseVersion: "Escolha a versão", + latest: "Mais recentes", + publish: "Publicar", + historyVersion: "Histórico de versões", + deleteQueryLabel: "Excluir consulta", + deleteQueryContent: + "A consulta não pode ser recuperada após ser excluída. Excluir a consulta?", + run: "Corre", + readOnly: "Ler apenas", + exit: "Saída", + recoverAppSnapshotContent: + "Restaurar a consulta atual para a versão {version}", + searchPlaceholder: "Consulta de pesquisa", + allQuery: "Todas as perguntas", + deleteQueryTitle: "Excluir consulta", + unnamed: "Sem nome", + publishNewVersion: "Publicar nova versão", + publishSuccess: "Publicado", + version: "Versão", + desc: "Descrição", + }, + snowflake: { + accountIdentifierTooltip: "Ver", + extParamsTooltip: "Configurar mais parâmetros de conexão", + }, + openBlocksQuery: { queryOrgUsers: "Buscar usuários do workspace" }, + redisQuery: { + rawCommand: "Comando bruto", + command: "Comando", + queryTutorial: "Ver Redis Comandos documentos", + }, + httpQuery: { + bodyFormDataTooltip: + "Se você selecionar {type}, o formato do valor deve ser {object}. Exemplo: {example}", + text: "Texto", + file: "Arquivo", + extraBodyTooltip: + "Os valores-chave no corpo extra serão anexados no corpo com tipos de dados JSON ou Form", + forwardCookies: "Cookies externos", + forwardAllCookies: "Em frente a todos os cookies", + }, + smtpQuery: { + attachment: "Anexo", + attachmentTooltip: + "Pode usar com componente de upload de arquivos, precisa converter dados para:", + MIMETypeUrl: + "https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types", + sender: "Remetente", + recipient: "Recipiente", + carbonCopy: "Cópia de carbono", + blindCarbonCopy: "Cópia de carbono cega", + subject: "Assunto", + content: "Conteúdo", + contentTooltip: "Suporte para texto de entrada ou HTML", + }, + uiCompCategory: { + common: "Comumente usado", + dataInputText: "Entradas de texto", + dataInputNumber: "Número de entradas", + dataInputSelect: "Selecione entradas", + dataInputDate: "Entradas de data e hora", + button: "Botões", + dataDisplay: "Dados", + container: "Recipientes e formas", + other: "Outros", + }, + uiComp: { + inputCompName: "Entrada de texto", + inputCompDesc: "Componente de entrada", + inputCompKeywords: "texto", + textAreaCompName: "Área de texto", + textAreaCompDesc: "Componente de área de texto", + textAreaCompKeywords: "", + passwordCompName: "Senha", + passwordCompDesc: "Componente de senha", + passwordCompKeywords: "", + richTextEditorCompName: "Editor de texto rico", + richTextEditorCompDesc: "Componente Rich Text Editor", + richTextEditorCompKeywords: "", + numberInputCompName: "Entrada de número", + numberInputCompDesc: "Componente de entrada de número", + numberInputCompKeywords: "", + sliderCompName: "Slider", + sliderCompDesc: "Componente deslizante", + sliderCompKeywords: "", + rangeSliderCompName: "Slider de alcance", + rangeSliderCompDesc: "Gama Slider componente", + rangeSliderCompKeywords: "", + ratingCompName: "Classificação", + ratingCompDesc: "Componente de classificação", + ratingCompKeywords: "", + switchCompName: "Interruptor", + switchCompDesc: "Componente de interruptor", + switchCompKeywords: "", + selectCompName: "Selecione", + selectCompDesc: "Selecione o componente", + selectCompKeywords: "", + multiSelectCompName: "Seletor Múltiplo", + multiSelectCompDesc: "Componente multiselect", + multiSelectCompKeywords: "", + cascaderCompName: "Cascavel", + cascaderCompDesc: "Componente de cascata", + cascaderCompKeywords: "", + checkboxCompName: "Caixa de seleção", + checkboxCompDesc: "Componente da caixa de seleção", + checkboxCompKeywords: "", + radioCompName: "Rádio", + radioCompDesc: "Componente de rádio", + radioCompKeywords: "", + segmentedControlCompName: "Controle Segmentado", + segmentedControlCompDesc: "Componente de controle segmentado", + segmentedControlCompKeywords: "", + fileUploadCompName: "Upload de Arquivos", + fileUploadCompDesc: "Componente de upload de arquivos", + fileUploadCompKeywords: "", + dateCompName: "Data", + dateCompDesc: "Componente de data", + dateCompKeywords: "", + dateRangeCompName: "Faixa de data", + dateRangeCompDesc: "Componente Data Range", + dateRangeCompKeywords: "", + timeCompName: "Tempo", + timeCompDesc: "Componente de tempo", + timeCompKeywords: "", + timeRangeCompName: "Faixa de tempo", + timeRangeCompDesc: "Componente de intervalo de tempo", + timeRangeCompKeywords: "", + buttonCompName: "Botão", + buttonCompDesc: "Componente de botão", + buttonCompKeywords: "", + linkCompName: "Link", + linkCompDesc: "Componente de link", + linkCompKeywords: "", + scannerCompName: "Scanner", + scannerCompDesc: "Componente de scanner", + scannerCompKeywords: "", + dropdownCompName: "Dropdown", + dropdownCompDesc: "Componente de Dropdown", + dropdownCompKeywords: "", + toggleButtonCompName: "Botão de alavanca", + toggleButtonCompDesc: "Toggle Button componente", + toggleButtonCompKeywords: "", + textCompName: "Texto", + textCompDesc: "Componente de texto", + textCompKeywords: "", + tableCompName: "Quadro", + tableCompDesc: "Componente de tabela", + tableCompKeywords: "", + imageCompName: "Imagem", + imageCompDesc: "Componente de imagem", + imageCompKeywords: "", + progressCompName: "Progressos", + progressCompDesc: "Componente de progresso", + progressCompKeywords: "", + progressCircleCompName: "Círculo de Processo", + progressCircleCompDesc: "Componente de círculo de processo", + progressCircleCompKeywords: "", + fileViewerCompName: "Visualizador de arquivos", + fileViewerCompDesc: "Componente de visualização de arquivos", + fileViewerCompKeywords: "", + dividerCompName: "Divisor", + dividerCompDesc: "Componente do divisor", + dividerCompKeywords: "", + qrCodeCompName: "Código QR", + qrCodeCompDesc: "Componente de código QR", + qrCodeCompKeywords: "", + formCompName: "Formulário", + formCompDesc: "Componente do formulário", + formCompKeywords: "", + jsonSchemaFormCompName: "JSON Formulário de Schema", + jsonSchemaFormCompDesc: "JSON Schema Componente do formulário", + jsonSchemaFormCompKeywords: "", + containerCompName: "Container", + containerCompDesc: "Componente do recipiente", + containerCompKeywords: "", + collapsibleContainerCompName: "Recipiente dobrável", + collapsibleContainerCompDesc: "Componente do recipiente dobrável", + collapsibleContainerCompKeywords: "", + tabbedContainerCompName: "Recipiente de guia", + tabbedContainerCompDesc: "Componente do recipiente da tabuleta", + tabbedContainerCompKeywords: "", + modalCompName: "Modal", + modalCompDesc: "Componente Modal", + modalCompKeywords: "", + listViewCompName: "Visualização em lista", + listViewCompDesc: "Ver componentes em lista", + listViewCompKeywords: "", + gridCompName: "Moagem", + gridCompDesc: "Componente de grade", + gridCompKeywords: "", + navigationCompName: "Navegação", + navigationCompDesc: "Componente de navegação", + navigationCompKeywords: "", + iframeCompName: "IFrame", + iframeCompDesc: "Componente IFrame", + iframeCompKeywords: "", + customCompName: "Componente personalizado", + customCompDesc: "Componente personalizado", + customCompKeywords: "", + moduleCompName: "Módulo", + moduleCompDesc: "Componente do módulo", + moduleCompKeywords: "", + jsonExplorerCompName: "JSON Explorer", + jsonExplorerCompDesc: "JSON componente do Explorer", + jsonExplorerCompKeywords: "", + jsonEditorCompName: "Editor de JSON", + jsonEditorCompDesc: "JSON Componente do editor", + jsonEditorCompKeywords: "", + treeCompName: "Árvore", + treeCompDesc: "Componente de árvore", + treeCompKeywords: "", + treeSelectCompName: "Seletor em árvore", + treeSelectCompDesc: "Componente de seleção de árvores", + treeSelectCompKeywords: "", + audioCompName: "Áudio", + audioCompDesc: "Componente de áudio", + audioCompKeywords: "", + videoCompName: "Vídeo", + videoCompDesc: "Componente de vídeo", + videoCompKeywords: "", + drawerCompName: "Desenho", + drawerCompDesc: "Componente de gaveta", + drawerCompKeywords: "", + chartCompName: "Gráfico", + chartCompDesc: "Componente gráfico", + chartCompKeywords: "", + carouselCompName: "Carrossel", + carouselCompDesc: "Componente de carrossel", + carouselCompKeywords: "", + imageEditorCompName: "Editor de imagem", + imageEditorCompDesc: "Componente do editor da imagem", + imageEditorCompKeywords: "", + calendarCompName: "Calendário", + calendarCompDesc: "Componente do calendário", + calendarCompKeywords: "", + signatureCompName: "Assinatura", + signatureCompDesc: "Componente de assinatura", + signatureCompKeywords: "", + }, + comp: { + menuViewDocs: "Ver documentação", + menuUpgradeToLatest: "Atualizar para a versão mais recente", + nameNotEmpty: "Não pode ser vazio", + nameRegex: + "Deve começar com uma carta e conter apenas letras, dígitos e underscores (_)", + nameJSKeyword: "Não pode ser uma palavra-chave Javascript", + nameGlobalVariable: "Não pode ser um nome de variável global", + nameExists: "Nome {name} já existe", + getLatestVersionMetaError: + "Falhado em buscar a versão mais recente, tente mais tarde.", + needNotUpgrade: "A versão atual já é a mais recente.", + compNotFoundInLatestVersion: + "Componente atual não encontrado na versão mais recente.", + upgradeSuccess: "Com sucesso atualizado para a versão mais recente.", + searchProp: "Pesquisar", + }, + jsonSchemaForm: { + retry: "Repito", + resetAfterSubmit: "Restaurar após o envio bem sucedido", + jsonSchema: "JSON schema", + uiSchema: "UI schema", + schemaTooltip: "Ver", + defaultData: "Dados padrão", + dataDesc: "Dados do formulário atual", + required: "Requisitos", + maximum: "O valor máximo é {value}", + minimum: "O valor mínimo é {value}", + exclusiveMaximum: "Deve ser menos que {value}", + exclusiveMinimum: "Deve ser maior que {value}", + multipleOf: "Deve ser um múltiplo de {value}", + minLength: "Pelo menos {value} caracteres", + maxLength: "No máximo {value} caracteres", + pattern: "Deve combinar o padrão Não", + format: "Deve corresponder ao formato {value}", + }, + select: { inputValueDesc: "Valor de pesquisa de entrada" }, + customComp: { + text: "É um bom dia.", + triggerQuery: "Query do gatilho", + updateData: "Dados de atualização", + updateText: "Também estou de bom humor!", + sdkGlobalVarName: "Bloqueios abertos", + }, + tree: { + selectType: "Selecione o tipo", + noSelect: "Não selecione", + singleSelect: "Single select", + multiSelect: "Multi select", + checkbox: "Caixa de seleção", + checkedStrategy: "Estratégia verificada", + showAll: "Todos os nós", + showParent: "Apenas nós pais", + showChild: "Apenas nós de criança", + autoExpandParent: "Auto expandir pai", + checkStrictly: "Verificar estritamente", + checkStrictlyTooltip: + "Ver árvore Node precisamente; árvore paiNode e árvore de criançasNodos não estão associados", + treeData: "Dados da árvore", + treeDataDesc: "Dados da árvore atual", + value: "Valores padrão", + valueDesc: "Valores correntes", + expanded: "Valores expandidos", + expandedDesc: "Valores expandidos atuais", + defaultExpandAll: "Padrão expandir todos os nós", + showLine: "Linha de exibição", + showLeafIcon: "Mostrar ícone da folha", + treeDataAsia: "Ásia", + treeDataChina: "China", + treeDataBeijing: "Pequim", + treeDataShanghai: "Xangai", + treeDataJapan: "Japão", + treeDataEurope: "Europa", + treeDataEngland: "Inglaterra", + treeDataFrance: "França", + treeDataGermany: "Alemanha", + treeDataNorthAmerica: "América do Norte", + helpLabel: "Etiqueta de nó", + helpValue: "Valor de nó único na árvore", + helpChildren: "Nós de crianças", + helpDisabled: "Desativa o nó", + helpSelectable: "Se o nó é selecionável (single/multi select type)", + helpCheckable: "Se exibir caixa de seleção (tipo de caixa de seleção)", + helpDisableCheckbox: + "Desativa a caixa de seleção (tipo de caixa de seleção)", + }, + moduleContainer: { + eventTest: "Teste de Eventos", + methodTest: "Teste de método", + inputTest: "Teste de Entrada", + }, + password: { + label: "Senha", + visibilityToggle: "Mostrar mudança de visibilidade", + }, + richTextEditor: { + placeholder: "Por favor...", + hideToolbar: "Ocultar barra de ferramentas", + content: "Conteúdo", + title: "Título", + save: "Salvar", + link: "Link:", + edit: "Editar", + remove: "Remover", + }, + numberInput: { + formatter: "Formato", + precision: "Precisão", + allowNull: "Permitir valor nulo", + thousandsSeparator: "Mostrar separador de milhares", + controls: "Mostrar botões de incremento/decrement", + step: "Passo", + standard: "Padrão", + percent: "Percentagem", + }, + slider: { + step: "Passo", + stepTooltip: "O valor deve ser superior a 0 e divisível por (max-min)", + }, + rating: { max: "Classificação máxima", allowHalf: "Permitir metade" }, + optionsControl: { + optionList: "Opções", + option: "Opção", + optionI: "Opção", + viewDocs: "Ver documentos", + tip: 'As variáveis "item" e "i" representam o valor e índice de cada item no array de dados', + }, + radio: { + options: "Opções", + horizontal: "Horizontal", + horizontalTooltip: + "O layout horizontal envolve-se quando é executado fora do espaço", + vertical: "Vertical", + verticalTooltip: + "O layout vertical será sempre exibido em uma única coluna", + autoColumns: "Coluna automática", + autoColumnsTooltip: + "O layout da coluna automática reorganiza automaticamente a ordem como o espaço permite e exibe como várias colunas", + }, + cascader: { options: "Estrutura" }, + selectInput: { + valueDesc: "Valor selecionado atualmente", + selectedIndexDesc: + "O índice do valor selecionado atualmente, ou -1 se nenhum valor for selecionado", + selectedLabelDesc: "A etiqueta do valor selecionado atualmente", + }, + file: { + typeErrorMsg: + "Deve ser um número com uma unidade de tamanho de arquivo válida, ou um número sem unidade de bytes.", + fileEmptyErrorMsg: "o upload falhou. O tamanho do arquivo está vazio.", + fileSizeExceedErrorMsg: + "o upload falhou. O tamanho do arquivo excede o limite.", + minSize: "Tamanho mínimo", + minSizeTooltip: + 'O tamanho mínimo de arquivos carregados com unidades de tamanho de arquivo opcionais (por exemplo, "5kb", "10 MB"). Se nenhuma unidade for fornecida, o valor será considerado um número de bytes.', + maxSize: "Tamanho máximo", + maxSizeTooltip: + 'O tamanho máximo de arquivos carregados com unidades de tamanho de arquivo opcionais (por exemplo, "5kb", "10 MB"). Se nenhuma unidade for fornecida, o valor será considerado um número de bytes.', + single: "Único", + multiple: "Múltiplos", + directory: "Diretório", + upload: "Navegar", + fileType: "Tipos de arquivo", + reference: "Por favor, consulte", + fileTypeTooltipUrl: + "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#unique_file_type_specifiers", + fileTypeTooltip: "especifiers de tipo de arquivo único", + uploadType: "Tipo de upload", + showUploadList: "Mostrar lista de upload", + maxFiles: "Arquivos máximos", + filesValueDesc: + "O conteúdo do arquivo atualmente carregado é o Base64 codificado", + filesDesc: "Lista dos arquivos enviados atuais. Para detalhes, consulte", + clearValueDesc: "Limpar todos os arquivos", + parseFiles: "Arquivos de Parse", + parsedValueTooltip1: + "Se o parseFiles for verdadeiro, os arquivos de upload serão analisados para objeto, array ou string. Os dados parsed podem ser acessados através do array parsedValue.", + parsedValueTooltip2: + "Suporta arquivos de Excel, JSON, CSV e texto. Outros formatos voltarão nulos.", + }, + date: { + format: "Formato", + formatTip: "Suporte:\nYYY-MM-DD HH:\nYYY-MM-DD\nTemporada", + reference: "Por favor, consulte", + showTime: "Mostrar tempo", + start: "Data de início", + end: "Data final", + year: "Ano", + quarter: "Bairro", + month: "Mês", + week: "Semana", + date: "Data", + clearAllDesc: "Limpar tudo", + resetAllDesc: "Restaurar tudo", + placeholder: "Selecione data", + startDate: "Data de início", + endDate: "Data final", + }, + time: { + start: "Tempo de início", + end: "Tempo final", + formatTip: "Suporte:\nHH:\nTemporada", + placeholder: "Selecione o tempo", + startTime: "Tempo de início", + endTime: "Tempo final", + }, + button: { + prefixIcon: "Ícone do prefixo", + suffixIcon: "Ícone do sufixo", + button: "Botão", + formToSubmit: "Formulário de envio", + default: "Padrão", + submit: "Submeter-me", + textDesc: "Texto atualmente exibido no botão", + loadingDesc: + "O botão no estado de carregamento? Se for verdade, o botão atual está carregando", + formButtonEvent: "evento", + }, + link: { + link: "Link", + textDesc: "Texto exibido no link", + loadingDesc: + "O link no estado de carregamento? Se for verdade, o link atual está carregando", + }, + scanner: { + text: "Clique na verificação", + camera: "Câmara", + changeCamera: "Câmera de interruptor", + continuous: "Digitalização contínua", + uniqueData: "Ignorar dados duplicados", + maskClosable: "Clique na máscara para fechar", + errTip: "Por favor, use este componente em https ou localhost", + }, + dropdown: { + onlyMenu: "Apenas menu", + textDesc: "Texto atualmente exibido no botão", + }, + textShow: { + text: "olá", + valueTooltip: + "O Markdown suporta a maioria das tags e atributos HTML. iframe, script e outras tags são desativadas por razões de segurança.", + verticalAlignment: "Alinhamento vertical", + horizontalAlignment: "Alinhamento horizontal", + textDesc: "Texto exibido na caixa de texto atual", + }, + table: { + editable: "Editável", + columnNum: "Colunas", + viewModeResizable: "Largura da coluna ajustada pelo usuário", + viewModeResizableTooltip: "Se pode ajustar a largura da coluna.", + showFilter: "Mostrar botão de filtro", + showRefresh: "Mostrar botão de atualização", + showDownload: "Mostrar botão de download", + columnSetting: "Mostrar botão de configuração da coluna", + searchText: "Texto de pesquisa", + searchTextTooltip: "Pesquisar e filtrar os dados apresentados na tabela", + showQuickJumper: "Mostrar salto rápido", + hideOnSinglePage: "Esconder na página única", + showSizeChanger: "Mostrar botão de mudança de tamanho", + pageSizeOptions: "Opções de tamanho da página", + pageSize: "Tamanho da página", + total: "Total contagem de linhas", + totalTooltip: + "O valor padrão é o número de itens de dados atuais, que podem ser obtidos a partir da consulta, por exemplo: '", + filter: "Filtro", + filterRule: "Regra de filtro", + chooseColumnName: "Escolha a coluna", + chooseCondition: "Escolha a condição", + clear: "Livre", + columnShows: "Mostra de coluna", + selectAll: "Selecione tudo", + and: "E", + or: "Ou", + contains: "contém", + notContain: "não contém", + equals: "igualdades", + isNotEqual: "não é igual", + isEmpty: "está vazio", + isNotEmpty: "não está vazio", + greater: "maior do que", + greaterThanOrEquals: "superior ou igual", + lessThan: "menos do que", + lessThanOrEquals: "menos ou iguais", + action: "Acção", + columnValue: "Valor da coluna", + columnValueTooltip: + "'{{currentCell}}': dados de células atuais\n'{{currentRow}}': dados atuais da linha\n'{{currentIndex}}': índice de dados atual (começando de 0)\nExemplo: '{{currentCell * 5}}' mostrar 5 vezes os dados do valor original.", + imageSrc: "Fonte de imagem", + imageSize: "Tamanho da imagem", + columnTitle: "Título", + sortable: "Classificação", + align: "Alinhamento", + fixedColumn: "Coluna fixa", + autoWidth: "Largura automática", + customColumn: "Coluna personalizada", + auto: "Automática", + fixed: "Fixa", + columnType: "Tipo de coluna", + text: "Texto", + link: "Link", + links: "Links", + tag: "Tag Tag", + date: "Data", + dateTime: "Data de hora", + badgeStatus: "Estado", + button: "Botão", + image: "Imagem", + boolean: "Boole", + rating: "Classificação", + progress: "Progressos", + option: "Operação", + optionList: "Lista de operações", + option1: "Operação 1", + status: "Estado", + statusTooltip: + "Valores opcionais: sucesso, erro, padrão, aviso, processamento", + primaryButton: "Primário", + defaultButton: "Padrão", + type: "Tipo", + tableSize: "Tamanho da tabela", + hideHeader: "Ocultar cabeçalho da tabela", + hideBordered: "Ocultar a borda da coluna", + deleteColumn: "Excluir coluna", + confirmDeleteColumn: "Confirme a coluna de exclusão:", + small: "S", + middle: "M", + large: "L", + refreshButtonTooltip: + "Os dados atuais mudam, clique para regenerar a coluna.", + changeSetDesc: + "Um objeto que representa mudanças em uma tabela editável contém apenas a célula alterada. As linhas vão primeiro e as colunas vão em segundo.", + selectedRowDesc: + "Fornece dados para a linha selecionada atualmente, indicando a linha que desencadeia um evento de clique se o usuário clicar em um botão/link na linha", + selectedRowsDesc: + "Útil no modo de seleção múltipla, mesmo que selecionado Linha", + pageNoDesc: "Página de exibição atual, a partir de 1", + pageSizeDesc: "Quantas linhas por página", + sortColumnDesc: "O nome da coluna ordenada atualmente selecionada", + sortDesc: "Se a linha atual está em ordem decrescente", + pageOffsetDesc: + "O início atual de paging, usado para paging para obter dados. Exemplo: select * from users limit '{{table1.pageSize}}' offset '{{table1.pageOffset}} '", + displayDataDesc: "Dados exibidos na tabela atual", + selectedIndexDesc: "Índice selecionado em dados de exibição", + filterDesc: "Parâmetros de filtragem de tabela", + dataDesc: "Os dados brutos utilizados na tabela atual", + saveChanges: "Salvar alterações", + cancelChanges: "Cancelar alterações", + rowSelectChange: "Alteração da linha", + rowClick: "Clique em linha", + filterChange: "Alteração do filtro", + sortChange: "Alteração de classificação", + pageChange: "Mudança de página", + refresh: "Atualizar", + rowColor: "Cor da linha", + rowColorDesc: + "Definir condicionalmente a cor da linha com base nas variáveis opcionais:\natualRow, atualIndex Original, atualIndex, columnTitle.\nPor exemplo:\n' '", + saveChangesNotBind: + "Nenhum manipulador de eventos configurado para salvar alterações. Por favor, ligue pelo menos um manipulador de eventos antes de clicar.", + dynamicColumn: "Use a configuração dinâmica da coluna", + dynamicColumnConfig: "Configuração de coluna", + dynamicColumnConfigDesc: + 'Configurações de coluna dinâmicas. Aceita um conjunto de nomes de colunas. Todas as colunas são visíveis por padrão.\nExemplo: ["id", "name"]', + position: "Posição", + showDataLoadSpinner: "Mostrar spinner durante o carregamento de dados", + showValue: "Mostrar valor", + expandable: "Expansível", + configExpandedView: "Configurar visualização expandida", + toUpdateRowsDesc: + "Uma variedade de objetos para linhas a serem atualizadas em tabelas editáveis.", + empty: "Vazio", + falseValues: "Texto quando falso", + allColumn: "Todos", + visibleColumn: "Visível", + emptyColumns: "Nenhuma coluna é atualmente visível", + }, + image: { + src: "Fonte de imagem", + srcDesc: "Fonte de imagem", + supportPreview: "Suporte clique de visualização", + supportPreviewTip: "Eficaz quando a fonte de imagem é válida", + }, + progress: { + value: "Valor", + valueTooltip: "A porcentagem completa como valor entre 0 e 100", + showInfo: "Mostrar valor", + valueDesc: "Valor de progresso atual, variando de 0 a 100", + showInfoDesc: "Se mostrar o valor de progresso atual", + }, + fileViewer: { + invalidURL: "Uma URL válida não foi fornecida", + src: "Arquivo URI", + srcTooltip: + "Visualizar o conteúdo do link fornecido pela incorporação de dados HTML, base64 codificados também pode ser suportado, por exemplo: dados:application/pdf; base64,AAAA... CCC", + srcDesc: "O arquivo URI", + }, + divider: { + title: "Título", + align: "Alinhamento", + dashed: "Dashed", + dashedDesc: "Se usar linha tracejada", + titleDesc: "Título do divisor", + alignDesc: "Alinhamento do título do divisor", + }, + QRCode: { + value: "Valor", + valueTooltip: "O valor contém um máximo de 2953 caracteres", + level: "Nível de tolerância padrão", + levelTooltip: + "Refere-se ao código QR é parte bloqueada, ainda pode ser digitalizada. Quanto maior o nível, mais complexo o código, e quanto mais bloqueado for, mais ele pode ser digitalizado", + includeMargin: "Mostrar margem", + image: "Imagem", + valueDesc: "O valor qrCode", + L: "L (Low)", + M: "M (médio)", + Q: "Q (Quartil)", + H: "H (alto)", + maxLength: + "O conteúdo é muito longo. Defina o comprimento para menos de 2953 caracteres", + }, + jsonExplorer: { + indent: "Identificação", + expandToggle: "Expandir a alavanca", + theme: "Tema", + valueDesc: "Dados atuais do json", + default: "Padrão", + defaultDark: "Padrão escuro", + neutralLight: "Luz neutra", + neutralDark: "Escuro neutro", + azure: "Azure", + darkBlue: "Azul escuro", + }, + audio: { + src: "URL de áudio", + defaultSrcUrl: "https://cdn-files.openblocks.dev/canon-excerpt.mp3", + autoPlay: "Autoplay", + loop: "Loop", + srcDesc: "URL de áudio atual", + play: "Jogar", + playDesc: "Acionado quando o áudio é jogado", + pause: "Pausa", + pauseDesc: "Acionado quando o áudio é pausado", + ended: "Fim", + endedDesc: "Acionado quando o áudio termina jogando", + }, + video: { + src: "URL de vídeo", + defaultSrcUrl: "https://www.youtube.com/watch?v=pRpeEdMmmQ0", + poster: "URL do Poster", + defaultPosterUrl: "", + autoPlay: "Autoplay", + loop: "Loop", + controls: "Ocultar controles", + volume: "Volume", + playbackRate: "Taxa de reprodução", + posterTooltip: "O valor padrão é o primeiro quadro do vídeo", + autoPlayTooltip: + "Depois que o vídeo é carregado, ele vai jogar automaticamente. Mudar esse valor de true para false vai pausar o vídeo. (Se um cartaz é definido, ele será jogado pelo botão do cartaz)", + controlsTooltip: + "Esconder controles de reprodução de vídeo. Pode não ser totalmente suportado por cada fonte de vídeo.", + volumeTooltip: "Defina o volume do jogador, entre 0 e 1", + playbackRateTooltip: "Defina a taxa do jogador, entre 1 e 2", + srcDesc: "URL de vídeo atual", + play: "Jogar", + playDesc: "Acionado quando o vídeo é jogado", + pause: "Pausa", + pauseDesc: "Acionado quando o vídeo é pausado", + load: "Carga", + loadDesc: "Acionado quando o recurso de vídeo terminou o carregamento", + ended: "Fim", + endedDesc: "Acionado quando o vídeo termina jogando", + currentTimeStamp: "A posição de reprodução atual do vídeo em segundos", + duration: "A duração total do vídeo em segundos", + }, + media: { + playDesc: "Começa a reprodução da mídia.", + pauseDesc: "Pausa a reprodução da mídia.", + loadDesc: + "Resta a mídia ao início e reinicie selecionando o recurso de mídia.", + seekTo: + "Procure o número dado de segundos, ou fração se o valor for entre 0 e 1", + seekToAmount: "Número de segundos, ou fração se for entre 0 e 1", + showPreview: "Mostrar prévia", + }, + rangeSlider: { + start: "Valor de início", + end: "Valor final", + step: "Tamanho do passo", + stepTooltip: + "A granularidade do controle deslizante, o valor deve ser maior que 0 e divisível por (max-min)", + }, + iconControl: { + selectIcon: "Selecione um ícone", + insertIcon: "inserir um ícone", + insertImage: "Insira uma imagem ou", + }, + millisecondsControl: { + timeoutTypeError: + "Digite o período de tempo limite correto, a entrada atual é: {value}", + timeoutLessThanMinError: + "Entrada deve maior que {left}, a entrada atual é: {value}", + }, + selectionControl: { + single: "Único", + multiple: "Múltiplos", + close: "Fechar", + mode: "Selecione o modo", + }, + container: { title: "Título do recipiente" }, + drawer: { + placement: "Colocação de gaveta", + size: "Tamanho", + top: "Topo", + right: "Certo", + bottom: "Fundo", + left: "Esquerda", + widthTooltip: "Número ou percentagem, por exemplo, 520, 60%", + heightTooltip: "Número, por exemplo, 378", + openDrawerDesc: "Desenho aberto", + closeDrawerDesc: "Fechar gaveta", + width: "Largura de gaveta", + height: "Altura do desenho", + }, + settings: { + title: "Configurações", + member: "Membros", + organization: "Espaços de trabalho", + audit: "Logs de Auditoria", + theme: "Temas", + plugin: "Plugins", + advanced: "Avançado", + lab: "Laboratório", + branding: "Marcação", + idSource: "Provedores de ID", + premium: "Premium", + }, + memberSettings: { + admin: "Administrador", + adminGroupRoleInfo: "Admin pode gerenciar membros do grupo e recursos", + adminOrgRoleInfo: "Possuir todos os recursos e pode gerenciar grupos.", + member: "Membro", + memberGroupRoleInfo: "Membro pode ver membros do grupo", + memberOrgRoleInfo: "Só podem usar ou visitar recursos que têm acesso.", + title: "Membros", + createGroup: "Criar grupo", + newGroupPrefix: "Novo grupo", + allMembers: "Todos os membros", + deleteModalTitle: "Excluir este grupo", + deleteModalContent: + "O grupo excluído não pode ser restaurado. Tem certeza de excluir o grupo?", + addMember: "Adicionar membros", + nameColumn: "Nome do utilizador", + joinTimeColumn: "Tempo de adesão", + actionColumn: "Operação", + roleColumn: "Papel", + exitGroup: "Grupo de saída", + moveOutGroup: "Remover do grupo", + inviteUser: "Convidar os membros", + exitOrg: "Deixa-me ir", + exitOrgDesc: "Tens a certeza que queres deixar este espaço de trabalho.", + moveOutOrg: "Remover", + moveOutOrgDescSaasMode: + "Tem certeza de que deseja remover o usuário {name} deste workspace?", + moveOutOrgDesc: + "Tem certeza de que deseja remover o usuário {name}? Esta ação não pode ser recuperada.", + devGroupTip: + "Os membros do grupo desenvolvedor têm privilégios para criar aplicativos e fontes de dados.", + lastAdminQuit: "O último administrador não pode sair.", + organizationNotExist: "O espaço de trabalho atual não existe", + inviteUserHelp: "Você pode copiar o link de convite para enviar ao usuário", + inviteUserLabel: "Convite:", + inviteCopyLink: "Link de cópia", + inviteText: + '{userName} convida você a se juntar ao workspace "{organization}", Clique no link para se juntar: {inviteLink}', + groupName: "Nome do grupo", + createTime: "Criar tempo", + manageBtn: "Gerenciar", + userDetail: "Detalhe", + syncDeleteTip: "Este grupo foi excluído da fonte do livro de endereços", + syncGroupTip: + "Este grupo é um grupo de sincronização de livro de endereços e não pode ser editado", + }, + orgSettings: { + newOrg: "Novo espaço de trabalho", + title: "Espaço de trabalho", + createOrg: "Criar espaço de trabalho", + deleteModalTitle: "Tem certeza de apagar este espaço de trabalho?", + deleteModalContent: + "Você está prestes a excluir este workspace {permanentlyDelete}. Uma vez excluído, o workspace {notRestored}.", + permanentlyDelete: "permanentemente permanentemente", + notRestored: "não pode ser restaurado", + deleteModalLabel: + "Digite o nome do workspace{name} para confirmar a operação:", + deleteModalTip: "Digite o nome do workspace", + deleteModalErr: "O nome do workspace está incorreta", + deleteModalBtn: "Excluir", + editOrgTitle: "Editar informações do workspace", + orgNameLabel: "Nome do espaço de trabalho:", + orgNameCheckMsg: "O nome do espaço de trabalho não pode estar vazio", + orgLogo: "Logotipo do workspace:", + logoModify: "Modificar imagem", + inviteSuccessMessage: "Junte-se ao espaço de trabalho com sucesso", + inviteFailMessage: "Falhado para se juntar ao workspace", + uploadErrorMessage: "Carregar erro", + orgName: "Nome do espaço de trabalho", + }, + freeLimit: "Teste gratuito", + tabbedContainer: { + switchTab: "Aba do interruptor", + switchTabDesc: "Acionado ao alternar guias", + tab: "Tabs", + atLeastOneTabError: "O recipiente Tab mantém pelo menos um Tab", + selectedTabKeyDesc: "Atualmente selecionado TAB", + iconPosition: "Posição do ícone", + }, + formComp: { + containerPlaceholder: "Arraste componentes do painel direito ou", + openDialogButton: "gerar formulário de dados", + resetAfterSubmit: "Restaurar após o envio bem sucedido", + initialData: "Dados iniciais", + disableSubmit: "Desativar a submissão", + success: "Forma gerada com sucesso", + selectCompType: "Selecione o tipo de componente", + dataSource: "Fonte de dados:", + selectSource: "Selecione a fonte", + table: "Quadro:", + selectTable: "Selecione a tabela", + columnName: "Nome da coluna", + dataType: "Tipo de dados", + compType: "Tipo de componente", + required: "Requisitos", + generateForm: "Forma de geração", + compSelectionError: "Tipo de coluna não configurado", + compTypeNameError: "Não conseguiu obter o nome do tipo componente", + noDataSourceSelected: "Nenhuma fonte de dados selecionada", + noTableSelected: "Nenhuma tabela selecionada", + noColumn: "Nenhuma coluna", + noColumnSelected: "Nenhuma coluna selecionada", + noDataSourceFound: + "Nenhuma fonte de dados suportada encontrada. Criar uma nova fonte de dados", + noTableFound: + "Nenhuma tabela foi encontrada nesta fonte de dados, selecione outra fonte de dados", + noColumnFound: + "Nenhuma coluna suportada foi encontrada nesta tabela. Por favor, selecione outra tabela", + formTitle: "Título do formulário", + name: "Nome", + nameTooltip: + "O nome do atributo nos dados do formulário, quando deixado em branco, padrão para o nome do componente", + notSupportMethod: "Métodos não suportados:", + notValidForm: "O formulário não é válido", + resetDesc: "Restaurar os dados do formulário ao valor padrão", + clearDesc: "Dados de formulário claros", + setDataDesc: "Definir dados de formulário", + valuesLengthError: "Erro do número do parâmetro", + valueTypeError: "Erro do tipo parâmetro", + dataDesc: "Dados do formulário atual", + loadingDesc: "Se o formulário está carregando?", + }, + modalComp: { + close: "Fechar", + closeDesc: "Acionado quando a caixa de diálogo é fechada", + openModalDesc: "Abra a caixa de diálogo", + closeModalDesc: "Feche a caixa de diálogo", + visibleDesc: + "É visível? Se for verdade, a caixa de diálogo atual aparecerá", + modalHeight: "Altura Modal", + modalHeightTooltip: "Número, exemplo: 222", + modalWidth: "Largura Modal", + modalWidthTooltip: "Número ou porcentagem, exemplo: 520, 60%", + }, + listView: { + noOfRows: "Contagem de linha", + noOfRowsTooltip: + "Número de linhas na lista - Isso geralmente é definido como uma variável (por exemplo, '{{query1.data.length}}') se você precisar apresentar os resultados de uma consulta.", + noOfColumns: "Contagem de coluna", + itemIndexName: "Nome do índice de Item", + itemIndexNameDesc: + "o nome variável refere-se ao índice do item, padrão como {default}", + itemDataName: "Nome de dados do item", + itemDataNameDesc: + "o nome variável refere-se ao objeto de dados do item, padrão como {default}", + itemsDesc: "Expondo dados de Comps na lista", + dataDesc: "Os dados brutos utilizados na lista atual", + dataTooltip: + "Se avaliado como Número, este campo será considerado como contagem de linhas, e os dados serão considerados vazios.", + }, + navigation: { + addText: "Adicionar item de submenu", + logoURL: "URL do logotipo", + horizontalAlignment: "Alinhamento horizontal", + logoURLDesc: "Valor da URL do logotipo", + itemsDesc: "Artigos do menu de navegação", + }, + iframe: { + URLDesc: "A URL de origem", + allowDownload: "Downloads", + allowSubmitForm: "Formulário", + allowMicrophone: "Microfone", + allowCamera: "Câmara", + allowPopup: "Popups", + }, + droppadbleMenuItem: { subMenu: "Submenu (0)" }, + navItemComp: { active: "Activo" }, + switchComp: { + open: "Abrir", + close: "Fechar", + openDesc: "Acionado quando o interruptor é ligado", + closeDesc: "Acionado quando o interruptor é desligado", + valueDesc: "Situação do interruptor de corrente", + }, + signature: { + tips: "Dicas", + signHere: "Assine aqui", + showUndo: "Mostrar tudo", + showClear: "Mostrar claro", + }, + localStorageComp: { + valueDesc: "Todos os itens de dados armazenados atualmente", + setItemDesc: "Adicionar um item", + removeItemDesc: "Remover um item", + clearItemDesc: "Limpar todos os itens", + }, + utilsComp: { + openUrl: "URL aberta", + openApp: "Abrir App", + copyToClipboard: "Copiar para clipboard", + downloadFile: "Baixar arquivo", + }, + messageComp: { + info: "Enviar uma notificação", + success: "Enviar uma notificação de sucesso", + warn: "Enviar uma notificação de aviso", + error: "Enviar uma notificação de erro", + }, + themeComp: { switchTo: "Tema de interruptor" }, + transformer: { + preview: "Prévia", + docLink: "Sobre o transformador", + previewSuccess: "Sucesso", + previewFail: "Falha", + deleteMessage: + "Excluir o sucesso do transformador. Você pode usar {undoKey} para desfazer.", + }, + temporaryState: { + value: "Valor de entrada", + valueTooltip: + "O valor inicial armazenado no estado temporário pode ser qualquer valor JSON válido.", + docLink: "Sobre o estado temporário", + pathTypeError: "O caminho deve ser uma string ou uma matriz de valores", + unStructuredError: + "Dados não estruturados {prev} não podem ser atualizados por {path}", + valueDesc: "Valor do estado temporário", + deleteMessage: + "O estado temporário é excluído com sucesso. Você pode usar {undoKey} para desfazer.", + }, + dataResponder: { + data: "Dados", + dataDesc: "Dados de resposta de dados atual", + dataTooltip: + "Quando esses dados forem alterados, ele irá desencadear ações subseqüentes.", + docLink: "Sobre o socorrista de dados", + deleteMessage: + "O socorrista de dados é excluído com sucesso. Você pode usar {undoKey} para desfazer.", + }, + theme: { + title: "Temas", + createTheme: "Criar tema", + themeName: "Nome do tema:", + themeNamePlaceholder: "Digite um nome de tema", + defaultThemeTip: "Tema padrão:", + createdThemeTip: "O tema que você criou:", + option: "Opção", + input: "Entrada", + confirm: "Ok", + emptyTheme: "Sem temas disponíveis", + click: "", + toCreate: "", + nameColumn: "Nome", + defaultTip: "Padrão", + updateTimeColumn: "Atualizado em", + edit: "Editar", + cancelDefaultTheme: "Tema padrão não definido", + setDefaultTheme: "Definir como tema padrão", + copyTheme: "Tema duplicado", + setSuccessMsg: "Definir sucesso", + cancelSuccessMsg: "Desajustar conseguiu", + deleteSuccessMsg: "A exclusão sucedeu", + checkDuplicateNames: "O nome do tema já existe, por favor re-enter-lo", + copySuffix: "Entendido", + saveSuccessMsg: "Salvou com sucesso", + leaveTipTitle: "Dicas", + leaveTipContent: "Ainda não salvaste, confirmaste a partida?", + leaveTipOkText: "Deixa-me ir", + goList: "Voltar à lista", + saveBtn: "Salvar", + mainColor: "Cores principais", + text: "Cores de texto", + defaultTheme: "Padrão", + yellow: "Amarelo", + green: "Verde", + previewTitle: + "Visualização do tema\nExemplo de componentes que usam suas cores temáticas", + dateColumn: "Data", + emailColumn: "Email", + phoneColumn: "Telefone", + subTitle: "Título", + linkLabel: "Link", + linkUrl: "cloud.openblocks.dev", + progressLabel: "Progressos", + sliderLabel: "Slider", + radioLabel: "Rádio", + checkboxLabel: "Caixa de seleção", + buttonLabel: "Botão", + switch: "Interruptor", + previewDate: "16/10/2022", + previewEmail1: "ted.com", + previewEmail2: "o que fazer", + previewEmail3: "injeção de plástico", + previewEmail4: "globo.com", + previewPhone1: "+63-317-333-0093", + previewPhone2: "+30-668-580-6521", + previewPhone3: "+86-369-925-2071", + previewPhone4: "+7-883-227-8093", + chartPreviewTitle: "Visualização de estilo gráfico", + chartSpending: "Spending", + chartBudget: "Orçamento", + chartAdmin: "Administração", + chartFinance: "Finanças", + chartSales: "Vendas", + chartFunnel: "Gráfico de Funil", + chartShow: "Mostrar", + chartClick: "Clique em", + chartVisit: "Visita", + chartQuery: "Query", + chartBuy: "Comprar", + }, + pluginSetting: { + title: "Plugins", + npmPluginTitle: "plugins npm", + npmPluginDesc: + "Configure plugins npm para todas as aplicações no espaço de trabalho atual.", + npmPluginEmpty: "Nenhum plugin npm foi adicionado.", + npmPluginAddButton: "Adicionar um plugin npm", + saveSuccess: "Salvou com sucesso", + }, + advanced: { + title: "Avançado", + defaultHomeTitle: "Página inicial padrão", + defaultHomeHelp: + "A página inicial é o aplicativo que todos os não-desenvolvedores verão por padrão quando eles entram. Nota: Certifique-se de que o aplicativo selecionado é acessível a não-desenvolvedores.", + defaultHomePlaceholder: "Selecione a página inicial padrão", + saveBtn: "Salvar", + preloadJSTitle: "JavaScript carregado previamente", + preloadJSHelp: + "Configure o código JavaScript pré-carregado para todos os aplicativos no espaço de trabalho atual.", + preloadCSSTitle: "CSS carregado previamente", + preloadCSSHelp: + "Configure o código CSS pré-carregado para todos os aplicativos no espaço de trabalho atual.", + preloadCSSApply: "Aplicar na página inicial do workspace", + preloadLibsTitle: "Biblioteca de JavaScript", + preloadLibsHelp: + "Configure bibliotecas JavaScript pré-carregadas para todas as aplicações no espaço de trabalho atual, e o sistema tem lodash incorporado, moment, uuid, numbro para uso direto. As bibliotecas de JavaScript são carregadas antes que o aplicativo seja inicializado, então há um certo impacto no desempenho do aplicativo.", + preloadLibsEmpty: "Nenhuma biblioteca JavaScript foi adicionada", + preloadLibsAddBtn: "Adicionar uma biblioteca", + saveSuccess: "Salvou com sucesso", + }, + branding: { + title: "Marcação", + logoTitle: "Logotipo", + logoHelp: ".JPG, .SVG ou .PNG somente", + faviconTitle: "Favicon", + faviconHelp: ".JPG, .SVG ou .PNG somente", + brandNameTitle: "Nome da marca", + headColorTitle: "Cor da cabeça", + save: "Salvar", + saveSuccessMsg: "Salvou com sucesso", + upload: "Clique para fazer upload", + }, + networkMessage: { + "0": "Falhado para se conectar ao servidor, verifique sua rede", + "401": "Autenticação falhada, por favor, faça login novamente", + "403": + "Sem permissão, entre em contato com o administrador para autorização", + "500": "Serviço ocupado, tente novamente mais tarde", + timeout: "Solicitar tempo limite", + }, + share: { + title: "Compartilhar", + viewer: "Visualizador", + editor: "Editor", + owner: "Proprietário", + datasourceViewer: "Pode usar", + datasourceOwner: "Pode gerir", + }, + debug: { title: "Título", switch: "Componente do interruptor:" }, + module: { + emptyText: "Sem dados", + circularReference: + "Referência circular, módulo atual / aplicativo não pode ser usado!", + emptyTestInput: "O módulo atual não tem entrada para testar", + emptyTestMethod: "O módulo atual não tem nenhum método para testar", + name: "Nome", + input: "Entrada", + params: "Params", + emptyParams: "Nenhum parâmetro foi adicionado", + emptyInput: "Nenhuma entrada foi adicionada", + emptyMethod: "Nenhum método foi adicionado", + emptyOutput: "Nenhuma saída foi adicionada", + data: "Dados", + string: "String", + number: "Número", + array: "Array", + boolean: "Boole", + query: "Query", + autoScaleCompHeight: "Escalas de altura componentes com recipiente", + excuteMethod: "Método de execução Não", + method: "Método", + action: "Acção", + output: "Saída", + nameExists: "Nome {name} já existe", + eventTriggered: "Evento {name} é acionado", + globalPromptWhenEventTriggered: + "Exibe um prompt global quando um evento é acionado", + emptyEventTest: "O módulo atual não tem eventos para testar", + emptyEvent: "Nenhum evento foi adicionado", + event: "Evento", + }, + resultPanel: { + returnFunction: "O valor de retorno é uma função.", + consume: "{time}", + JSON: "Mostrar JSON", + }, + createAppButton: { creating: "Criando...", created: "Criar" }, + apiMessage: { + authenticationFail: + "Autenticação do usuário falhou, por favor inicie novamente", + verifyAccount: "Precisa verificar a conta", + functionNotSupported: + "A versão atual não suporta esta função. Entre em contato com a equipe de negócios do Openblocks para atualizar sua conta", + }, + globalErrorMessage: { + createCompFail: "Criar componente {comp} falhou", + notHandledError: "{method} método não executado", + }, + aggregation: { + navLayout: "Barra de navegação", + chooseApp: "Escolha o aplicativo", + iconTooltip: "Link de imagem de suporte ou Base64", + hideWhenNoPermission: "Escondido para usuários não autorizados", + queryParam: "URL Params de consulta", + hashParam: "URL Params de Hash", + tabBar: "Barra de guia", + emptyTabTooltip: "Configurar esta página no painel direito", + }, + appSetting: { + "450": "(Telefone)", + "800": "800px (Tabela)", + "1440": "1440px (Laptop)", + "1920": "1920px (Tela de espera)", + "3200": "3200px (Super tela grande)", + title: "Definições do aplicativo", + autofill: "Preenchimento automático", + userDefined: "Personalizado", + default: "Padrão", + tooltip: "Feche o popover após a configuração", + canvasMaxWidth: "Máxima largura do canvas", + userDefinedMaxWidth: "Largura máxima personalizada", + inputUserDefinedPxValue: "Digite um valor de pixel personalizado", + maxWidthTip: "A largura máxima deve ser maior ou igual a 350", + themeSetting: "Configuração do tema", + themeSettingDefault: "Padrão", + themeCreate: "Criar tema", + }, + customShortcut: { + title: "Atalhos personalizados", + shortcut: "Corte de atalho", + action: "Acção", + empty: "Sem atalhos", + placeholder: "Atalho de imprensa", + otherPlatform: "Outros", + space: "Espaço", + }, + profile: { + change: "Alterar", + orgSettings: "Definições do espaço de trabalho", + switchOrg: "Trocar espaço de trabalho", + joinedOrg: "Os meus espaços de trabalho", + createOrg: "Criar espaço de trabalho", + logout: "Sair", + personalInfo: "O meu perfil", + bindingSuccess: "{sourceName} atualizado com sucesso", + uploadError: "Carregar erro", + editProfilePicture: "Modificar", + nameCheck: "Nome não pode ser vazio", + name: "Nome:", + namePlaceholder: "Digite seu nome", + toBind: "Para ligar", + binding: "É obrigatório", + bindError: "Erro de parâmetro, atualmente não suportado vinculação.", + bindName: "Lixo", + loginAfterBind: "Depois de ligar, você pode usar {name} para fazer login", + bindEmail: "Email:", + email: "email", + emailCheck: "Digite um email válido", + emailPlaceholder: "Digite seu email", + submit: "Submeter-me", + bindEmailSuccess: "Sucesso de ligação de email", + passwordModifiedSuccess: "A senha mudou com sucesso", + passwordSetSuccess: "Definir senha com sucesso", + oldPassword: "Senha antiga:", + inputCurrentPassword: "Digite sua senha atual", + newPassword: "Nova senha:", + inputNewPassword: "Digite sua nova senha", + confirmNewPassword: "Confirme nova senha:", + confirmNewEmail: "Confirme a mudança de email:", + inputNewPasswordAgain: "Digite sua nova senha novamente", + password: "Senha:", + modifyPassword: "Modificar senha", + setPassword: "Definir senha", + alreadySetPassword: "**********", + setPassPlaceholder: "Você pode fazer login com senha", + setPassAfterBind: "Pode definir a palavra-passe após a ligação da conta", + socialConnections: "Conexões sociais", + }, + shortcut: { + shortcutList: "Atalhos de teclado", + click: "Clique em", + global: "Global", + toggleShortcutList: "Alternar atalhos de teclado", + editor: "Editor", + toggleLeftPanel: "Alterne o painel esquerdo", + toggleBottomPanel: "Toggle fundo pane", + toggleRightPanel: "Alternar o painel direito", + toggleAllPanels: "Toggle todas as panelas", + preview: "Prévia", + undo: "Desfazer", + redo: "Refazer", + showGrid: "Mostrar grade", + component: "Componente", + multiSelect: "Selecione vários", + selectAll: "Selecione tudo", + copy: "Entendido", + cut: "Corta", + paste: "Pasta", + move: "Mexam-se", + zoom: "Redimensionar", + delete: "Excluir", + deSelect: "Desmarcar", + queryEditor: "Editor de consultas", + excuteQuery: "Correr consulta atual", + editBox: "Editor de texto", + formatting: "Formato", + openInLeftPanel: "Abra no painel esquerdo", + }, + help: { + videoText: "Visão geral", + onBtnText: "ESTÁ BEM", + permissionDenyTitle: + "? Incapaz de criar um novo aplicativo ou fonte de dados?", + permissionDenyContent: + "Você não tem permissão para criar o aplicativo e fonte de dados. Entre em contato com o administrador para se juntar ao grupo desenvolvedor.", + appName: "Aplicativo do Tutorial", + chat: "Converse conosco", + docs: "Ver documentação", + editorTutorial: "Tutorial do editor", + update: "O que há de novo?", + version: "Versão", + versionWithColon: "Versão:", + submitIssue: "Submeter um problema", + }, + header: { + nameCheckMessage: "O nome não pode estar vazio", + viewOnly: "Exibir apenas", + recoverAppSnapshotTitle: "Restaurar esta versão?", + recoverAppSnapshotContent: + "Restaurar o aplicativo atual para a versão criada em {time}.", + recoverAppSnapshotMessage: "Restaurar esta versão", + returnEdit: "Retornar ao editor", + deploy: "Publicar", + export: "Exportação para JSON", + editName: "Editar nome", + duplicate: "Duplicar", + snapshot: "Histórico", + scriptsAndStyles: "Scripts e estilo", + appSettings: "Definições do aplicativo", + preview: "Prévia", + editError: + "Modo de visualização de histórico, nenhuma operação é suportada.", + clone: "Clone", + }, + userAuth: { + registerByEmail: "Registre-se", + email: "Email:", + inputEmail: "Por favor, digite o seu {label}", + inputValidEmail: "Por favor, insira um válido {label}", + register: "Registre-se", + recoveryPassword: "Recuperar senha", + recoveryPasswordSendTitle: "Digite seu email", + recoveryPasswordSendBtn: "Recuperar senha", + recoveryPasswordChangeTitle: "Digite sua nova senha", + recoveryPasswordChangeBtn: "Confirmar nova senha", + userLogin: "Entrar", + login: "Entrar", + bind: "Bind", + passwordCheckLength: "Pelo menos {min} caracteres", + passwordCheckContainsNumberAndLetter: "Deve conter letras e números", + passwordCheckSpace: "Não pode conter caracteres de espaço branco", + welcomeTitle: "{productName}", + inviteWelcomeTitle: "{username} convidá-lo para entrar não", + terms: "Termos", + privacy: "Política de Privacidade", + registerHint: "Eu li e concordo com os", + chooseAccount: "Escolha o seu Conta", + signInLabel: "Entrar com {name}", + bindAccount: "Ligação de conta", + scanQrCode: "Digitalizar o código QR com {name}", + invalidThirdPartyParam: "Param inválido de terceiros", + account: "Conta", + inputAccount: "Por favor, insira sua conta", + ldapLogin: "LDAP Sinalização", + resetPassword: "Recuperar senha", + resetPasswordDesc: + "Repor a senha do usuário {name}. Uma nova senha será gerada após a redefinição.", + resetSuccess: "Repor o sucesso", + resetSuccessDesc: + "A redefinição de senha foi bem sucedida. A nova senha é: {password}", + copyPassword: "Senha de cópia", + }, + preLoad: { + jsLibraryHelpText: + "Adicione bibliotecas JavaScript ao seu aplicativo atual através de endereços URL. lodash, moment, uuid, numbro são construídos no sistema para uso imediato. As bibliotecas de JavaScript são carregadas antes que o aplicativo seja inicializado, o que pode ter um impacto no desempenho do aplicativo.", + exportedAs: "Exportar como", + urlTooltip: + "O endereço URL da biblioteca JavaScript, [unpkg.com](https://unpkg.com/) ou [jsdelivr.net](https://www.jsdelivr.com/) é recomendado", + recommended: "Recomendado", + viewJSLibraryDocument: "Documento", + jsLibraryURLError: "URL inválido", + jsLibraryExist: "Biblioteca JavaScript já existe", + jsLibraryEmptyContent: "Nenhuma biblioteca de JavaScript adicionada", + jsLibraryDownloadError: "JavaScript library download de erro", + jsLibraryInstallSuccess: "Biblioteca JavaScript instalada com sucesso", + jsLibraryInstallFailed: "Instalação de biblioteca JavaScript falhou", + jsLibraryInstallFailedCloud: + "Talvez a biblioteca não esteja disponível na caixa de areia, [Documentation](https://docs.openblocks.dev/build-apps/write-javascript/use-third-party-libraries#manually-import-libraries)\nNão", + jsLibraryInstallFailedHost: "{message}", + add: "Adicionar novo", + jsHelpText: "Adicione um método global ou variável ao aplicativo atual.", + cssHelpText: + "Adicione estilos ao aplicativo atual. A estrutura DOM pode mudar como iteria do sistema. Tente modificar estilos através de propriedades de componentes.", + scriptsAndStyles: "Scripts e estilos", + jsLibrary: "Biblioteca de JavaScript", + }, + editorTutorials: { + component: "Componente", + componentContent: + "A área do componente direito tem tabelas, botões, caixas de entrada, seletores e outros componentes que podem ser arrastados para a tela para uso.", + canvas: "Lona", + canvasContent: + "O que você vê na tela é o que você recebe, e você pode ajustar o layout e o tamanho do componente arrastando e soltando, e excluir / copiar / colar componentes com atalhos de teclado.", + queryData: "Dados de consulta", + queryDataContent: + 'Crie uma nova consulta aqui e conecte-se ao seu MySQL, MongoDB, Redis, Airtable e outras fontes de dados. Depois de configurar a consulta, clique em "Executar" para obter os dados.', + compProperties: "Propriedades de componentes", + }, + homeTutorials: { + createAppContent: + '. Bem-vindo a {productName}, clique em "App" e comece a criar seu primeiro aplicativo.', + createAppTitle: "Criar app", + }, + history: { + layout: "ajuste de layout", + upgrade: "Atualizar '{0} '", + delete: "Eliminar '", + add: "Adicionar '", + modify: "Modificar '{0}", + rename: "Renomear '{0}' para '{1} '", + recover: "Recuperar a versão '{2}'", + recoverVersion: "Recuperar versão", + andSoOn: "e assim por diante", + timeFormat: "MM DD em hh: mm A", + emptyHistory: "Histórico vazio", + currentVersionWithBracket: "(Current)", + currentVersion: "Versão actual", + justNow: "Agora", + history: "Histórico", + }, + home: { + allApplications: "Todas as aplicações", + allModules: "Todos os módulos", + allFolders: "Todas as pastas", + modules: "Módulos", + module: "Módulo", + trash: "Lixeira", + queryLibrary: "Biblioteca de consultas", + datasource: "Fontes de dados", + selectDatasourceType: "Selecione o tipo de fonte de dados", + home: "Principal", + all: "Todos", + app: "Aplicativo", + navigation: "Navegação", + navLayout: "Navegação de PC", + navLayoutDesc: + "Menu esquerdo para facilitar a navegação na área de trabalho.", + mobileTabLayout: "Navegação móvel", + mobileTabLayoutDesc: + "Barra de navegação inferior para navegação móvel suave.", + folders: "Pastas", + folder: "Pasta", + rootFolder: "Raiz", + import: "Importação", + export: "Exportar para JSON", + inviteUser: "Convidar os membros", + createFolder: "Criar pasta", + createFolderSubTitle: "Nome da pasta:", + moveToFolder: "Mover para a pasta", + moveToTrash: "Mover para a lixeira", + moveToFolderSubTitle: 'Mover "{name}" para:', + folderName: "Nome da pasta:", + resCardSubTitle: "{time} por {creator}", + trashEmpty: "O lixo está vazio.", + projectEmpty: "Nada por aqui.", + projectEmptyCanAdd: + 'Você ainda não tem nenhum aplicativo. Clique em "Novo" para começar.', + name: "Nome", + type: "Tipo", + creator: "Criado por", + lastModified: "Última modificação", + deleteTime: "Excluído em", + createTime: "Criado em", + datasourceName: "Nome da fonte de dados", + databaseName: "Nome do banco de dados", + nameCheckMessage: "O nome não pode estar vazio", + deleteElementTitle: "Excluir permanentemente", + moveToTrashSubTitle: "{type} {name} será movido para a lixeira.", + deleteElementSubTitle: + "Excluir {type} {name} permanentemente, não pode ser recuperado.", + deleteSuccessMsg: "Excluído com sucesso", + deleteErrorMsg: "Erro excluído", + recoverSuccessMsg: "Recuperado com sucesso", + newDatasource: "Nova fonte de dados", + creating: "Criando...", + chooseDataSourceType: "Escolha o tipo de fonte de dados", + folderAlreadyExists: "A pasta já existe", + newNavLayout: "não. não", + newApp: "Novo Aplicativo", + importError: "Erro de importação, {message}", + exportError: "Erro de exportação, {message}", + importSuccess: "Sucesso de importação", + fileUploadError: "Erro de upload de arquivos", + fileFormatError: "Erro de formato de arquivo", + groupWithSquareBrackets: "[Grupo]", + allPermissions: "Proprietário", + shareLink: "Compartilhar link:", + copyLink: "Copiar", + appPublicMessage: "Faça o aplicativo público. Qualquer um pode ver.", + modulePublicMessage: "Faça o módulo público. Qualquer um pode ver.", + memberPermissionList: "Permissões de membros:", + orgName: "Administradores", + addMember: "Adicionar membros", + addPermissionPlaceholder: "Por favor, insira um nome para membros de busca", + searchMemberOrGroup: "Procure por membros ou grupos:", + addPermissionErrorMessage: "Falhado em adicionar permissão, {message}", + copyModalTitle: 'Clone "{name}', + copyNameLabel: "nome", + copyModalfolderLabel: "Adicionar à pasta", + copyNamePlaceholder: "Por favor insira um nome {type}", + chooseNavType: "Por favor, escolha o tipo de navegação", + createNavigation: "Criar navegação", + }, + carousel: { + dotPosition: "Posição dos pontos", + autoPlay: "Reprodução automática", + showDots: "Mostrar pontos", + }, + npm: { + invalidNpmPackageName: "Nome do pacote npm inválido ou url.", + pluginExisted: "Este plugin npm já existia", + compNotFound: "Componente {compName} não encontrado.", + addPluginModalTitle: "Adicionar plugin npm", + pluginNameLabel: "URL ou nome do pacote npm", + noCompText: "Sem componentes.", + compsLoading: "A carregar...", + removePluginBtnText: "Remover", + addPluginBtnText: "Adicionar plugin npm", + }, + toggleButton: { + valueDesc: "O valor padrão do botão alternar, por exemplo: false", + trueDefaultText: "Esconde-te", + falseDefaultText: "Mostrar", + trueLabel: "Texto para o verdadeiro", + falseLabel: "Texto para falso", + trueIconLabel: "Ícone de verdade", + falseIconLabel: "Ícone por falso", + iconPosition: "Posição do ícone", + showText: "Mostrar texto", + alignment: "Alinhamento", + showBorder: "Mostrar fronteira", + }, + docUrls: { + docHome: "https://docs.openblocks.dev/", + components: "https://cloud.openblocks.dev/components?n={compType}", + module: "", + optionList: "", + terms: "", + privacy: "", + aboutUs: "", + changeLog: "", + introVideo: "", + devNpmPlugin: + "https://docs.openblocks.dev/build-plugins/develop-your-first-plugin", + devNpmPluginText: "How to develop npm plugin", + useHost: + "https://docs.openblocks.dev/self-hosting/access-local-database-or-api", + eventHandlerSlowdown: + "https://docs.openblocks.dev/build-apps/event-handlers#debounce-and-throttle", + thirdLib: + "https://docs.openblocks.dev/build-apps/write-javascript/use-third-party-libraries", + thirdLibUrlText: "Use third-party libraries", + }, + datasourceTutorial: { + mysql: "", + mongodb: "", + postgres: "", + redis: "", + es: "", + smtp: "", + clickHouse: "", + }, + queryTutorial: { + js: "", + transformer: + "https://docs.openblocks.dev/build-apps/write-javascript/transformers", + tempState: + "https://docs.openblocks.dev/build-apps/write-javascript/temporary-state", + }, + customComponent: { + entryUrl: "https://custom-component.openblocks.dev/index.html", + }, + template: { cloneUrl: "/apps/template-import/" }, + openBlocksUrl: { + createIssue: "https://github.com/openblocks-dev/openblocks/issues", + discord: "https://discord.com/invite/z5W2YHXdtt", + }, + componentDoc: { + markdownDemoText: + "**Openblocks** é uma plataforma de código baixo _developer-friendly_ open-source para construir aplicativos internos em poucos minutos.", + demoText: + "Openblocks é uma plataforma de código baixo de código de código aberto amigável para desenvolvedor para construir aplicativos internos em poucos minutos.", + submit: "Submeter-me", + style: "estilo", + danger: "Perigo", + warning: "aviso de aviso", + success: "Sucesso", + menu: "menu", + link: "Link", + customAppearance: "Aparência personalizada", + search: "pesquisar", + pleaseInputNumber: "Digite um número", + mostValue: "Valor", + maxRating: "Classificação máxima", + notSelect: "Não selecionado", + halfSelect: "Meia seleção", + pleaseSelect: "Por favor, selecione", + title: "Título", + content: "Conteúdo", + componentNotFound: "Componente não existe", + example: "Exemplos", + defaultMethodDesc: "Definir o valor da propriedade {name}", + propertyUsage: + "Você pode ler informações relacionadas a componentes acessando propriedades de componentes por nome de componente em qualquer lugar que você possa escrever JavaScript.", + property: "Propriedades", + propertyName: "Nome do imóvel", + propertyType: "Tipo", + propertyDesc: "Descrição", + event: "Eventos", + eventName: "nome do evento", + eventDesc: "Descrição", + mehtod: "Métodos", + methodUsage: + "Você pode interagir com componentes através de seus métodos, e você pode chamá-los por seu nome em qualquer lugar que você possa escrever JavaScript. Ou você pode chamá-los através da ação 'Control component' de um evento.", + methodName: "Nome do método", + methodDesc: "Descrição", + showBorder: "Mostrar fronteira", + haveTry: "Experimenta tu", + settings: "Configuração", + settingValues: "Valor de definição", + defaultValue: "Valor padrão", + time: "tempo", + date: "data", + noValue: "Nenhuma", + xAxisType: "Tipo de eixo X", + hAlignType: "Alinhamento horizontal", + leftLeftAlign: "Alinhamento esquerdo", + leftRightAlign: "Alinhamento à esquerda", + topLeftAlign: "alinhamento superior esquerdo", + topRightAlign: "alinhamento superior direito", + validation: "Validação", + required: "Requisitos", + defaultStartDateValue: "Data de início padrão", + defaultEndDateValue: "Data de fim padrão", + basicUsage: "Uso básico", + basicDemoDescription: + "Os seguintes exemplos mostram o uso básico do componente.", + noDefaultValue: "Sem valor padrão", + forbid: "Proibido", + placeholder: "Accionista local", + pleaseInputPassword: "Digite uma senha", + password: "senha", + textAlign: "Alinhamento de texto", + length: "Comprimento", + top: "Topo", + pleaseInputName: "Digite seu nome", + userName: "Nome", + fixed: "Fixa", + responsive: "Responsivo", + workCount: "contagem de palavras", + cascaderOptions: + 'Não.\n(\n"valor": "z Zhejiang",\n"label": "Zhejiang",\n"crianças":\n(\n"valor": "hangzhou",\n" rótulo": "Hangzhou",\n"crianças":\n(\n"valor": "xihu",\n"label": "West Lake"\n?\n]\n?\n]\n}\n(\n"valor": "jiangsu",\n"label": "Jiangsu",\n"crianças":\n(\n"valor": "nanjing",\n"label" : "Nanjing",\n"crianças":\n(\n"valor": "zhonghuamen",\n"label": "Zhonghuamen"\n?\n]\n?\n]\n?\n]', + pleaseSelectCity: "Por favor, selecione uma cidade", + advanced: "Avançado", + showClearIcon: "Mostrar ícone claro", + appleOptionLabel: " Maçã", + waterMelonOptionLabel: "lon Melancia", + berryOptionLabel: "🍓 Morango", + lemonOptionLabel: " Lemon Limão", + coconutOptionLabel: "🥥 Coconut", + likedFruits: "Favoritos", + option: "opção", + singleFileUpload: "Upload de arquivo único", + multiFileUpload: "Múltiplo upload de arquivos", + folderUpload: "Upload de pasta", + multiFile: "vários arquivos", + folder: "pasta", + open: "aberto", + favoriteFruits: "Frutos Favoritos", + pleaseSelectOneFruit: "Selecione uma fruta", + notComplete: "não completo", + complete: "Completamente", + echart: "DIRECÇÃO", + lineChart: "gráfico de linha", + basicLineChart: "Gráfico de linha básica", + lineChartType: "Tipo de gráfico de linha", + stackLineChart: "Linha empilhada", + areaLineChart: "Linha de área", + scatterChart: "Gráfico de dispersão", + scatterShape: "Forma de dispersão", + scatterShapeCircle: "Círculo", + scatterShapeRect: "Retângulo", + scatterShapeTri: "Triângulo", + scatterShapeDiamond: "diamante", + scatterShapePin: "Pushpin", + scatterShapeArrow: "Seta", + pieChart: "Gráfico de peças", + basicPieChart: "Gráfico básico da torta", + pieChatType: "Tipo de gráfico de peças", + pieChartTypeCircle: "Gráfico de Donut", + pieChartTypeRose: "Gráfico de Rosa", + titleAlign: "Posição do título", + color: "Cor", + dashed: "Dashed", + imADivider: "Eu sou uma linha de divisão", + tableSize: "Tamanho da tabela", + subMenuItem: "SubMenu {num}", + menuItem: "Menu {num}", + labelText: "Etiqueta", + labelPosition: "Etiquetas - Posição", + labelAlign: "Etiqueta - Alinhamento", + optionsOptionType: "Método de configuração", + styleBackgroundColor: "Cor de fundo", + styleBorderColor: "Cor da borda", + styleColor: "Cor da fonte", + selectionMode: "Modo de seleção de linha", + paginationSetting: "Configuração da paginação", + paginationShowSizeChanger: + "Suporte aos usuários para modificar o número de entradas por página", + paginationShowSizeChangerButton: "Mostrar botão de mudança de tamanho", + paginationShowQuickJumper: "Mostrar salto rápido", + paginationHideOnSinglePage: "Esconder quando há apenas uma página", + paginationPageSizeOptions: "Tamanho da página", + chartConfigCompType: "Tipo de gráfico", + xConfigType: "Tipo de eixo X", + loading: "A carregar", + disabled: "Deficientes", + minLength: "Comprimento mínimo", + maxLength: "Comprimento máximo", + showCount: "Mostrar contagem de palavras", + autoHeight: "Altura", + thousandsSeparator: "separador de milhares", + precision: "Lugares decimais", + value: "Valor padrão", + formatter: "Formato", + min: "Valor mínimo", + max: "Valor máximo", + step: "Tamanho do passo", + start: "Tempo de início", + end: "Tempo final", + allowHalf: "Permitir meia seleção", + filetype: "Tipo de arquivo", + showUploadList: "Mostrar lista de upload", + uploadType: "Tipo de Upload", + allowClear: "Mostrar ícone claro", + minSize: "Tamanho mínimo do arquivo", + maxSize: "Tamanho máximo do arquivo", + maxFiles: "Número máximo de arquivos carregados", + format: "Formato", + minDate: "Data mínima", + maxDate: "Data máxima", + minTime: "Tempo mínimo", + maxTime: "Tempo máximo", + text: "Texto", + type: "Tipo", + hideHeader: "Ocultar cabeçalho", + hideBordered: "Esconder fronteira", + src: "URL de imagem", + showInfo: "Valor de exibição", + mode: "Modo", + onlyMenu: "Apenas menu", + horizontalAlignment: "Alinhamento horizontal", + row: "Esquerda", + column: "Topo", + leftAlign: "Alinhamento esquerdo", + rightAlign: "Alinhamento direito", + percent: "percentagem", + fixedHeight: "Altura fixa", + auto: "Adaptação", + directory: "Pasta", + multiple: "Vários arquivos", + singleFile: "Arquivo único", + manual: "Manual", + default: "Padrão", + small: "Pequeno", + middle: "Média", + large: "Grande", + single: "Único", + multi: "Múltiplos", + close: "Fechar", + ui: "Modo UI", + line: "Gráfico de linha", + scatter: "Enredo de dispersão", + pie: "Gráfico de peças", + basicLine: "Gráfico de linha básica", + stackedLine: "Gráfico de linha empilhada", + areaLine: "área área mapa", + basicPie: "Gráfico básico da torta", + doughnutPie: "Gráfico de Donut", + rosePie: "Gráfico de Rosa", + category: "eixo de categoria", + circle: "Círculo", + rect: "Retângulo", + triangle: "Triângulo", + diamond: "Diamantes", + pin: "Pushpin", + arrow: "Seta", + left: "Esquerda", + right: "Certo", + center: "Centro", + justify: "Justificar ambas as extremidades", + }, + playground: { + data: "Dados", + preview: "Ver", + property: "Propriedades", + console: "Console", + executeMethods: "Executar métodos", + noMethods: "Sem métodos.", + methodParams: "Parâmetros do método", + methodParamsHelp: + "Os parâmetros do método de entrada usam JSON, por exemplo, você pode definir os parâmetros do setValue com: [1] ou 1", + }, + calendar: { + headerBtnBackground: "Fundo do botão", + btnText: "Texto de botão", + title: "Título", + selectBackground: "Fundo selecionado", + }, + componentDocExtra: { table }, + idSource: { + title: "Provedores de ID", + form: "Email", + pay: "Premium", + enable: "Habilitar", + unEnable: "Não habilitado", + loginType: "Tipo de login", + status: "Estado", + desc: "Descrição", + manual: "Livro de endereços:", + syncManual: "Livro de endereços", + syncManualSuccess: "Sincronização", + enableRegister: "Permitir registo", + saveBtn: "Salvar e ativar", + save: "Salvar", + none: "Nenhuma", + formPlaceholder: "Por favor, entre. Não", + formSelectPlaceholder: "Por favor, selecione o {label}", + saveSuccess: "Salvou com sucesso", + dangerLabel: "Zona de perigo", + dangerTip: + "Desativar este provedor de ID pode resultar em alguns usuários sendo incapazes de fazer login. Prossiga com cautela.", + disable: "Deficiência", + disableSuccess: "Desativado com sucesso", + encryptedServer: "------ Criptografado no lado do servidor ---------", + disableTip: "Dicas", + disableContent: + "Desativar este provedor de ID pode resultar em alguns usuários sendo incapazes de fazer login. Tem a certeza de prosseguir?", + manualTip: "", + lockTip: + "O conteúdo está bloqueado. Para fazer alterações, clique no botão{icon}para desbloquear.", + lockModalContent: + "Alterar o campo de atributo 'ID' pode ter impactos significativos na identificação do usuário. Por favor, confirme que você entende as implicações desta mudança antes de prosseguir.", + payUserTag: "Premium", + }, + slotControl: { configSlotView: "Configurar a visualização de fenda" }, +}; diff --git a/client/packages/openblocks/src/i18n/locales/ptObj.tsx b/client/packages/openblocks/src/i18n/locales/ptObj.tsx new file mode 100644 index 00000000..bc6e8ac5 --- /dev/null +++ b/client/packages/openblocks/src/i18n/locales/ptObj.tsx @@ -0,0 +1,4 @@ +import { enObj } from "./enObj"; +import { I18nObjects } from "./types"; + +export const ptObj: I18nObjects = enObj; diff --git a/client/packages/openblocks/src/i18n/momentLocale.ts b/client/packages/openblocks/src/i18n/momentLocale.ts index e1cc4538..787b6ec6 100644 --- a/client/packages/openblocks/src/i18n/momentLocale.ts +++ b/client/packages/openblocks/src/i18n/momentLocale.ts @@ -2,6 +2,8 @@ import { language } from "i18n"; export function getMomentLocale() { switch (language) { + case "pt": + return "pt-br"; case "zh": return "zh-cn"; default: diff --git a/client/packages/openblocks/src/pages/editor/AppEditor.tsx b/client/packages/openblocks/src/pages/editor/AppEditor.tsx index 05d5c4a0..04922fc1 100644 --- a/client/packages/openblocks/src/pages/editor/AppEditor.tsx +++ b/client/packages/openblocks/src/pages/editor/AppEditor.tsx @@ -33,7 +33,7 @@ export default function AppEditor() { const isUserViewMode = useUserViewMode(); const params = useParams(); const applicationId = params.applicationId; - const viewMode = params.viewMode === "view" ? "published" : "editing"; + const viewMode = (params.viewMode === "view" || !params.viewMode) ? "published" : "editing"; const currentUser = useSelector(getUser); const dispatch = useDispatch(); const fetchOrgGroupsFinished = useSelector(getFetchOrgGroupsFinished); @@ -42,7 +42,7 @@ export default function AppEditor() { const firstRendered = useRef(false); const [isDataSourcePluginRegistered, setIsDataSourcePluginRegistered] = useState(false); - setGlobalSettings({ applicationId, isViewMode: params.viewMode === "view" }); + setGlobalSettings({ applicationId, isViewMode: (params.viewMode === "view") || !params.viewMode }); if (!firstRendered.current) { perfClear(); diff --git a/client/packages/openblocks/src/util/commonUtils.ts b/client/packages/openblocks/src/util/commonUtils.ts index df0302f1..8d093b24 100644 --- a/client/packages/openblocks/src/util/commonUtils.ts +++ b/client/packages/openblocks/src/util/commonUtils.ts @@ -6,6 +6,7 @@ import _ from "lodash"; // https://github.com/vitejs/vite/discussions/7492#discussioncomment-2449310 import "moment/dist/locale/en-gb"; import "moment/dist/locale/zh-cn"; +import "moment/dist/locale/pt-br"; export function initApp() { moment.locale(getMomentLocale()); diff --git a/client/packages/openblocks/src/util/hooks.ts b/client/packages/openblocks/src/util/hooks.ts index f427d1fc..b0887837 100644 --- a/client/packages/openblocks/src/util/hooks.ts +++ b/client/packages/openblocks/src/util/hooks.ts @@ -16,6 +16,7 @@ import { checkIsMobile } from "util/commonUtils"; import { EditorContext } from "comps/editorState"; import { getDataSourceStructures } from "redux/selectors/datasourceSelectors"; import { DatasourceStructure } from "api/datasourceApi"; +import { selectSystemConfig } from "redux/selectors/configSelectors"; export const ForceViewModeContext = React.createContext(false); @@ -24,7 +25,7 @@ export function isUserViewMode(params?: AppPathParams) { return false; } const { viewMode } = params; - return viewMode === "preview" || viewMode === "view"; + return viewMode === "preview" || viewMode === "view" || !viewMode; } /** @@ -46,12 +47,18 @@ export function useMaxWidth() { } export function useTemplateViewMode() { + const systemConfig = useSelector(selectSystemConfig); const search = useLocation().search; + + if(systemConfig?.branding?.enableTemplateViewMode) { + return true + } if (!useUserViewMode) { return false; } const searchParams = new URLSearchParams(search); return !!searchParams.get("template"); + } export function useApplicationId() { diff --git a/proxy/package-lock.json b/proxy/package-lock.json deleted file mode 100644 index 85d6857c..00000000 --- a/proxy/package-lock.json +++ /dev/null @@ -1,2045 +0,0 @@ -{ - "name": "proxy", - "version": "0.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "proxy", - "version": "0.0.0", - "dependencies": { - "@tanstack/query-core": "^4.35.0", - "@tanstack/query-persist-client-core": "^4.35.0", - "@tanstack/query-sync-storage-persister": "^4.35.0", - "axios-mock-adapter": "^1.22.0", - "lz-string": "^1.5.0", - "path-to-regexp": "^6.2.1", - "pocketbase": "^0.18.0" - }, - "devDependencies": { - "@types/node": "^20.6.5", - "@typescript-eslint/eslint-plugin": "^6.5.0", - "@typescript-eslint/parser": "^6.5.0", - "axios": "^0.21.1", - "eslint": "^8.48.0", - "eslint-config-prettier": "9.0.0", - "prettier": "3.0.3", - "typescript": "^5.0.2", - "vite": "^4.4.5" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/js": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.50.0.tgz", - "integrity": "sha512-NCC3zz2+nvYd+Ckfh87rA47zfu2QsQpvc6k1yzTk+b9KzRj0wkGa8LSoGOXN6Zv4lRf/EIoZ80biDh9HOI+RNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@tanstack/query-core": { - "version": "4.35.3", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.35.3.tgz", - "integrity": "sha512-PS+WEjd9wzKTyNjjQymvcOe1yg8f3wYc6mD+vb6CKyZAKvu4sIJwryfqfBULITKCla7P9C4l5e9RXePHvZOZeQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-persist-client-core": { - "version": "4.35.3", - "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-4.35.3.tgz", - "integrity": "sha512-UlUMsvmy12qgPzphIq8iyFtwxuv/vaEyFQEFDVVCvyrqj2G020qMZiCA1vj3+gasmCXh59EraiC2eY4Iqo0/PA==", - "license": "MIT", - "dependencies": { - "@tanstack/query-core": "4.35.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@tanstack/query-sync-storage-persister": { - "version": "4.35.3", - "resolved": "https://registry.npmjs.org/@tanstack/query-sync-storage-persister/-/query-sync-storage-persister-4.35.3.tgz", - "integrity": "sha512-q9axt4iJkRnhR9R9qou+Q2+T2S21jwgf/7carYs9DQGLoE9r9YnwxgbmDE72yQd1glcsGF26UqqO6WO8ziNCrQ==", - "license": "MIT", - "dependencies": { - "@tanstack/query-persist-client-core": "4.35.3" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "20.6.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.6.5.tgz", - "integrity": "sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", - "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/type-utils": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz", - "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", - "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", - "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", - "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", - "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", - "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.7.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true, - "license": "Python-2.0" - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/axios-mock-adapter": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", - "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "is-buffer": "^2.0.5" - }, - "peerDependencies": { - "axios": ">= 0.17.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.50.0.tgz", - "integrity": "sha512-FOnOGSuFuFLv/Sa+FDVRZl4GGVAAFFi8LecRsI5a1tMO5HIE8nCm4ivAlzt4dT3ol/PaaGC0rJEEXQmHJBGoOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.50.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", - "dev": true, - "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.7", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true, - "license": "ISC" - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.22.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.22.0.tgz", - "integrity": "sha512-H1Ddc/PbZHTDVJSnj8kWptIRSD6AM3pK+mKytuIVF4uoBV7rshFlhhvA58ceJ5wp3Er58w6zj7bykMpYXt3ETw==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true, - "license": "ISC" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "license": "MIT", - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pocketbase": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/pocketbase/-/pocketbase-0.18.0.tgz", - "integrity": "sha512-09ri0Rnm4JjboU4OJeibd6pgvKi4DPg/r/Uu/QI3mKSZsrROoMT75zyiOldbBBMWZUDG1TRlv6BjQj30SFsrVw==", - "license": "MIT" - }, - "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz", - "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==", - "dev": true, - "license": "MIT", - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=14.18.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.18.10", - "postcss": "^8.4.27", - "rollup": "^3.27.1" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - }, - "peerDependencies": { - "@types/node": ">= 14", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/proxy/package.json b/proxy/package.json index 7010dfa9..1bf242dd 100644 --- a/proxy/package.json +++ b/proxy/package.json @@ -28,6 +28,8 @@ "@tanstack/query-persist-client-core": "^4.35.0", "@tanstack/query-sync-storage-persister": "^4.35.0", "axios-mock-adapter": "^1.22.0", + "i18next": "^23.5.1", + "i18next-browser-languagedetector": "^7.1.0", "lz-string": "^1.5.0", "path-to-regexp": "^6.2.1", "pocketbase": "^0.18.0" diff --git a/proxy/src/api/pocketbase/types.ts b/proxy/src/api/pocketbase/types.ts index 4ef59444..b5630c20 100644 --- a/proxy/src/api/pocketbase/types.ts +++ b/proxy/src/api/pocketbase/types.ts @@ -66,6 +66,7 @@ export interface PBSettings extends BaseModel { logo: string; icon: string; header_color: string; + template_view?: boolean; home_page: string | null; themes: string; theme: string; // id diff --git a/proxy/src/i18n/index.ts b/proxy/src/i18n/index.ts new file mode 100644 index 00000000..05283a87 --- /dev/null +++ b/proxy/src/i18n/index.ts @@ -0,0 +1,13 @@ +import i18next from "i18next"; +import resources from "./locales"; +import LanguageDetector from "i18next-browser-languagedetector"; + +export async function initI18n() { + await i18next.use(LanguageDetector).init({ + resources, + debug: import.meta.env.DEV, + fallbackLng: "en", + }); +} + +export const { t } = i18next; diff --git a/proxy/src/i18n/locales/en.ts b/proxy/src/i18n/locales/en.ts new file mode 100644 index 00000000..37d39f50 --- /dev/null +++ b/proxy/src/i18n/locales/en.ts @@ -0,0 +1,5 @@ +export default { + translation: { + init: "[I18N]: Init successfully!", + }, +}; diff --git a/proxy/src/i18n/locales/index.ts b/proxy/src/i18n/locales/index.ts new file mode 100644 index 00000000..06e08427 --- /dev/null +++ b/proxy/src/i18n/locales/index.ts @@ -0,0 +1,8 @@ +import pt from "./pt"; +import en from "./en"; + +export default { + en, + "pt-BR": pt, + pt, +}; diff --git a/proxy/src/i18n/locales/pt.ts b/proxy/src/i18n/locales/pt.ts new file mode 100644 index 00000000..da4146c6 --- /dev/null +++ b/proxy/src/i18n/locales/pt.ts @@ -0,0 +1,5 @@ +export default { + translation: { + init: "[I18N]: Iniciado com sucesso!", + }, +}; diff --git a/proxy/src/main.ts b/proxy/src/main.ts index d35484f8..090410f7 100644 --- a/proxy/src/main.ts +++ b/proxy/src/main.ts @@ -2,9 +2,16 @@ import { AxiosInstance } from "axios"; import MockAdapter from "axios-mock-adapter"; import { sdk } from "@/api"; import mocks from "@/mocks"; +import { initI18n, t } from "@/i18n"; sdk.setup(); +initI18n().then(() => { + if (import.meta.env.DEV) { + console.warn(t("init")); + } +}); + let mockIns: MockAdapter; window.setupProxy = (axiosIns: AxiosInstance, messageIns: unknown) => { diff --git a/proxy/src/mocks/auth/login.ts b/proxy/src/mocks/auth/login.ts index 3d92c1f4..1fec5b92 100644 --- a/proxy/src/mocks/auth/login.ts +++ b/proxy/src/mocks/auth/login.ts @@ -43,8 +43,10 @@ export default [ ? "Password reset successfully!" : "Email sent! Please visit your Mailbox and reset your password.", ); + setTimeout(() => res(createDefaultResponse()), 2000); + } else { + res(createDefaultResponse()); } - setTimeout(() => res(createDefaultResponse()), 2000); }); } return createDefaultErrorResponse([authResponse]); diff --git a/proxy/src/mocks/configs.ts b/proxy/src/mocks/configs.ts index af0bb875..5cb4c7e8 100644 --- a/proxy/src/mocks/configs.ts +++ b/proxy/src/mocks/configs.ts @@ -10,7 +10,8 @@ export default [ mocker.get("/api/v1/configs", async () => { const settingsResponse = await settings.get(); if (settingsResponse.data) { - const { org_name, header_color, logo, icon } = settingsResponse.data; + const { org_name, header_color, logo, icon, template_view } = + settingsResponse.data; return createDefaultResponse({ authConfigs: await getAuthConfigs(), workspaceMode: "ENTERPRISE", @@ -25,6 +26,7 @@ export default [ favicon: icon, brandName: org_name, headerColor: header_color, + enableTemplateViewMode: template_view, }, }); } diff --git a/proxy/src/types.ts b/proxy/src/types.ts index 0d8ee4e3..008ec0b9 100644 --- a/proxy/src/types.ts +++ b/proxy/src/types.ts @@ -47,6 +47,7 @@ export interface Settings extends BaseModel { logo?: string; icon?: string; header_color?: string; + template_view?: boolean; home_page: Application | string | null; themes: string; theme: string; // id diff --git a/proxy/yarn.lock b/proxy/yarn.lock index a34a9ce3..ef40a722 100644 --- a/proxy/yarn.lock +++ b/proxy/yarn.lock @@ -7,6 +7,13 @@ resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== +"@babel/runtime@^7.19.4", "@babel/runtime@^7.22.5": + version "7.23.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" @@ -716,6 +723,20 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +i18next-browser-languagedetector@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.1.0.tgz#01876fac51f86b78975e79b48ccb62e2313a2d7d" + integrity sha512-cr2k7u1XJJ4HTOjM9GyOMtbOA47RtUoWRAtt52z43r3AoMs2StYKyjS3URPhzHaf+mn10hY9dZWamga5WPQjhA== + dependencies: + "@babel/runtime" "^7.19.4" + +i18next@^23.5.1: + version "23.5.1" + resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.5.1.tgz#7f7c35ffaa907618d9489f106d5006b09fbca3d3" + integrity sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg== + dependencies: + "@babel/runtime" "^7.22.5" + ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" @@ -984,6 +1005,11 @@ queue-microtask@^1.2.2: resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" diff --git a/server/pb_hooks/pbl_utils.js b/server/pb_hooks/pbl_utils.js index 4bb7dedd..5818d642 100644 --- a/server/pb_hooks/pbl_utils.js +++ b/server/pb_hooks/pbl_utils.js @@ -314,6 +314,16 @@ module.exports = { pattern: "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", }, }, + { + system: false, + id: "bjehlimo", + name: "template_view", + type: "bool", + required: false, + presentable: false, + unique: false, + options: {}, + }, { system: false, id: "jzvxz6oh",