diff --git a/.gitignore b/.gitignore index b81f45148..d1dfbc397 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ HELP.md ### IntelliJ IDEA ### .idea +!.idea/icon.png *.iws *.iml *.ipr diff --git a/.idea/icon.png b/.idea/icon.png new file mode 100644 index 000000000..451bbf647 Binary files /dev/null and b/.idea/icon.png differ diff --git a/GUIDE.md b/GUIDE.md new file mode 100644 index 000000000..0d8c94c73 --- /dev/null +++ b/GUIDE.md @@ -0,0 +1,5 @@ +Official website: https://www.erupt.xyz +Deployment documentation: https://www.yuque.com/erupts/erupt/tpq1l9 +Online demo: https://www.erupt.xyz/demo +Github demo code: https://github.com/erupts/erupt-example +Gitee demo code: https://gitee.com/erupt/erupt-example \ No newline at end of file diff --git a/deploy/erupt-cloud-server-docker/pom.xml b/deploy/erupt-cloud-server-docker/pom.xml index 8b4822d37..7b7460566 100644 --- a/deploy/erupt-cloud-server-docker/pom.xml +++ b/deploy/erupt-cloud-server-docker/pom.xml @@ -6,7 +6,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-admin/pom.xml b/erupt-admin/pom.xml index afa2f5760..e49c965cd 100644 --- a/erupt-admin/pom.xml +++ b/erupt-admin/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../pom.xml diff --git a/erupt-ai/RREAME.md b/erupt-ai/RREAME.md index 792e5d413..a985eac0f 100644 --- a/erupt-ai/RREAME.md +++ b/erupt-ai/RREAME.md @@ -1,3 +1,3 @@ #### AI Module -ChatGpt/DeepSeek/Kimi/ollama \ No newline at end of file +Unified LLM Access & Support Layer \ No newline at end of file diff --git a/erupt-ai/pom.xml b/erupt-ai/pom.xml index 5fa2b220c..663a4c2d8 100644 --- a/erupt-ai/pom.xml +++ b/erupt-ai/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../pom.xml diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/EruptAiAutoConfiguration.java b/erupt-ai/src/main/java/xyz/erupt/ai/EruptAiAutoConfiguration.java index 48787b374..05f4565b3 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/EruptAiAutoConfiguration.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/EruptAiAutoConfiguration.java @@ -45,7 +45,7 @@ public void post() { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-ai").build(); + return ModuleInfo.builder().name("erupt-ai").description("The large-model-driven ERUPT AI infrastructure").build(); } @Override diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionCall.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionCall.java index 85fd0ad25..7e3b89882 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionCall.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionCall.java @@ -6,16 +6,12 @@ */ public interface AiFunctionCall { - default String code() { - return this.getClass().getSimpleName(); - } - default boolean mcpCall() { return true; } default String name() { - return this.code(); + return this.getClass().getSimpleName(); } String description(); diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionManager.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionManager.java index 5cd793b42..552eda8c6 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionManager.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/AiFunctionManager.java @@ -43,16 +43,36 @@ public class AiFunctionManager implements ApplicationRunner { @Override public void run(ApplicationArguments args) { EruptSpringUtil.scannerPackage(EruptApplication.getScanPackage(), - new TypeFilter[]{new AssignableTypeFilter(AiFunctionCall.class)}, clazz -> - aiFunctions.put(clazz.getSimpleName(), (AiFunctionCall) EruptSpringUtil.getBean(clazz)) - ); + new TypeFilter[]{new AssignableTypeFilter(AiFunctionCall.class)}, clazz -> { + AiFunctionCall functionCall = (AiFunctionCall) EruptSpringUtil.getBean(clazz); + aiFunctions.put(functionCall.name(), functionCall); + }); } public String getFunctionCallPrompt() { - StringBuilder sb = new StringBuilder("下面是一组 Function Call 的映射,根据情况决定是否调用,否则忽略这段提示词\n"); + StringBuilder sb = new StringBuilder(""" + Below is a mapping of available Function Calls. + + Please decide whether a function is clearly required after understanding the user's question. + + Rules: + 1. Call a function IF AND ONLY IF the user's intent clearly and directly matches the function description, + and calling the function will significantly improve the accuracy of the response. + 2. If a function is triggered, STRICTLY output ONLY the function name. + Do NOT output explanations, symbols, punctuation, or any extra text. + 3. If no function is required, IGNORE this entire instruction block + and respond to the user normally. + + Available functions: + """); for (Map.Entry entry : aiFunctions.entrySet()) { - sb.append("- 如果用户问:").append(entry.getValue().description()).append(",就只回复:").append(entry.getKey()).append("\n"); + sb.append("- ") + .append(entry.getKey()) + .append(": ") + .append(entry.getValue().description()) + .append("\n"); } + return sb.toString(); } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/UserCall.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/UserCall.java deleted file mode 100644 index 3782187c1..000000000 --- a/erupt-ai/src/main/java/xyz/erupt/ai/call/UserCall.java +++ /dev/null @@ -1,29 +0,0 @@ -package xyz.erupt.ai.call; - -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; -import xyz.erupt.core.context.MetaContext; - -/** - * @author YuePeng - * date 2025/3/14 23:25 - */ -@Component -@Scope("prototype") -public class UserCall implements AiFunctionCall { - - @Override - public String name() { - return "Current User"; - } - - @Override - public String description() { - return "Ask the current system logged-in user"; - } - - @Override - public String call(String prompt) { - return MetaContext.getUser().getName(); - } -} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptDataQuery.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptDataQuery.java new file mode 100644 index 000000000..870179927 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptDataQuery.java @@ -0,0 +1,39 @@ +package xyz.erupt.ai.call.impl; + +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import xyz.erupt.ai.annotation.AiParam; +import xyz.erupt.ai.call.AiFunctionCall; +import xyz.erupt.core.config.GsonFactory; +import xyz.erupt.core.service.EruptCoreService; +import xyz.erupt.core.view.EruptModel; +import xyz.erupt.jpa.dao.EruptDao; + +import java.util.List; + +/** + * @author YuePeng + * date 2025/3/14 23:25 + */ +@Component +@Scope("prototype") +public class EruptDataQuery implements AiFunctionCall { + + @AiParam(description = "HQL (Hibernate Query Language)") + private String hql; + + @Resource + private EruptDao eruptDao; + + @Override + public String description() { + return "Query erupt model data"; + } + + @Override + public String call(String prompt) { + List result = eruptDao.getEntityManager().createQuery(hql).getResultList(); + return GsonFactory.getGson().toJson(result); + } +} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptList.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptList.java new file mode 100644 index 000000000..a234ed677 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptList.java @@ -0,0 +1,31 @@ +package xyz.erupt.ai.call.impl; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import xyz.erupt.ai.call.AiFunctionCall; +import xyz.erupt.core.module.EruptModuleInvoke; +import xyz.erupt.core.service.EruptCoreService; +import xyz.erupt.core.view.EruptModel; + +/** + * @author YuePeng + * date 2025/3/14 23:25 + */ +@Component +@Scope("prototype") +public class EruptList implements AiFunctionCall { + + @Override + public String description() { + return "Erupt model list"; + } + + @Override + public String call(String prompt) { + StringBuilder sb = new StringBuilder(); + for (EruptModel erupt : EruptCoreService.getErupts()) { + sb.append(erupt.getEruptName()).append(": ").append(erupt.getErupt().name()); + } + return sb.toString(); + } +} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptModuleInfo.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptModuleInfo.java new file mode 100644 index 000000000..5687700c6 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptModuleInfo.java @@ -0,0 +1,29 @@ +package xyz.erupt.ai.call.impl; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import xyz.erupt.ai.call.AiFunctionCall; +import xyz.erupt.core.module.EruptModuleInvoke; + +/** + * @author YuePeng + * date 2025/3/14 23:25 + */ +@Component +@Scope("prototype") +public class EruptModuleInfo implements AiFunctionCall { + + @Override + public String description() { + return "Erupt Module list"; + } + + @Override + public String call(String prompt) { + StringBuilder sb = new StringBuilder(); + EruptModuleInvoke.invoke(it -> { + sb.append(it.info().getName()).append(": ").append(it.info().getDescription()).append("\n"); + }); + return sb.toString(); + } +} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptSchema.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptSchema.java new file mode 100644 index 000000000..4ee9b1ab9 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptSchema.java @@ -0,0 +1,33 @@ +package xyz.erupt.ai.call.impl; + +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import xyz.erupt.ai.annotation.AiParam; +import xyz.erupt.ai.call.AiFunctionCall; +import xyz.erupt.core.config.GsonFactory; +import xyz.erupt.core.module.EruptModuleInvoke; +import xyz.erupt.core.service.EruptCoreService; +import xyz.erupt.core.view.EruptModel; + +/** + * @author YuePeng + * date 2025/3/14 23:25 + */ +@Component +@Scope("prototype") +public class EruptSchema implements AiFunctionCall { + + @AiParam(description = "Erupt Name") + private String eruptName; + + @Override + public String description() { + return "Erupt model schema"; + } + + @Override + public String call(String prompt) { + EruptModel erupt = EruptCoreService.getEruptView(eruptName); + return GsonFactory.getGson().toJson(erupt); + } +} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptUserInfo.java b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptUserInfo.java new file mode 100644 index 000000000..39b76ce60 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/call/impl/EruptUserInfo.java @@ -0,0 +1,33 @@ +package xyz.erupt.ai.call.impl; + +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import xyz.erupt.ai.call.AiFunctionCall; +import xyz.erupt.core.config.GsonFactory; +import xyz.erupt.core.context.MetaContext; +import xyz.erupt.jpa.dao.EruptDao; +import xyz.erupt.upms.model.EruptUser; + +/** + * @author YuePeng + * date 2025/3/14 23:25 + */ +@Component +@Scope("prototype") +public class EruptUserInfo implements AiFunctionCall { + + @Resource + private EruptDao eruptDao; + + @Override + public String description() { + return "Ask the current system logged-in user"; + } + + @Override + public String call(String prompt) { + return GsonFactory.getGson().toJson(eruptDao.find(EruptUser.class, MetaContext.getUser().getUid())); + } + +} diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/controller/McpController.java b/erupt-ai/src/main/java/xyz/erupt/ai/controller/McpController.java index cd9e96a20..af28890be 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/controller/McpController.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/controller/McpController.java @@ -1,7 +1,9 @@ package xyz.erupt.ai.controller; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; @@ -13,7 +15,11 @@ import xyz.erupt.ai.config.AiMCPProp; import xyz.erupt.ai.util.McpUtil; import xyz.erupt.ai.vo.mcp.*; +import xyz.erupt.core.context.MetaContext; import xyz.erupt.core.util.EruptInformation; +import xyz.erupt.core.util.ReflectUtil; +import xyz.erupt.jpa.dao.EruptDao; +import xyz.erupt.upms.model.EruptOpenApi; import java.io.IOException; import java.lang.reflect.Field; @@ -30,11 +36,15 @@ @ConditionalOnProperty(name = "erupt.ai.mcp.enabled", havingValue = "true") @RestController @RequestMapping("/mcp") +@Slf4j public class McpController { @Resource private AiMCPProp mcpProp; + @Resource + private EruptDao eruptDao; + @GetMapping(value = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE) @PostMapping(value = "/sse", produces = MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter sse() { @@ -66,7 +76,23 @@ private void cleanup(ScheduledExecutorService scheduler, ScheduledFuture task } @PostMapping - public ResponseEntity call(@RequestBody McpRequest request) { + public ResponseEntity call(HttpServletRequest servletRequest, @RequestBody McpRequest request) { + String auth = servletRequest.getHeader("Authorization"); + if (null == auth) { + log.error("MCP authorization not found"); + return ResponseEntity.status(401).build(); + } + String bearer = "Bearer "; + String token = auth.startsWith(bearer) ? auth.substring(bearer.length()) : auth; + EruptOpenApi eruptOpenApi = eruptDao.lambdaQuery(EruptOpenApi.class).eq(EruptOpenApi::getSecret, token).one(); + if (null == eruptOpenApi) { + log.error("MCP authorization token error: {}", token); + return ResponseEntity.status(401).build(); + } else { + MetaContext.getUser().setUid(eruptOpenApi.getEruptUser().getId()); + MetaContext.getUser().setName(eruptOpenApi.getEruptUser().getName()); + MetaContext.getUser().setAccount(eruptOpenApi.getEruptUser().getAccount()); + } McpResult result = new McpResult(); switch (request.getMethod()) { case "initialize" -> result.setResult(this.mcpInfo()); @@ -81,6 +107,7 @@ public ResponseEntity call(@RequestBody McpRequest request) { mcpCallResult.setContent(List.of(content)); result.setResult(mcpCallResult); } catch (Exception e) { + log.error("MCP call error [" + request.getParams().getName() + "]", e); content.setText(e.getMessage()); mcpCallResult.setError(true); mcpCallResult.setContent(List.of(content)); @@ -143,7 +170,7 @@ private String mcpCall(String code, Map params) { AiFunctionCall aiFunctionCall = AiFunctionManager.getAiFunctions().get(code); if (null != params) { for (Map.Entry entry : params.entrySet()) { - Field field = aiFunctionCall.getClass().getDeclaredField(entry.getKey()); + Field field = ReflectUtil.findClassField(aiFunctionCall.getClass(), entry.getKey()); field.setAccessible(true); field.set(aiFunctionCall, entry.getValue()); field.setAccessible(false); diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/core/LlmCore.java b/erupt-ai/src/main/java/xyz/erupt/ai/core/LlmCore.java index 606b08c5d..f3adb3a74 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/core/LlmCore.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/core/LlmCore.java @@ -6,6 +6,7 @@ import xyz.erupt.annotation.fun.ChoiceFetchHandler; import xyz.erupt.annotation.fun.VLModel; +import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -43,7 +44,8 @@ public static LlmCore getLLM(LLM llm) { public static class H implements ChoiceFetchHandler { @Override public List fetch(String[] params) { - return llms.keySet().stream().map(it -> new VLModel(it, it)).collect(Collectors.toList()); + return llms.keySet().stream().map(it -> new VLModel(it, it)) + .sorted(Comparator.comparing(VLModel::getLabel)).collect(Collectors.toList()); } } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/core/OpenAi.java b/erupt-ai/src/main/java/xyz/erupt/ai/core/OpenAi.java index f15976994..75d322586 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/core/OpenAi.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/core/OpenAi.java @@ -36,6 +36,16 @@ public String chatApiPath() { return "/v1/chat/completions"; } + @Override + public String code() { + return getClass().getSimpleName(); + } + + @Override + public LlmConfig config() { + return new LlmConfig(); + } + @Override public ChatCompletionResponse chat(LlmRequest llmRequest, String userPrompt, List assistantPrompt) { assistantPrompt.add(new ChatCompletionMessage(MessageRole.user, userPrompt)); @@ -108,7 +118,9 @@ public void onResponse(@NotNull Call call, @NotNull Response response) throws IO String line = source.readUtf8Line(); if (StringUtils.isNotBlank(line)) { if (!response.isSuccessful()) { - this.onFailure(call, new IOException(line)); + this.onFailure(call, new IOException(response.body().string())); + log.error("Failed to get llm response from server: {}", response.body()); + return; } else { try { if (line.startsWith("data: ")) { diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/handler/DynamicPromptFetch.java b/erupt-ai/src/main/java/xyz/erupt/ai/handler/DynamicPromptFetch.java index 71077e05a..097509698 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/handler/DynamicPromptFetch.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/handler/DynamicPromptFetch.java @@ -1,6 +1,5 @@ package xyz.erupt.ai.handler; -import jakarta.annotation.PostConstruct; import org.springframework.core.type.filter.AssignableTypeFilter; import org.springframework.core.type.filter.TypeFilter; import org.springframework.stereotype.Component; @@ -21,7 +20,6 @@ public class DynamicPromptFetch implements ChoiceFetchHandler { private static final List promptHandlers = new ArrayList<>(); - @PostConstruct public void init() { EruptSpringUtil.scannerPackage(EruptApplication.getScanPackage(), new TypeFilter[]{new AssignableTypeFilter(EruptPromptHandler.class)}, clazz -> { @@ -32,7 +30,10 @@ public void init() { } @Override - public List fetch(String[] params) { + public synchronized List fetch(String[] params) { + if (promptHandlers.isEmpty()) { + init(); + } return promptHandlers; } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/ChatGpt.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/ChatGpt.java index 4b7dd997b..4b1af8203 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/ChatGpt.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/ChatGpt.java @@ -11,11 +11,6 @@ @Component public class ChatGpt extends OpenAi { - @Override - public String code() { - return "ChatGpt"; - } - @Override public String model() { return "gpt-4o"; @@ -26,9 +21,4 @@ public String api() { return "https://api.openai.com"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Claude.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Claude.java index f98e21866..6bad04f3d 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Claude.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Claude.java @@ -11,11 +11,6 @@ @Component public class Claude extends OpenAi { - @Override - public String code() { - return "Claude"; - } - @Override public String model() { return "claude-3-7-sonnet-latest"; @@ -26,9 +21,4 @@ public String api() { return "https://api.anthropic.com"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/DeepSeek.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/DeepSeek.java index fc77f465a..0b3aec885 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/DeepSeek.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/DeepSeek.java @@ -11,11 +11,6 @@ @Component public class DeepSeek extends OpenAi { - @Override - public String code() { - return "DeepSeek"; - } - @Override public String model() { return "deepseek-chat"; @@ -26,9 +21,4 @@ public String api() { return "https://api.deepseek.com"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Fireworks.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Fireworks.java new file mode 100644 index 000000000..b67034c44 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Fireworks.java @@ -0,0 +1,20 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.LlmConfig; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class Fireworks extends OpenAi { + + @Override + public String model() { + return "accounts/fireworks/models/llama-v3p1-70b-instruct"; + } + + @Override + public String api() { + return "https://api.fireworks.ai/inference"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/GLM.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/GLM.java index e60046958..056e0890c 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/GLM.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/GLM.java @@ -11,11 +11,6 @@ @Component public class GLM extends OpenAi { - @Override - public String code() { - return "ChatGLM"; - } - @Override public String model() { return "glm-4-air"; @@ -31,9 +26,4 @@ public String chatApiPath() { return "/api/paas/v4/chat/completions"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Gemini.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Gemini.java index e2623d1ce..3b4cf5945 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Gemini.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Gemini.java @@ -11,11 +11,6 @@ @Component public class Gemini extends OpenAi { - @Override - public String code() { - return "Gemini"; - } - @Override public String model() { return "gemini-2.0-flash"; @@ -26,9 +21,4 @@ public String api() { return "https://generativelanguage.googleapis.com"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Grok.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Grok.java new file mode 100644 index 000000000..55ad2b6fd --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Grok.java @@ -0,0 +1,20 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.LlmConfig; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class Grok extends OpenAi { + + @Override + public String model() { + return "grok-2-latest"; + } + + @Override + public String api() { + return "https://api.x.ai"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/MinMax.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/MinMax.java new file mode 100644 index 000000000..c6d139a2c --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/MinMax.java @@ -0,0 +1,20 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.LlmConfig; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class MinMax extends OpenAi { + + @Override + public String model() { + return "minmax-7b-chat"; + } + + @Override + public String api() { + return "https://api.minmax.ai"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Mistral.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Mistral.java new file mode 100644 index 000000000..6a10b6387 --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Mistral.java @@ -0,0 +1,20 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.LlmConfig; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class Mistral extends OpenAi { + + @Override + public String model() { + return "mistral-large-latest"; + } + + @Override + public String api() { + return "https://api.mistral.ai"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Moonshot.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Moonshot.java index f9ba70a08..cf095e412 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Moonshot.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Moonshot.java @@ -11,11 +11,6 @@ @Component public class Moonshot extends OpenAi { - @Override - public String code() { - return "Moonshot"; - } - @Override public String model() { return "moonshot-v1-8k"; @@ -26,9 +21,4 @@ public String api() { return "https://api.moonshot.cn"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Ollama.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Ollama.java index 9c4eb5a21..2d4503b37 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Ollama.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Ollama.java @@ -11,11 +11,6 @@ @Component public class Ollama extends OpenAi { - @Override - public String code() { - return "Ollama"; - } - @Override public String model() { return "nomic-embed-text"; @@ -26,9 +21,4 @@ public String api() { return "http://localhost:11434"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/OpenRouter.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/OpenRouter.java new file mode 100644 index 000000000..87f105cff --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/OpenRouter.java @@ -0,0 +1,20 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.LlmConfig; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class OpenRouter extends OpenAi { + + @Override + public String model() { + return "openai/gpt-4o"; + } + + @Override + public String api() { + return "https://openrouter.ai"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/QWen.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/QWen.java index 5e2520e2f..b80d50c8f 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/llm/QWen.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/QWen.java @@ -16,11 +16,6 @@ public String chatApiPath() { return "/compatible-mode/v1/chat/completions"; } - @Override - public String code() { - return "Qwen"; - } - @Override public String model() { return "qwen-plus"; @@ -31,9 +26,4 @@ public String api() { return "https://dashscope.aliyuncs.com"; } - @Override - public LlmConfig config() { - return new LlmConfig(); - } - } diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/llm/Together.java b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Together.java new file mode 100644 index 000000000..c7ae5cd2d --- /dev/null +++ b/erupt-ai/src/main/java/xyz/erupt/ai/llm/Together.java @@ -0,0 +1,19 @@ +package xyz.erupt.ai.llm; + +import org.springframework.stereotype.Component; +import xyz.erupt.ai.core.OpenAi; + +@Component +public class Together extends OpenAi { + + @Override + public String model() { + return "meta-llama/Meta-Llama-3.1-70B-Instruct"; + } + + @Override + public String api() { + return "https://api.together.xyz"; + } + +} \ No newline at end of file diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/model/ChatMessage.java b/erupt-ai/src/main/java/xyz/erupt/ai/model/ChatMessage.java index 5de3dc975..88b62257c 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/model/ChatMessage.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/model/ChatMessage.java @@ -43,7 +43,6 @@ public class ChatMessage extends BaseModel implements DataProxy { views = @View(title = "发送人") ) @Enumerated(EnumType.STRING) - @Column(columnDefinition = "varchar(100)") private ChatSenderType senderType; @EruptField( diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/model/LLM.java b/erupt-ai/src/main/java/xyz/erupt/ai/model/LLM.java index 58e6be60e..6c2169c98 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/model/LLM.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/model/LLM.java @@ -35,7 +35,7 @@ tpl = @Tpl(path = "/tpl/llm-chat.ftl", height = "85vh", tplHandler = LLMDataProxy.class), mode = RowOperation.Mode.SINGLE, type = RowOperation.Type.TPL), @RowOperation(title = "默认对话模型", icon = "fa fa-magic", - ifExpr = "item.defaultLLM == '×'", + ifExpr = "item.defaultLLM === '×'", mode = RowOperation.Mode.SINGLE, operationHandler = LLMDataProxy.class) } ) @@ -78,7 +78,6 @@ public class LLM extends MetaModelUpdateVo { private String apiUrl; @EruptField( - views = @View(title = "API Key", type = ViewType.HTML, width = "80px"), edit = @Edit(title = "API Key") ) private String apiKey; diff --git a/erupt-ai/src/main/java/xyz/erupt/ai/service/LLMService.java b/erupt-ai/src/main/java/xyz/erupt/ai/service/LLMService.java index 32e534d3d..51454b5be 100644 --- a/erupt-ai/src/main/java/xyz/erupt/ai/service/LLMService.java +++ b/erupt-ai/src/main/java/xyz/erupt/ai/service/LLMService.java @@ -74,6 +74,7 @@ public List geneCompletionPrompt(Chat chat, LLMAgent llmA List chatCompletionMessages = new ArrayList<>(); chatCompletionMessages.add(new ChatCompletionMessage(MessageRole.system, aiProp.getSystemPrompt())); if (null != llmAgent) { + // Agent if (null == llmAgent.getPromptHandler()) { chatCompletionMessages.add(new ChatCompletionMessage(MessageRole.system, llmAgent.getPrompt())); } else { @@ -81,6 +82,7 @@ public List geneCompletionPrompt(Chat chat, LLMAgent llmA EruptSpringUtil.getBeanByPath(llmAgent.getPromptHandler(), EruptPromptHandler.class).handle(llmAgent.getPrompt()))); } } else { + // Function Call chatCompletionMessages.add(new ChatCompletionMessage(MessageRole.system, aiFunctionManager.getFunctionCallPrompt())); } List chatMessages = eruptDao.lambdaQuery(ChatMessage.class) diff --git a/erupt-annotation/README.md b/erupt-annotation/README.md index ee0c00bd7..0071a29ce 100644 --- a/erupt-annotation/README.md +++ b/erupt-annotation/README.md @@ -1,8 +1,11 @@ -## erupt核心注解声明 -+ 核心类注解 @Erupt -+ 核心字段注解 @EruptField -+ 编辑相关注解 @Edit -+ 表格相关注解 @View -+ 模板相关注解 @Tpl -+ 权限相关注解 @Power +## Core Annotation Declarations of Erupt ++ Core class annotation @Erupt ++ Core field annotation @EruptField ++ Edit-related annotation @Edit ++ Table-related annotation @View ++ Template-related annotation @Tpl ++ Permission-related annotation @Power ++ Visualization configuration annotation @Vis ++ Layout annotation @Layout ++ Dynamic form annotation @Dynamic + ...... \ No newline at end of file diff --git a/erupt-annotation/pom.xml b/erupt-annotation/pom.xml index 5da624817..60fa557ad 100644 --- a/erupt-annotation/pom.xml +++ b/erupt-annotation/pom.xml @@ -12,7 +12,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../pom.xml \ No newline at end of file diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/Erupt.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/Erupt.java index 67cbf07c2..655229e53 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/Erupt.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/Erupt.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.config.Match; import xyz.erupt.annotation.config.ToMap; @@ -19,6 +20,7 @@ public @interface Erupt { @Comment("主键列名") + @Language(value = "java", prefix = "private String ", suffix = ";") String primaryKeyCol() default "id"; @Transient @@ -48,6 +50,7 @@ @Transient @Comment("排序表达式") + @Language(value = "hql", prefix = "select * from t order by ") String orderBy() default ""; @Transient @@ -66,7 +69,9 @@ Layout layout() default @Layout; - Viz[] viz() default {}; + boolean visRawTable() default true; + + Vis[] vis() default {}; @ToMap(key = "key") @Comment("自定义扩展参数") diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/Viz.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/Vis.java similarity index 65% rename from erupt-annotation/src/main/java/xyz/erupt/annotation/Viz.java rename to erupt-annotation/src/main/java/xyz/erupt/annotation/Vis.java index 95e14c5ca..3f7884997 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/Viz.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/Vis.java @@ -1,12 +1,14 @@ package xyz.erupt.annotation; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.config.Match; import xyz.erupt.annotation.expr.ExprBool; import xyz.erupt.annotation.sub_erupt.Filter; +import xyz.erupt.annotation.sub_erupt.Sort; import xyz.erupt.annotation.sub_erupt.Tpl; -import xyz.erupt.annotation.viz.CardView; -import xyz.erupt.annotation.viz.GanttView; +import xyz.erupt.annotation.vis.CardView; +import xyz.erupt.annotation.vis.GanttView; import java.beans.Transient; @@ -14,7 +16,7 @@ * @author YuePeng * date 2025/10/30 23:52 */ -public @interface Viz { +public @interface Vis { String code() default ""; @@ -22,14 +24,17 @@ String desc() default ""; - @Comment("Specify the view fields. If no configuration is made, all fields will be displayed.") + FieldVisibility fieldVisibility() default FieldVisibility.EXCLUDE; + + @Comment("Fields to display or exclude") + @Language(value = "hql", prefix = "select ", suffix = " from ") String[] fields() default {}; @Transient Filter[] filter() default {}; @Transient - String orderBy() default ""; + Sort[] orderBy() default {}; @Transient ExprBool show() default @ExprBool; @@ -53,4 +58,11 @@ enum Type { TPL } + enum FieldVisibility { + // Include fields in the view + INCLUDE, + // Exclude fields in the view + EXCLUDE + } + } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/config/Match.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/config/Match.java index ccca86787..f5d5dca72 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/config/Match.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/config/Match.java @@ -1,5 +1,7 @@ package xyz.erupt.annotation.config; +import org.intellij.lang.annotations.Language; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -22,5 +24,6 @@ * * @return expression */ + @Language(value="spel") String value(); } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/SceneEnum.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/constant/SceneEnum.java similarity index 72% rename from erupt-annotation/src/main/java/xyz/erupt/annotation/SceneEnum.java rename to erupt-annotation/src/main/java/xyz/erupt/annotation/constant/SceneEnum.java index e9f6c605c..86fa54442 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/SceneEnum.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/constant/SceneEnum.java @@ -1,4 +1,4 @@ -package xyz.erupt.annotation; +package xyz.erupt.annotation.constant; /** * @author YuePeng diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/fun/VLModel.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/fun/VLModel.java index 2e9ecd152..03a07f51e 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/fun/VLModel.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/fun/VLModel.java @@ -17,6 +17,8 @@ public class VLModel { private String desc; + private String color; + private boolean disable; // Custom extension value @@ -44,7 +46,7 @@ public VLModel(String value, String label, boolean disable) { this.disable = disable; } - public VLModel(String value, String label, String desc, boolean disable) { + public VLModel(String value, String label, String desc, String color, boolean disable) { this.value = value; this.label = label; this.desc = desc; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Direction.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Direction.java new file mode 100644 index 000000000..aa191895c --- /dev/null +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Direction.java @@ -0,0 +1,8 @@ +package xyz.erupt.annotation.query; + +public enum Direction { + + ASC, + DESC + +} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Sort.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Sort.java index 47dcca69b..f640432ff 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Sort.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/query/Sort.java @@ -19,12 +19,7 @@ public class Sort { private String field; - private Direction direction = Direction.asc; - - public enum Direction { - asc, - desc - } + private Direction direction = Direction.ASC; public Sort(String field, Direction direction) { this.field = field; @@ -68,8 +63,8 @@ private static Sort parseOne(String seg) { } Direction direction = switch (dirPart.toUpperCase()) { - case "ASC" -> Direction.asc; - case "DESC" -> Direction.desc; + case "ASC" -> Direction.ASC; + case "DESC" -> Direction.DESC; default -> throw new IllegalArgumentException("Sort direction must be ASC or DESC, but was: " + dirPart); }; return new Sort(field, direction); diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Drill.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Drill.java index b5373c7da..23a9b9218 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Drill.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Drill.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_erupt; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.expr.ExprBool; @@ -19,6 +20,7 @@ boolean fold() default false; @Comment("图标请参考Font Awesome") + @Language(value = "html", prefix = "") String icon() default "fa fa-sitemap"; @Comment("下钻目标配置") diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Link.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Link.java index 6d76d56be..73e50ed4e 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Link.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Link.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_erupt; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import java.beans.Transient; @@ -11,6 +12,7 @@ public @interface Link { @Transient + @Language(value = "java", prefix = "private String ", suffix = ";") String column() default "id"; @Comment("erupt class to associate with. Note that this class needs to be configured with access permissions") @@ -18,8 +20,10 @@ @Transient @Comment("Column in linkErupt → this.column = linkErupt.joinColumn") + @Language(value = "hql", prefix = "select * from t where ",suffix = " = ''") String joinColumn(); @Comment("Other conditions for the link") + @Language(value = "hql", prefix = "select * from t where ") String linkCondition() default ""; } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/LinkTree.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/LinkTree.java index 935b24666..fd8ff6c8b 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/LinkTree.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/LinkTree.java @@ -1,10 +1,12 @@ package xyz.erupt.annotation.sub_erupt; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; public @interface LinkTree { @Comment("树字段") + @Language(value = "java", prefix = "private String ", suffix = ";") String field(); @Comment("表格的数据是否必须依赖树节点") diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/RowOperation.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/RowOperation.java index 4c361a8d6..9dc3b476a 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/RowOperation.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/RowOperation.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_erupt; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.expr.ExprBool; import xyz.erupt.annotation.fun.OperationHandler; @@ -31,6 +32,7 @@ boolean fold() default false; @Comment("图标请参考Font Awesome") + @Language(value = "html", prefix = "") String icon() default "fa fa-dot-circle-o"; @Comment("功能模式") @@ -39,6 +41,7 @@ @Comment("功能类型") Type type() default Type.ERUPT; + @Language("javascript") @Comment("控制按钮显示与隐藏 或 能否点击(JS表达式),变量:item 获取整行数据") String ifExpr() default ""; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Sort.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Sort.java new file mode 100644 index 000000000..c072dc633 --- /dev/null +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Sort.java @@ -0,0 +1,14 @@ +package xyz.erupt.annotation.sub_erupt; + +import org.intellij.lang.annotations.Language; +import xyz.erupt.annotation.query.Direction; + +public @interface Sort { + + @Language(value = "hql", prefix = "select * from t order by ") + String field(); + + Direction direction() default Direction.ASC; + + +} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Tree.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Tree.java index 93809ec32..32597b0b7 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Tree.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_erupt/Tree.java @@ -25,7 +25,7 @@ int expandLevel() default 999; @Transient - @Comment("标识pid为何特征才是根节点,需要与filter配合使用") + @Comment("标识pid为何特征才是根节点,不配置则默认按照 null 作为根节点,需要与 filter 配合使用") Expr rootPid() default @Expr; } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Edit.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Edit.java index a269e50a4..bc8699246 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Edit.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Edit.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.config.EruptProperty; import xyz.erupt.annotation.config.Match; @@ -28,6 +29,12 @@ @Comment("是否显示") boolean show() default true; + @Transient + @Comment("可被 onchange 接口获取到") + String[] onchangeParams() default {}; + + Class onchange() default OnChange.class; + @Transient @Comment("动态渲染配置") ExprBool ifRender() default @ExprBool; @@ -48,6 +55,7 @@ @Transient @Comment("排序表达式,在修饰类型为 ORM 对象时可用") + @Language(value = "sql", prefix = "select * from t order by") String orderBy() default ""; @Transient diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Readonly.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Readonly.java index f9dfcb263..ae5b8f7f7 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Readonly.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/Readonly.java @@ -1,5 +1,7 @@ package xyz.erupt.annotation.sub_field; +import xyz.erupt.annotation.config.Comment; + import java.beans.Transient; /** @@ -12,6 +14,9 @@ boolean edit() default true; + @Comment("是否允许通过 API 修改") + boolean allowChange() default true; + @Transient String[] params() default {}; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/View.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/View.java index f4fbd8c22..542ccf70d 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/View.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/View.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.config.EruptProperty; import xyz.erupt.annotation.expr.ExprBool; @@ -43,12 +44,14 @@ boolean export() default true; @Comment("样式类名") + @Language("css") String className() default ""; @Comment("格式化表格列值,前端使用eval方法解析,支持变量:" + "1、item (表格整行数据)" + "2、item.xxx(数据行中某一列的值)" + "3、value (当前列值)") + @Language("javascript") String template() default ""; } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/AttachmentType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/AttachmentType.java index 804f2ab0e..aec533d4c 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/AttachmentType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/AttachmentType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import java.beans.Transient; @@ -15,6 +16,7 @@ @Transient @Comment("定义独享存储空间,便于文件查找") + @Language("file-reference") String path() default ""; @Comment("允许上传的文件类型") diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ChoiceType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ChoiceType.java index 67741c1e9..7d740c53f 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ChoiceType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ChoiceType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.config.Match; import xyz.erupt.annotation.fun.ChoiceFetchHandler; @@ -27,10 +28,12 @@ @Comment("动态下拉列表") Class[] fetchHandler() default {}; + @Deprecated @Transient @Comment("可被trigger接口获取到") String[] triggerParams() default {}; + @Deprecated @Comment("选择数据时触发动作") @Match("#item.trigger().getSimpleName() != 'ChoiceTrigger'") Class trigger() default ChoiceTrigger.class; @@ -40,16 +43,9 @@ //联动能力 @Comment("联动能力,依赖字段名") + @Language(value = "java", prefix = "private String ", suffix = ";") String dependField() default ""; - @Deprecated - @Comment("联动过滤表达式,支持变量:") - @Comment("dependValue:依赖字段的值") - @Comment("vl.value: 下拉列表项的值") - @Comment("vl.label: 下拉列表项名称") - @Comment("vl.desc: 下拉列表项备注") - String dependExpr() default ""; - enum Type { @Comment("下拉选择") SELECT, diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/CodeEditorType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/CodeEditorType.java index 033ddc55f..f5f64a704 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/CodeEditorType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/CodeEditorType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.fun.CodeEditHintHandler; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/Dynamic.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/Dynamic.java index 84d8893d7..0a759791b 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/Dynamic.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/Dynamic.java @@ -1,6 +1,7 @@ package xyz.erupt.annotation.sub_field.sub_edit; import lombok.Getter; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; /** @@ -13,6 +14,7 @@ String dependField(); @Comment("JS expression,Variable: class field name") + @Language("javascript") String condition(); Ctrl noMatch() default Ctrl.HIDE; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/HtmlEditorType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/HtmlEditorType.java index 0dd9758e2..2ac527fa6 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/HtmlEditorType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/HtmlEditorType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import java.beans.Transient; @@ -15,6 +16,7 @@ @Transient @Comment("定义独享存储空间,便于文件查找") + @Language("file-reference") String path() default ""; enum Type { diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MapType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MapType.java deleted file mode 100644 index bdc74d501..000000000 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MapType.java +++ /dev/null @@ -1,12 +0,0 @@ -package xyz.erupt.annotation.sub_field.sub_edit; - -/** - * @author YuePeng - * date 2020-02-15 - */ -public @interface MapType { - - boolean draw() default false; - - int drawMaxLayer() default 1; -} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MultiChoiceType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MultiChoiceType.java index 3cc18e497..0655a60cf 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MultiChoiceType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/MultiChoiceType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.fun.ChoiceFetchHandler; @@ -26,6 +27,7 @@ Class[] fetchHandler() default {}; @Comment("联动时依赖字段名") + @Language(value = "java", prefix = "private String ", suffix = ";") String dependField() default ""; enum Type { diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/OnChange.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/OnChange.java new file mode 100644 index 000000000..024875275 --- /dev/null +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/OnChange.java @@ -0,0 +1,21 @@ +package xyz.erupt.annotation.sub_field.sub_edit; + +import xyz.erupt.annotation.config.Comment; + +import java.util.Map; + +/** + * @author YuePeng + * date 2026/1/2 22:19 + */ +public interface OnChange { + + @Comment("根据用户输入填充表单") + Map populateForm(MODEL model, String[] params); + + @Comment("根据用户输入动态调整不同的字段的 @Edit 注解配置") + @Comment("demo: return Map.of(\"name\", \"edit.desc='xxxxx'\");") + Map buildEditExpr(MODEL model, String[] params); + + +} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/PasswordType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/PasswordType.java deleted file mode 100644 index 5b133d721..000000000 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/PasswordType.java +++ /dev/null @@ -1,14 +0,0 @@ -package xyz.erupt.annotation.sub_field.sub_edit; - -/** - * @author YuePeng - * date 2023/5/9 22:31 - */ -@Deprecated -public @interface PasswordType { - - //加密次数 - int encryptCount() default 3; - - -} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTableType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTableType.java index 130f139f2..5c8aff329 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTableType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTableType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.constant.AnnotationConst; @@ -18,6 +19,7 @@ String label() default AnnotationConst.LABEL; @Comment("依赖字段") + @Language(value = "java", prefix = "private String ", suffix = ";") String dependField() default ""; @Transient diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTreeType.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTreeType.java index b29420a00..243216f29 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTreeType.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/ReferenceTreeType.java @@ -1,5 +1,6 @@ package xyz.erupt.annotation.sub_field.sub_edit; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; import xyz.erupt.annotation.constant.AnnotationConst; import xyz.erupt.annotation.expr.Expr; @@ -26,6 +27,7 @@ Expr rootPid() default @Expr; @Comment("依赖字段") + @Language(value = "java", prefix = "private String ", suffix = ";") String dependField() default ""; @Transient diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/VL.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/VL.java index 6cef142c0..f78a5faf7 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/VL.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/sub_field/sub_edit/VL.java @@ -10,6 +10,8 @@ String label(); + String color() default ""; + boolean disable() default false; String desc() default ""; diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/BoardView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/BoardView.java new file mode 100644 index 000000000..860255dcb --- /dev/null +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/BoardView.java @@ -0,0 +1,14 @@ +package xyz.erupt.annotation.vis; + +import org.intellij.lang.annotations.Language; + +/** + * @author YuePeng + * date 2025/10/30 23:52 + */ +public @interface BoardView { + + @Language(value = "hql", prefix = "select * from t where ") + String groupField(); + +} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CardView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/CardView.java similarity index 56% rename from erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CardView.java rename to erupt-annotation/src/main/java/xyz/erupt/annotation/vis/CardView.java index 58fd40798..cb49dd2b7 100644 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CardView.java +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/CardView.java @@ -1,5 +1,6 @@ -package xyz.erupt.annotation.viz; +package xyz.erupt.annotation.vis; +import org.intellij.lang.annotations.Language; import xyz.erupt.annotation.config.Comment; /** @@ -9,12 +10,13 @@ public @interface CardView { @Comment("Cover image effect") - GalleryCover coverEffect() default GalleryCover.CLIP; + CoverEffect coverEffect() default CoverEffect.CLIP; @Comment("Cover image field") + @Language(value = "hql", prefix = "select ", suffix = " from") String coverField() default ""; - enum GalleryCover { + enum CoverEffect { FIT, //适应 CLIP, //剪裁 } diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/GanttView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/GanttView.java new file mode 100644 index 000000000..0336429f3 --- /dev/null +++ b/erupt-annotation/src/main/java/xyz/erupt/annotation/vis/GanttView.java @@ -0,0 +1,31 @@ +package xyz.erupt.annotation.vis; + +import org.intellij.lang.annotations.Language; + +/** + * @author YuePeng + * date 2025/10/30 23:52 + */ +public @interface GanttView { + + @Language(value = "hql", prefix = "select ", suffix = " from") + String startDateField(); + + @Language(value = "hql", prefix = "select ", suffix = " from") + String endDateField(); + + @Language(value = "hql", prefix = "select ", suffix = " from") + String groupField() default ""; + + @Language(value = "hql", prefix = "select * from t where ") + String pidField() default ""; + + // max value is 100 + @Language(value = "hql", prefix = "select ", suffix = " from") + String progressField() default ""; + + // hex2rgb + @Language(value = "hql", prefix = "select ", suffix = " from") + String colorField() default ""; + +} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/BoardView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/BoardView.java deleted file mode 100644 index c9b530115..000000000 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/BoardView.java +++ /dev/null @@ -1,11 +0,0 @@ -package xyz.erupt.annotation.viz; - -/** - * @author YuePeng - * date 2025/10/30 23:52 - */ -public @interface BoardView { - - String groupField(); - -} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CalendarView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CalendarView.java deleted file mode 100644 index 608cf8f30..000000000 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/CalendarView.java +++ /dev/null @@ -1,13 +0,0 @@ -//package xyz.erupt.annotation.viz; -// -///** -// * @author YuePeng -// * date 2025/10/30 23:52 -// */ -//public @interface CalendarView { -// -// String startDateField(); -// -// String endDateField(); -// -//} diff --git a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/GanttView.java b/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/GanttView.java deleted file mode 100644 index 913a65db5..000000000 --- a/erupt-annotation/src/main/java/xyz/erupt/annotation/viz/GanttView.java +++ /dev/null @@ -1,15 +0,0 @@ -package xyz.erupt.annotation.viz; - -/** - * @author YuePeng - * date 2025/10/30 23:52 - */ -public @interface GanttView { - - String startDateField(); - - String endDateField(); - - String pidField() default ""; - -} diff --git a/erupt-cloud/erupt-cloud-common/pom.xml b/erupt-cloud/erupt-cloud-common/pom.xml index 39ed01b87..d9b4bde03 100644 --- a/erupt-cloud/erupt-cloud-common/pom.xml +++ b/erupt-cloud/erupt-cloud-common/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-cloud/erupt-cloud-node-jpa/pom.xml b/erupt-cloud/erupt-cloud-node-jpa/pom.xml index 1faa0b2d7..e6fd98ea2 100644 --- a/erupt-cloud/erupt-cloud-node-jpa/pom.xml +++ b/erupt-cloud/erupt-cloud-node-jpa/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-cloud/erupt-cloud-node/pom.xml b/erupt-cloud/erupt-cloud-node/pom.xml index 48c94b9eb..3508e6357 100644 --- a/erupt-cloud/erupt-cloud-node/pom.xml +++ b/erupt-cloud/erupt-cloud-node/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-cloud/erupt-cloud-server/pom.xml b/erupt-cloud/erupt-cloud-server/pom.xml index d1f54f828..53bd86923 100644 --- a/erupt-cloud/erupt-cloud-server/pom.xml +++ b/erupt-cloud/erupt-cloud-server/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/EruptCloudServerAutoConfiguration.java b/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/EruptCloudServerAutoConfiguration.java index 9352b9e1c..2a2e3c845 100644 --- a/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/EruptCloudServerAutoConfiguration.java +++ b/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/EruptCloudServerAutoConfiguration.java @@ -34,7 +34,7 @@ public class EruptCloudServerAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-cloud-server").build(); + return ModuleInfo.builder().name("erupt-cloud-server").description("Erupt Cloud Microservice control center").build(); } @Override diff --git a/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/model/CloudNode.java b/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/model/CloudNode.java index b5c5818a0..086c83a22 100644 --- a/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/model/CloudNode.java +++ b/erupt-cloud/erupt-cloud-server/src/main/java/xyz/erupt/cloud/server/model/CloudNode.java @@ -43,7 +43,7 @@ ), @RowOperation( title = "节点日志", mode = RowOperation.Mode.SINGLE, - ifExpr = "item.version && item.version != '-'", + ifExpr = "item.version && item.version !== '-'", show = @ExprBool(exprHandler = ViaMenuValueCtrl.class, params = CloudServerConst.ERUPT_CLOUD_NODE_LOG), type = RowOperation.Type.TPL, tpl = @Tpl(path = "/tpl/erupt-log.html", height = "80vh", openWay = OpenWay.DRAWER, drawerPlacement = Placement.BOTTOM) ), diff --git a/erupt-core/pom.xml b/erupt-core/pom.xml index 300d4ea2a..aaee5e8bf 100644 --- a/erupt-core/pom.xml +++ b/erupt-core/pom.xml @@ -11,7 +11,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../pom.xml @@ -41,7 +41,7 @@ commons-io commons-io - 2.18.0 + 2.20.0 com.google.code.gson diff --git a/erupt-core/src/main/java/xyz/erupt/core/annotation/EruptRouter.java b/erupt-core/src/main/java/xyz/erupt/core/annotation/EruptRouter.java index 5770f3587..8b776e431 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/annotation/EruptRouter.java +++ b/erupt-core/src/main/java/xyz/erupt/core/annotation/EruptRouter.java @@ -1,8 +1,8 @@ package xyz.erupt.core.annotation; +import jakarta.servlet.http.HttpServletRequest; import xyz.erupt.annotation.config.Comment; -import jakarta.servlet.http.HttpServletRequest; import java.lang.annotation.*; /** @@ -21,6 +21,9 @@ @Comment("配合authIndex使用,计算后权限下标位置为:skipAuthIndex + authIndex") int skipAuthIndex() default 2; + @Comment("高权限检查机制,禁止因为任何原因绕过") + boolean highSafe() default false; + @Comment("权限校验类型") VerifyType verifyType(); diff --git a/erupt-core/src/main/java/xyz/erupt/core/config/GsonFactory.java b/erupt-core/src/main/java/xyz/erupt/core/config/GsonFactory.java index dd8dc48c8..278ead940 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/config/GsonFactory.java +++ b/erupt-core/src/main/java/xyz/erupt/core/config/GsonFactory.java @@ -26,7 +26,8 @@ public class GsonFactory implements ToNumberStrategy { public static final double JS_MIN_NUMBER = -9007199254740991.0; @Getter - private final static GsonBuilder gsonBuilder = new GsonBuilder().setDateFormat(DateUtil.DATE_TIME) + private final static GsonBuilder gsonBuilder = new GsonBuilder() + .setDateFormat(DateUtil.DATE_TIME) .registerTypeAdapter(LocalDateTime.class, (JsonSerializer) (src, typeOfSrc, context) -> new JsonPrimitive(src.format(DateTimeFormatter.ofPattern(DateUtil.DATE_TIME)))) .registerTypeAdapter(LocalDate.class, (JsonSerializer) (src, typeOfSrc, context) @@ -39,6 +40,11 @@ public class GsonFactory implements ToNumberStrategy { .registerTypeAdapter(Double.class, (JsonSerializer) (src, type, jsonSerializationContext) -> serializeDoubleValue(src)) .registerTypeAdapter(BigDecimal.class, (JsonSerializer) (src, type, jsonSerializationContext) -> serializeSafeNumber(src)) .setObjectToNumberStrategy(new GsonFactory()) +// .registerTypeAdapter(Date.class, (JsonSerializer) (src, type, ctx) -> { +// Instant instant = src.toInstant(); +// return new JsonPrimitive( +// DateTimeFormatter.ISO_INSTANT.format(instant)); // 2023-12-13T06:30:45.123Z +// }) .setExclusionStrategies(new EruptGsonExclusionStrategies()); private static JsonPrimitive serializeSafeNumber(Number src) { diff --git a/erupt-core/src/main/java/xyz/erupt/core/controller/EruptDataController.java b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptDataController.java index 716438c64..646f53d40 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/controller/EruptDataController.java +++ b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptDataController.java @@ -1 +1 @@ -package xyz.erupt.core.controller; import com.google.gson.Gson; import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import xyz.erupt.annotation.config.QueryExpression; import xyz.erupt.annotation.constant.AnnotationConst; import xyz.erupt.annotation.fun.OperationHandler; import xyz.erupt.annotation.fun.PowerObject; import xyz.erupt.annotation.model.Row; import xyz.erupt.annotation.query.Condition; import xyz.erupt.annotation.query.Sort; import xyz.erupt.annotation.sub_erupt.Filter; import xyz.erupt.annotation.sub_erupt.RowOperation; import xyz.erupt.annotation.sub_erupt.Tree; import xyz.erupt.annotation.sub_field.Edit; import xyz.erupt.annotation.sub_field.sub_edit.CheckboxType; import xyz.erupt.annotation.sub_field.sub_edit.ReferenceTableType; import xyz.erupt.annotation.sub_field.sub_edit.ReferenceTreeType; import xyz.erupt.core.annotation.EruptRecordOperate; import xyz.erupt.core.annotation.EruptRouter; import xyz.erupt.core.config.GsonFactory; import xyz.erupt.core.constant.EruptConst; import xyz.erupt.core.constant.EruptRestPath; import xyz.erupt.core.exception.EruptNoLegalPowerException; import xyz.erupt.core.i18n.I18nTranslate; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.invoke.DataProxyInvoke; import xyz.erupt.core.invoke.ExprInvoke; import xyz.erupt.core.naming.EruptRowOperationNaming; import xyz.erupt.core.query.Column; import xyz.erupt.core.query.EruptQuery; import xyz.erupt.core.service.EruptCoreService; import xyz.erupt.core.service.EruptService; import xyz.erupt.core.service.PreEruptDataService; import xyz.erupt.core.util.EruptSpringUtil; import xyz.erupt.core.util.EruptUtil; import xyz.erupt.core.util.Erupts; import xyz.erupt.core.util.TypeUtil; import xyz.erupt.core.view.*; import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; /** * @author YuePeng * date 9/28/18. */ @RestController @RequestMapping(EruptRestPath.ERUPT_DATA) @RequiredArgsConstructor @Slf4j public class EruptDataController { private final EruptService eruptService; private final PreEruptDataService preEruptDataService; public static final int MAX_PAGE_SIZE = 50000; private final Gson gson = GsonFactory.getGson(); @PostMapping({"/table/{erupt}"}) @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Page getEruptData(@PathVariable("erupt") String eruptName, @RequestBody TableQuery tableQuery) { if (tableQuery.getPageSize() > MAX_PAGE_SIZE) { tableQuery.setPageSize(MAX_PAGE_SIZE); } return eruptService.getEruptData(EruptCoreService.getErupt(eruptName), tableQuery, null); } @GetMapping("/tree/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getEruptTreeData(@PathVariable("erupt") String eruptName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Erupts.powerLegal(eruptModel, PowerObject::isQuery); Tree tree = eruptModel.getErupt().tree(); return preEruptDataService.geneTree(eruptModel, tree.id(), tree.label(), tree.pid(), tree.rootPid(), EruptQuery.builder().build()); } //获取初始化数据 @GetMapping("/init-value/{erupt}") @SneakyThrows public Map initEruptValue(@PathVariable("erupt") String eruptName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Object obj = eruptModel.getClazz().getDeclaredConstructor().newInstance(); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.addBehavior(obj))); return EruptUtil.generateEruptDataMap(eruptModel, obj); } @GetMapping("/{erupt}/{id}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Map getEruptDataById(@PathVariable("erupt") String eruptName, @PathVariable("id") String id) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Erupts.powerLegal(eruptModel, powerObject -> powerObject.isEdit() || powerObject.isViewDetails()); eruptService.verifyIdPermissions(eruptModel, id); return preEruptDataService.getEruptData(eruptModel, id); } public static final String OPERATOR_PATH_STR = "/operator"; /** * Custom button form initialization values * * @param eruptName eruptName * @param code btn code * @param ids link ids * @return form value */ @PostMapping("/{erupt}" + OPERATOR_PATH_STR + "/{code}/form-value") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @SneakyThrows public Object eruptOperatorFormValue(@PathVariable("erupt") String eruptName, @PathVariable("code") String code, @RequestParam(required = false) List ids) { if (null == ids) ids = new ArrayList<>(); EruptModel eruptModel = EruptCoreService.getErupt(eruptName); RowOperation rowOperation = Arrays.stream(eruptModel.getErupt().rowOperation()).filter(it -> code.equals(it.code())).findFirst().orElseThrow(EruptNoLegalPowerException::new); EruptModel operatorErupt = EruptCoreService.getErupt(rowOperation.eruptClass().getSimpleName()); if (rowOperation.operationHandler().isInterface()) return null; OperationHandler operationHandler = EruptSpringUtil.getBean(rowOperation.operationHandler()); Object eruptForm = rowOperation.eruptClass().getDeclaredConstructor().newInstance(); DataProxyInvoke.invoke(operatorErupt, (dataProxy -> dataProxy.addBehavior(eruptForm))); try { operationHandler.getClass().getDeclaredMethod("eruptFormValue", List.class, operatorErupt.getClazz(), String[].class); return operationHandler.eruptFormValue(ids.stream().map(id -> DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()) .findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id.toString()))).collect(Collectors.toList()), eruptForm, rowOperation.operationParam()); } catch (NoSuchMethodException ignored) { } return eruptForm; } @PostMapping("/{erupt}" + OPERATOR_PATH_STR + "/{code}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @EruptRecordOperate(value = "", dynamicConfig = EruptRowOperationNaming.class) public EruptApiModel eruptOperatorExec(@PathVariable("erupt") String eruptName, @PathVariable("code") String code, @RequestBody JsonObject body) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); RowOperation rowOperation = Arrays.stream(eruptModel.getErupt().rowOperation()).filter(it -> code.equals(it.code())).findFirst().orElseThrow(EruptNoLegalPowerException::new); Erupts.powerLegal(ExprInvoke.getExpr(rowOperation.show())); if (rowOperation.eruptClass() != void.class) { EruptModel erupt = EruptCoreService.getErupt(rowOperation.eruptClass().getSimpleName()); EruptApiModel eruptApiModel = EruptUtil.validateEruptValue(erupt, body.getAsJsonObject("param")); if (eruptApiModel.getStatus() == EruptApiModel.Status.ERROR) return eruptApiModel; } if (rowOperation.operationHandler().isInterface()) { return EruptApiModel.errorApi("Please implement the 'OperationHandler' interface for " + rowOperation.title()); } OperationHandler operationHandler = EruptSpringUtil.getBean(rowOperation.operationHandler()); Object param = null; if (!body.get("param").isJsonNull()) { param = gson.fromJson(body.getAsJsonObject("param"), rowOperation.eruptClass()); } if (rowOperation.mode() == RowOperation.Mode.BUTTON) { String eval = operationHandler.exec(null, param, rowOperation.operationParam()); if (StringUtils.isNotBlank(eval)) { return EruptApiModel.successApi(eval); } else { return EruptApiModel.successApi(I18nTranslate.$translate("erupt.exec_success"), null); } } if (body.get("ids").isJsonArray() && !body.getAsJsonArray("ids").isEmpty()) { List list = new ArrayList<>(); body.getAsJsonArray("ids").forEach(id -> list.add(DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()) .findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id.getAsString())))); String eval = operationHandler.exec(list, param, rowOperation.operationParam()); if (StringUtils.isNotBlank(eval)) { return EruptApiModel.successApi(eval); } } return EruptApiModel.successApi(I18nTranslate.$translate("erupt.exec_success"), null); } @GetMapping("/tab/tree/{erupt}/{tabFieldName}") @EruptRouter(authIndex = 3, verifyType = EruptRouter.VerifyType.ERUPT) public Collection findTabTree(@PathVariable("erupt") String eruptName, @PathVariable("tabFieldName") String tabFieldName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); // Erupts.powerLegal(eruptModel, powerObject -> powerObject.isViewDetails() || powerObject.isEdit()); EruptModel tabEruptModel = EruptCoreService.getErupt(eruptModel.getEruptFieldMap().get(tabFieldName).getFieldReturnName()); Tree tree = tabEruptModel.getErupt().tree(); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(tabFieldName); EruptQuery eruptQuery = EruptQuery.builder().conditionStrings( Arrays.stream(eruptFieldModel.getEruptField().edit().filter()).map(Filter::value).collect(Collectors.toList()) ).build(); return preEruptDataService.geneTree(tabEruptModel, tree.id(), tree.label(), tree.pid(), tree.rootPid(), eruptQuery); } @GetMapping("/{erupt}/checkbox/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Collection> findCheckbox(@PathVariable("erupt") String eruptName, @PathVariable("fieldName") String fieldName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); EruptModel tabEruptModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); CheckboxType checkboxType = eruptFieldModel.getEruptField().edit().checkboxType(); List columns = new ArrayList<>(); columns.add(new Column(checkboxType.id(), AnnotationConst.ID)); columns.add(new Column(checkboxType.label(), AnnotationConst.LABEL)); if (!AnnotationConst.EMPTY_STR.equals(checkboxType.remark())) { columns.add(new Column(checkboxType.remark(), AnnotationConst.REMARK)); } EruptQuery eruptQuery = EruptQuery.builder().conditionStrings( Arrays.stream(eruptFieldModel.getEruptField().edit().filter()).map(Filter::value).collect(Collectors.toList()) ).build(); Collection> collection = preEruptDataService.createColumnQuery(tabEruptModel, columns, eruptQuery); Collection> checkboxModels = new ArrayList<>(collection.size()); collection.forEach(map -> checkboxModels.add(new CheckboxModel<>(map.get(AnnotationConst.ID), map.get(AnnotationConst.LABEL), map.get(AnnotationConst.REMARK)))); return checkboxModels; } // REFERENCE API @PostMapping("/{erupt}/reference-table/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Page getReferenceTable(@PathVariable("erupt") String eruptName, @PathVariable("fieldName") String fieldName, @RequestParam(value = "dependValue", required = false) Serializable dependValue, @RequestParam(value = "tabRef", required = false) Boolean tabRef, @RequestBody TableQuery tableQuery) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); Edit edit = eruptFieldModel.getEruptField().edit(); String dependField = edit.referenceTableType().dependField(); List serverConditions = new ArrayList<>(); List conditions = Arrays.stream(edit.filter()).map(Filter::value).toList(); if (!AnnotationConst.EMPTY_STR.equals(dependField)) { Erupts.requireNonNull(dependValue, I18nTranslate.$translate("erupt.select") + " " + eruptModel.getEruptFieldMap().get(dependField).getEruptField().edit().title()); EruptModel refErupt = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); serverConditions.add(new Condition( eruptFieldModel.getFieldReturnName() + EruptConst.DOT + edit.referenceTableType().dependColumn(), TypeUtil.typeStrConvertObject(dependValue, refErupt.getEruptFieldMap().get(refErupt.getErupt().primaryKeyCol()).getField().getType()), QueryExpression.EQ )); } EruptModel eruptReferenceModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); if (!tabRef) { //由于类加载顺序问题,并未选择在启动时检测 ReferenceTableType referenceTableType = eruptFieldModel.getEruptField().edit().referenceTableType(); Erupts.requireTrue(eruptReferenceModel.getEruptFieldMap().containsKey(referenceTableType.label().split("\\.")[0]) , eruptReferenceModel.getEruptName() + " not found '" + referenceTableType.label() + "' field,please use @ReferenceTableType annotation 'label' config"); } return eruptService.getEruptData(eruptReferenceModel, tableQuery, serverConditions, conditions.toArray(new String[0])); } @SneakyThrows @GetMapping("/depend-tree/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getDependTree(@PathVariable("erupt") String erupt) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); String field = eruptModel.getErupt().linkTree().field(); if (null == eruptModel.getEruptFieldMap().get(field)) { String treeErupt = eruptModel.getClazz().getDeclaredField(field).getType().getSimpleName(); return this.getEruptTreeData(treeErupt); } return this.getReferenceTree(eruptModel.getEruptName(), field, null); } @GetMapping("/{erupt}/reference-tree/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getReferenceTree(@PathVariable("erupt") String erupt, @PathVariable("fieldName") String fieldName, @RequestParam(value = "dependValue", required = false) Serializable dependValue) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); String dependField = eruptFieldModel.getEruptField().edit().referenceTreeType().dependField(); if (!AnnotationConst.EMPTY_STR.equals(dependField)) { Erupts.requireNonNull(dependValue, I18nTranslate.$translate("erupt.select") + " " + eruptModel.getEruptFieldMap().get(dependField).getEruptField().edit().title()); } Edit edit = eruptFieldModel.getEruptField().edit(); ReferenceTreeType treeType = edit.referenceTreeType(); EruptModel referenceEruptModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); Erupts.requireTrue(referenceEruptModel.getEruptFieldMap().containsKey(treeType.label().split("\\.")[0]), referenceEruptModel.getEruptName() + " not found " + treeType.label() + " field, please use @ReferenceTreeType annotation config"); List conditions = new ArrayList<>(); // process depend if (StringUtils.isNotBlank(treeType.dependField()) && null != dependValue) { conditions.add(new Condition(edit.referenceTreeType().dependColumn(), dependValue, QueryExpression.EQ)); } List conditionStrings = Arrays.stream(edit.filter()).map(Filter::value).collect(Collectors.toList()); return preEruptDataService.geneTree(referenceEruptModel, treeType.id(), treeType.label(), treeType.pid(), treeType.rootPid(), EruptQuery.builder().sort(Sort.toSortList(edit.orderBy())).conditionStrings(conditionStrings).conditions(conditions).build()); } //自定义行 @PostMapping("/extra-row/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public List extraRow(@PathVariable("erupt") String erupt, @RequestBody TableQuery tableQuery) { List rows = new ArrayList<>(); DataProxyInvoke.invoke(EruptCoreService.getErupt(erupt), dataProxy -> Optional.ofNullable(dataProxy.extraRow(tableQuery.getCondition())).ifPresent(rows::addAll)); return rows; } } \ No newline at end of file +package xyz.erupt.core.controller; import com.google.gson.Gson; import com.google.gson.JsonObject; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import xyz.erupt.annotation.config.QueryExpression; import xyz.erupt.annotation.constant.AnnotationConst; import xyz.erupt.annotation.fun.OperationHandler; import xyz.erupt.annotation.fun.PowerObject; import xyz.erupt.annotation.model.Row; import xyz.erupt.annotation.query.Condition; import xyz.erupt.annotation.query.Sort; import xyz.erupt.annotation.sub_erupt.Filter; import xyz.erupt.annotation.sub_erupt.RowOperation; import xyz.erupt.annotation.sub_erupt.Tree; import xyz.erupt.annotation.sub_field.Edit; import xyz.erupt.annotation.sub_field.sub_edit.CheckboxType; import xyz.erupt.annotation.sub_field.sub_edit.OnChange; import xyz.erupt.annotation.sub_field.sub_edit.ReferenceTableType; import xyz.erupt.annotation.sub_field.sub_edit.ReferenceTreeType; import xyz.erupt.core.annotation.EruptRecordOperate; import xyz.erupt.core.annotation.EruptRouter; import xyz.erupt.core.config.GsonFactory; import xyz.erupt.core.constant.EruptConst; import xyz.erupt.core.constant.EruptRestPath; import xyz.erupt.core.exception.EruptNoLegalPowerException; import xyz.erupt.core.i18n.I18nTranslate; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.invoke.DataProxyInvoke; import xyz.erupt.core.invoke.ExprInvoke; import xyz.erupt.core.naming.EruptRowOperationNaming; import xyz.erupt.core.query.Column; import xyz.erupt.core.query.EruptQuery; import xyz.erupt.core.service.EruptCoreService; import xyz.erupt.core.service.EruptService; import xyz.erupt.core.service.PreEruptDataService; import xyz.erupt.core.util.EruptSpringUtil; import xyz.erupt.core.util.EruptUtil; import xyz.erupt.core.util.Erupts; import xyz.erupt.core.util.TypeUtil; import xyz.erupt.core.view.*; import java.io.Serializable; import java.util.*; import java.util.stream.Collectors; /** * @author YuePeng * date 9/28/18. */ @RestController @RequestMapping(EruptRestPath.ERUPT_DATA) @RequiredArgsConstructor @Slf4j public class EruptDataController { private final EruptService eruptService; private final PreEruptDataService preEruptDataService; public static final int MAX_PAGE_SIZE = 50000; private final Gson gson = GsonFactory.getGson(); @PostMapping({"/table/{erupt}"}) @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Page getEruptData(@PathVariable("erupt") String eruptName, @RequestBody TableQuery tableQuery) { if (tableQuery.getPageSize() > MAX_PAGE_SIZE) { tableQuery.setPageSize(MAX_PAGE_SIZE); } return eruptService.getEruptData(EruptCoreService.getErupt(eruptName), tableQuery, null); } @GetMapping("/tree/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getEruptTreeData(@PathVariable("erupt") String eruptName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Erupts.powerLegal(eruptModel, PowerObject::isQuery); Tree tree = eruptModel.getErupt().tree(); return preEruptDataService.geneTree(eruptModel, tree.id(), tree.label(), tree.pid(), tree.rootPid(), EruptQuery.builder().build()); } //获取初始化数据 @GetMapping("/init-value/{erupt}") @SneakyThrows @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Map initEruptValue(@PathVariable("erupt") String eruptName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Object obj = eruptModel.getClazz().getDeclaredConstructor().newInstance(); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.addBehavior(obj))); return EruptUtil.generateEruptDataMap(eruptModel, obj); } @GetMapping("/{erupt}/{id}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Map getEruptDataById(@PathVariable("erupt") String eruptName, @PathVariable("id") String id) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Erupts.powerLegal(eruptModel, powerObject -> powerObject.isEdit() || powerObject.isViewDetails()); eruptService.verifyIdPermissions(eruptModel, id); return preEruptDataService.getEruptData(eruptModel, id); } public static final String OPERATOR_PATH_STR = "/operator"; /** * Custom button form initialization values * * @param eruptName eruptName * @param code btn code * @param ids link ids * @return form value */ @PostMapping("/{erupt}" + OPERATOR_PATH_STR + "/{code}/form-value") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @SneakyThrows public Object eruptOperatorFormValue(@PathVariable("erupt") String eruptName, @PathVariable("code") String code, @RequestParam(required = false) List ids) { if (null == ids) ids = new ArrayList<>(); EruptModel eruptModel = EruptCoreService.getErupt(eruptName); RowOperation rowOperation = Arrays.stream(eruptModel.getErupt().rowOperation()).filter(it -> code.equals(it.code())).findFirst().orElseThrow(EruptNoLegalPowerException::new); EruptModel operatorErupt = EruptCoreService.getErupt(rowOperation.eruptClass().getSimpleName()); if (rowOperation.operationHandler().isInterface()) return null; OperationHandler operationHandler = EruptSpringUtil.getBean(rowOperation.operationHandler()); Object eruptForm = rowOperation.eruptClass().getDeclaredConstructor().newInstance(); DataProxyInvoke.invoke(operatorErupt, (dataProxy -> dataProxy.addBehavior(eruptForm))); try { operationHandler.getClass().getDeclaredMethod("eruptFormValue", List.class, operatorErupt.getClazz(), String[].class); return operationHandler.eruptFormValue(ids.stream().map(id -> DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()) .findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id.toString()))).collect(Collectors.toList()), eruptForm, rowOperation.operationParam()); } catch (NoSuchMethodException ignored) { } return eruptForm; } @PostMapping("/{erupt}" + OPERATOR_PATH_STR + "/{code}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @EruptRecordOperate(value = "", dynamicConfig = EruptRowOperationNaming.class) public EruptApiModel eruptOperatorExec(@PathVariable("erupt") String eruptName, @PathVariable("code") String code, @RequestBody JsonObject body) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); RowOperation rowOperation = Arrays.stream(eruptModel.getErupt().rowOperation()).filter(it -> code.equals(it.code())).findFirst().orElseThrow(EruptNoLegalPowerException::new); Erupts.powerLegal(ExprInvoke.getExpr(rowOperation.show())); if (rowOperation.eruptClass() != void.class) { EruptModel erupt = EruptCoreService.getErupt(rowOperation.eruptClass().getSimpleName()); EruptApiModel eruptApiModel = EruptUtil.validateEruptValue(erupt, body.getAsJsonObject("param")); if (eruptApiModel.getStatus() == EruptApiModel.Status.ERROR) return eruptApiModel; } if (rowOperation.operationHandler().isInterface()) { return EruptApiModel.errorApi("Please implement the 'OperationHandler' interface for " + rowOperation.title()); } OperationHandler operationHandler = EruptSpringUtil.getBean(rowOperation.operationHandler()); Object param = null; if (!body.get("param").isJsonNull()) { param = gson.fromJson(body.getAsJsonObject("param"), rowOperation.eruptClass()); } if (rowOperation.mode() == RowOperation.Mode.BUTTON) { String eval = operationHandler.exec(null, param, rowOperation.operationParam()); if (StringUtils.isNotBlank(eval)) { return EruptApiModel.successApi(eval); } else { return EruptApiModel.successApi(I18nTranslate.$translate("erupt.exec_success"), null); } } if (body.get("ids").isJsonArray() && !body.getAsJsonArray("ids").isEmpty()) { List list = new ArrayList<>(); body.getAsJsonArray("ids").forEach(id -> list.add(DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()) .findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id.getAsString())))); String eval = operationHandler.exec(list, param, rowOperation.operationParam()); if (StringUtils.isNotBlank(eval)) { return EruptApiModel.successApi(eval); } } return EruptApiModel.successApi(I18nTranslate.$translate("erupt.exec_success"), null); } @GetMapping("/tab/tree/{erupt}/{tabFieldName}") @EruptRouter(authIndex = 3, verifyType = EruptRouter.VerifyType.ERUPT) public Collection findTabTree(@PathVariable("erupt") String eruptName, @PathVariable("tabFieldName") String tabFieldName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); // Erupts.powerLegal(eruptModel, powerObject -> powerObject.isViewDetails() || powerObject.isEdit()); EruptModel tabEruptModel = EruptCoreService.getErupt(eruptModel.getEruptFieldMap().get(tabFieldName).getFieldReturnName()); Tree tree = tabEruptModel.getErupt().tree(); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(tabFieldName); EruptQuery eruptQuery = EruptQuery.builder().conditionStrings( Arrays.stream(eruptFieldModel.getEruptField().edit().filter()).map(Filter::value).collect(Collectors.toList()) ).build(); return preEruptDataService.geneTree(tabEruptModel, tree.id(), tree.label(), tree.pid(), tree.rootPid(), eruptQuery); } @GetMapping("/{erupt}/checkbox/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Collection> findCheckbox(@PathVariable("erupt") String eruptName, @PathVariable("fieldName") String fieldName) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); EruptModel tabEruptModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); CheckboxType checkboxType = eruptFieldModel.getEruptField().edit().checkboxType(); List columns = new ArrayList<>(); columns.add(new Column(checkboxType.id(), AnnotationConst.ID)); columns.add(new Column(checkboxType.label(), AnnotationConst.LABEL)); if (!AnnotationConst.EMPTY_STR.equals(checkboxType.remark())) { columns.add(new Column(checkboxType.remark(), AnnotationConst.REMARK)); } EruptQuery eruptQuery = EruptQuery.builder().conditionStrings( Arrays.stream(eruptFieldModel.getEruptField().edit().filter()).map(Filter::value).collect(Collectors.toList()) ).build(); Collection> collection = preEruptDataService.createColumnQuery(tabEruptModel, columns, eruptQuery); Collection> checkboxModels = new ArrayList<>(collection.size()); collection.forEach(map -> checkboxModels.add(new CheckboxModel<>(map.get(AnnotationConst.ID), map.get(AnnotationConst.LABEL), map.get(AnnotationConst.REMARK)))); return checkboxModels; } // REFERENCE API @PostMapping("/{erupt}/reference-table/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Page getReferenceTable(@PathVariable("erupt") String eruptName, @PathVariable("fieldName") String fieldName, @RequestParam(value = "dependValue", required = false) Serializable dependValue, @RequestParam(value = "tabRef", required = false) Boolean tabRef, @RequestBody TableQuery tableQuery) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); Edit edit = eruptFieldModel.getEruptField().edit(); String dependField = edit.referenceTableType().dependField(); List serverConditions = new ArrayList<>(); List conditions = Arrays.stream(edit.filter()).map(Filter::value).toList(); if (!AnnotationConst.EMPTY_STR.equals(dependField)) { Erupts.requireNonNull(dependValue, I18nTranslate.$translate("erupt.select") + " " + eruptModel.getEruptFieldMap().get(dependField).getEruptField().edit().title()); EruptModel refErupt = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); serverConditions.add(new Condition( eruptFieldModel.getFieldReturnName() + EruptConst.DOT + edit.referenceTableType().dependColumn(), TypeUtil.typeStrConvertObject(dependValue, refErupt.getEruptFieldMap().get(refErupt.getErupt().primaryKeyCol()).getField().getType()), QueryExpression.EQ )); } EruptModel eruptReferenceModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); if (!tabRef) { //由于类加载顺序问题,并未选择在启动时检测 ReferenceTableType referenceTableType = eruptFieldModel.getEruptField().edit().referenceTableType(); Erupts.requireTrue(eruptReferenceModel.getEruptFieldMap().containsKey(referenceTableType.label().split("\\.")[0]) , eruptReferenceModel.getEruptName() + " not found '" + referenceTableType.label() + "' field,please use @ReferenceTableType annotation 'label' config"); } return eruptService.getEruptData(eruptReferenceModel, tableQuery, serverConditions, conditions.toArray(new String[0])); } @SneakyThrows @GetMapping("/depend-tree/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getDependTree(@PathVariable("erupt") String erupt) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); String field = eruptModel.getErupt().linkTree().field(); if (null == eruptModel.getEruptFieldMap().get(field)) { String treeErupt = eruptModel.getClazz().getDeclaredField(field).getType().getSimpleName(); return this.getEruptTreeData(treeErupt); } return this.getReferenceTree(eruptModel.getEruptName(), field, null); } @GetMapping("/{erupt}/reference-tree/{fieldName}") @EruptRouter(authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public Collection getReferenceTree(@PathVariable("erupt") String erupt, @PathVariable("fieldName") String fieldName, @RequestParam(value = "dependValue", required = false) Serializable dependValue) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); EruptFieldModel eruptFieldModel = eruptModel.getEruptFieldMap().get(fieldName); String dependField = eruptFieldModel.getEruptField().edit().referenceTreeType().dependField(); if (!AnnotationConst.EMPTY_STR.equals(dependField)) { Erupts.requireNonNull(dependValue, I18nTranslate.$translate("erupt.select") + " " + eruptModel.getEruptFieldMap().get(dependField).getEruptField().edit().title()); } Edit edit = eruptFieldModel.getEruptField().edit(); ReferenceTreeType treeType = edit.referenceTreeType(); EruptModel referenceEruptModel = EruptCoreService.getErupt(eruptFieldModel.getFieldReturnName()); Erupts.requireTrue(referenceEruptModel.getEruptFieldMap().containsKey(treeType.label().split("\\.")[0]), referenceEruptModel.getEruptName() + " not found " + treeType.label() + " field, please use @ReferenceTreeType annotation config"); List conditions = new ArrayList<>(); // process depend if (StringUtils.isNotBlank(treeType.dependField()) && null != dependValue) { conditions.add(new Condition(edit.referenceTreeType().dependColumn(), dependValue, QueryExpression.EQ)); } List conditionStrings = Arrays.stream(edit.filter()).map(Filter::value).collect(Collectors.toList()); return preEruptDataService.geneTree(referenceEruptModel, treeType.id(), treeType.label(), treeType.pid(), treeType.rootPid(), EruptQuery.builder().sort(Sort.toSortList(edit.orderBy())).conditionStrings(conditionStrings).conditions(conditions).build()); } //自定义行 @PostMapping("/extra-row/{erupt}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public List extraRow(@PathVariable("erupt") String erupt, @RequestBody TableQuery tableQuery) { List rows = new ArrayList<>(); DataProxyInvoke.invoke(EruptCoreService.getErupt(erupt), dataProxy -> Optional.ofNullable(dataProxy.extraRow(tableQuery.getCondition())).ifPresent(rows::addAll)); return rows; } @PostMapping("/onchange/{erupt}/{field}") @EruptRouter(authIndex = 2, verifyType = EruptRouter.VerifyType.ERUPT) public R onChange(@PathVariable("erupt") String eruptName, @PathVariable("field") String field, @RequestBody JsonObject data) { EruptModel eruptModel = EruptCoreService.getErupt(eruptName); Edit edit = eruptModel.getEruptFieldMap().get(field).getEruptField().edit(); Object o = gson.fromJson(data.toString(), eruptModel.getClazz()); OnChange onChange = EruptSpringUtil.getBean(edit.onchange()); OnChangeVo onChangeVo = new OnChangeVo(); onChangeVo.setFormData(onChange.populateForm(o, edit.onchangeParams())); onChangeVo.setEditExpr(onChange.buildEditExpr(o, edit.onchangeParams())); return R.ok(onChangeVo); } } \ No newline at end of file diff --git a/erupt-core/src/main/java/xyz/erupt/core/controller/EruptGanttController.java b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptGanttController.java new file mode 100644 index 000000000..fa8804d35 --- /dev/null +++ b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptGanttController.java @@ -0,0 +1,73 @@ +package xyz.erupt.core.controller; + +import jakarta.transaction.Transactional; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import xyz.erupt.annotation.Vis; +import xyz.erupt.annotation.fun.PowerObject; +import xyz.erupt.core.annotation.EruptRouter; +import xyz.erupt.core.constant.EruptRestPath; +import xyz.erupt.core.invoke.DataProcessorManager; +import xyz.erupt.core.invoke.DataProxyInvoke; +import xyz.erupt.core.service.EruptCoreService; +import xyz.erupt.core.util.DateUtil; +import xyz.erupt.core.util.Erupts; +import xyz.erupt.core.util.ReflectUtil; +import xyz.erupt.core.view.EruptModel; +import xyz.erupt.core.view.R; + +import java.lang.reflect.Field; + +/** + * @author YuePeng + * date 2025/11/15 00:25 + */ +@Slf4j +@RestController +@RequestMapping(EruptRestPath.ERUPT_DATA_MODIFY + "/gantt") +@RequiredArgsConstructor +public class EruptGanttController { + + @PostMapping("/{erupt}/update_date") + @EruptRouter(skipAuthIndex = 4, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) + @Transactional + @SneakyThrows + public R updateDate(@PathVariable String erupt, @RequestBody visGanttDateCommand command) { + EruptModel eruptModel = EruptCoreService.getErupt(erupt); + Erupts.powerLegal(eruptModel, PowerObject::isEdit); + for (Vis vis : eruptModel.getErupt().vis()) { + if (vis.code().equals(command.getVisCode())) { + Object obj = DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).findDataById(eruptModel, command.getPk()); + Field startField = ReflectUtil.findClassField(obj.getClass(), vis.ganttView().startDateField()); + Field endField = ReflectUtil.findClassField(obj.getClass(), vis.ganttView().endDateField()); + startField.set(obj, DateUtil.getDate(startField.getType(), command.getStartDate())); + endField.set(obj, DateUtil.getDate(endField.getType(), command.getEndDate())); + DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeUpdate(obj))); + DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).editData(eruptModel, obj); + DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeUpdate(obj))); + break; + } + } + return R.ok(); + } + + + @Getter + @Setter + public static class visGanttDateCommand { + + private String visCode; + + private Object pk; + + private String startDate; + + private String endDate; + + } + +} diff --git a/erupt-core/src/main/java/xyz/erupt/core/controller/EruptModifyController.java b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptModifyController.java index 538485bc9..d12c4fc2a 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/controller/EruptModifyController.java +++ b/erupt-core/src/main/java/xyz/erupt/core/controller/EruptModifyController.java @@ -1 +1 @@ -package xyz.erupt.core.controller; import com.google.gson.JsonObject; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.*; import xyz.erupt.annotation.SceneEnum; import xyz.erupt.annotation.fun.PowerObject; import xyz.erupt.core.annotation.EruptRecordOperate; import xyz.erupt.core.annotation.EruptRouter; import xyz.erupt.core.config.GsonFactory; import xyz.erupt.core.constant.EruptRestPath; import xyz.erupt.core.event.EruptAddEvent; import xyz.erupt.core.event.EruptDeleteEvent; import xyz.erupt.core.event.EruptEditEvent; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.invoke.DataProxyInvoke; import xyz.erupt.core.naming.EruptRecordNaming; import xyz.erupt.core.service.EruptCoreService; import xyz.erupt.core.service.EruptModifyService; import xyz.erupt.core.service.EruptService; import xyz.erupt.core.service.IEruptDataService; import xyz.erupt.core.util.EruptUtil; import xyz.erupt.core.util.Erupts; import xyz.erupt.core.util.ReflectUtil; import xyz.erupt.core.view.EruptApiModel; import xyz.erupt.core.view.EruptModel; import xyz.erupt.core.view.R; import java.util.List; /** * Erupt 对数据的增删改查 * * @author YuePeng * date 9/28/18. */ @Slf4j @RestController @RequestMapping(EruptRestPath.ERUPT_DATA_MODIFY) @RequiredArgsConstructor public class EruptModifyController { private final EruptService eruptService; private final EruptModifyService eruptModifyService; private final ApplicationEventPublisher applicationEventPublisher; @PostMapping({"/{erupt}"}) @EruptRecordOperate(value = "INSERT", dynamicConfig = EruptRecordNaming.class) @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) public R addEruptData(@PathVariable("erupt") String erupt, @RequestBody JsonObject data) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isAdd); eruptModifyService.insertEruptData(eruptModel, data); return R.ok(); } @SneakyThrows public void batchAddEruptData(EruptModel eruptModel, List list) { for (Object data : list) { DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeAdd(data))); } DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).batchAddData(eruptModel, list); for (Object obj : list) { eruptModifyService.modifyLog(eruptModel, "ADD", GsonFactory.getGson().toJson(obj)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterAdd(obj))); applicationEventPublisher.publishEvent(new EruptAddEvent<>(eruptModel.getClazz(), obj)); } } @PostMapping("/{erupt}/update") @EruptRecordOperate(value = "UPDATE", dynamicConfig = EruptRecordNaming.class) @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @Transactional @SneakyThrows public R updateEruptData(@PathVariable("erupt") String erupt, @RequestBody JsonObject data) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isEdit); EruptApiModel eruptApiModel = EruptUtil.validateEruptValue(eruptModel, data); if (eruptApiModel.getStatus() == EruptApiModel.Status.ERROR) return R.error(eruptApiModel.getMessage()); eruptService.verifyIdPermissions(eruptModel, data.get(eruptModel.getErupt().primaryKeyCol()).getAsString()); Object o = GsonFactory.getGson().fromJson(data.toString(), eruptModel.getClazz()); EruptUtil.clearObjectDefaultValueByJson(o, data); Object old = DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).findDataById(eruptModel, ReflectUtil.findClassField(eruptModel.getClazz(), eruptModel.getErupt().primaryKeyCol()).get(o)); Object realOld = eruptModel.getClazz().getDeclaredConstructor().newInstance(); BeanUtils.copyProperties(old, realOld); Object obj = EruptUtil.dataTarget(eruptModel, o, old, SceneEnum.EDIT); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeUpdate(obj))); DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).editData(eruptModel, obj); eruptModifyService.modifyLog(eruptModel, "UPDATE", GsonFactory.getGson().toJson(realOld) + " -> " + data); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterUpdate(obj))); applicationEventPublisher.publishEvent(new EruptEditEvent<>(eruptModel.getClazz(), obj, realOld)); return R.ok(); } @PostMapping("/{erupt}/delete") @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT) @EruptRecordOperate(value = "DELETE", dynamicConfig = EruptRecordNaming.class) @Transactional public R deleteEruptData(@PathVariable("erupt") String erupt, @RequestBody String[] ids) { for (String id : ids) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isDelete); eruptService.verifyIdPermissions(eruptModel, id); IEruptDataService dataService = DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()); //获取对象数据信息用于DataProxy函数中 Object obj = dataService.findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeDelete(obj))); dataService.deleteData(eruptModel, obj); eruptModifyService.modifyLog(eruptModel, "DELETE", GsonFactory.getGson().toJson(obj)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterDelete(obj))); applicationEventPublisher.publishEvent(new EruptDeleteEvent<>(eruptModel.getClazz(), obj)); } return R.ok(); } } \ No newline at end of file +package xyz.erupt.core.controller; import com.google.gson.JsonObject; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.context.ApplicationEventPublisher; import org.springframework.web.bind.annotation.*; import xyz.erupt.annotation.constant.SceneEnum; import xyz.erupt.annotation.fun.PowerObject; import xyz.erupt.core.annotation.EruptRecordOperate; import xyz.erupt.core.annotation.EruptRouter; import xyz.erupt.core.config.GsonFactory; import xyz.erupt.core.constant.EruptRestPath; import xyz.erupt.core.event.EruptAddEvent; import xyz.erupt.core.event.EruptDeleteEvent; import xyz.erupt.core.event.EruptEditEvent; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.invoke.DataProxyInvoke; import xyz.erupt.core.naming.EruptRecordNaming; import xyz.erupt.core.service.EruptCoreService; import xyz.erupt.core.service.EruptModifyService; import xyz.erupt.core.service.EruptService; import xyz.erupt.core.service.IEruptDataService; import xyz.erupt.core.util.EruptUtil; import xyz.erupt.core.util.Erupts; import xyz.erupt.core.util.ReflectUtil; import xyz.erupt.core.view.EruptApiModel; import xyz.erupt.core.view.EruptModel; import xyz.erupt.core.view.R; import java.util.List; /** * Erupt 对数据的增删改查 * * @author YuePeng * date 9/28/18. */ @Slf4j @RestController @RequestMapping(EruptRestPath.ERUPT_DATA_MODIFY) @RequiredArgsConstructor public class EruptModifyController { private final EruptService eruptService; private final EruptModifyService eruptModifyService; private final ApplicationEventPublisher applicationEventPublisher; @PostMapping({"/{erupt}"}) @EruptRecordOperate(value = "INSERT", dynamicConfig = EruptRecordNaming.class) @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT, highSafe = true) public R addEruptData(@PathVariable("erupt") String erupt, @RequestBody JsonObject data) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isAdd); eruptModifyService.insertEruptData(eruptModel, data); return R.ok(); } @SneakyThrows public void batchAddEruptData(EruptModel eruptModel, List list) { for (Object data : list) { DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeAdd(data))); } DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).batchAddData(eruptModel, list); for (Object obj : list) { eruptModifyService.modifyLog(eruptModel, "ADD", GsonFactory.getGson().toJson(obj)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterAdd(obj))); applicationEventPublisher.publishEvent(new EruptAddEvent<>(eruptModel.getClazz(), obj)); } } @PostMapping("/{erupt}/update") @EruptRecordOperate(value = "UPDATE", dynamicConfig = EruptRecordNaming.class) @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT, highSafe = true) @Transactional @SneakyThrows public R updateEruptData(@PathVariable("erupt") String erupt, @RequestBody JsonObject data) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isEdit); EruptApiModel eruptApiModel = EruptUtil.validateEruptValue(eruptModel, data); if (eruptApiModel.getStatus() == EruptApiModel.Status.ERROR) return R.error(eruptApiModel.getMessage()); eruptService.verifyIdPermissions(eruptModel, data.get(eruptModel.getErupt().primaryKeyCol()).getAsString()); Object o = GsonFactory.getGson().fromJson(data.toString(), eruptModel.getClazz()); EruptUtil.clearObjectDefaultValueByJson(o, data); Object old = DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).findDataById(eruptModel, ReflectUtil.findClassField(eruptModel.getClazz(), eruptModel.getErupt().primaryKeyCol()).get(o)); Object realOld = eruptModel.getClazz().getDeclaredConstructor().newInstance(); BeanUtils.copyProperties(old, realOld); Object obj = EruptUtil.dataTarget(eruptModel, o, old, SceneEnum.EDIT); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeUpdate(obj))); DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()).editData(eruptModel, obj); eruptModifyService.modifyLog(eruptModel, "UPDATE", GsonFactory.getGson().toJson(realOld) + " -> " + data); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterUpdate(obj))); applicationEventPublisher.publishEvent(new EruptEditEvent<>(eruptModel.getClazz(), obj, realOld)); return R.ok(); } @PostMapping("/{erupt}/delete") @EruptRouter(skipAuthIndex = 3, authIndex = 1, verifyType = EruptRouter.VerifyType.ERUPT, highSafe = true) @EruptRecordOperate(value = "DELETE", dynamicConfig = EruptRecordNaming.class) @Transactional public R deleteEruptData(@PathVariable("erupt") String erupt, @RequestBody String[] ids) { for (String id : ids) { EruptModel eruptModel = EruptCoreService.getErupt(erupt); Erupts.powerLegal(eruptModel, PowerObject::isDelete); eruptService.verifyIdPermissions(eruptModel, id); IEruptDataService dataService = DataProcessorManager.getEruptDataProcessor(eruptModel.getClazz()); //获取对象数据信息用于DataProxy函数中 Object obj = dataService.findDataById(eruptModel, EruptUtil.toEruptId(eruptModel, id)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.beforeDelete(obj))); dataService.deleteData(eruptModel, obj); eruptModifyService.modifyLog(eruptModel, "DELETE", GsonFactory.getGson().toJson(obj)); DataProxyInvoke.invoke(eruptModel, (dataProxy -> dataProxy.afterDelete(obj))); applicationEventPublisher.publishEvent(new EruptDeleteEvent<>(eruptModel.getClazz(), obj)); } return R.ok(); } } \ No newline at end of file diff --git a/erupt-core/src/main/java/xyz/erupt/core/i18n/I18nTranslate.java b/erupt-core/src/main/java/xyz/erupt/core/i18n/I18nTranslate.java index faed3d896..c95874955 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/i18n/I18nTranslate.java +++ b/erupt-core/src/main/java/xyz/erupt/core/i18n/I18nTranslate.java @@ -46,7 +46,6 @@ public String getLang() { if (I18nRunner.langs().contains(lang)) { return lang; } else { - log.warn("Error: Invalid lang: {}", lang); return null; } } catch (Exception ignored) { diff --git a/erupt-core/src/main/java/xyz/erupt/core/module/MetaMenu.java b/erupt-core/src/main/java/xyz/erupt/core/module/MetaMenu.java index 1860a7412..d1138d806 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/module/MetaMenu.java +++ b/erupt-core/src/main/java/xyz/erupt/core/module/MetaMenu.java @@ -63,7 +63,7 @@ public static MetaMenu createSimpleMenu(String code, String name, String value, } public static MetaMenu createEruptClassMenu(Class eruptClass, MetaMenu parent, Integer sort, MenuTypeEnum menuTypeEnum, MenuStatus menuStatus) { - return createSimpleMenu(eruptClass.getSimpleName(), I18nTranslate.$translate(eruptClass.getAnnotation(Erupt.class).name()), + return createSimpleMenu(eruptClass.getSimpleName(), eruptClass.getAnnotation(Erupt.class).name(), eruptClass.getSimpleName(), parent, sort, "", menuTypeEnum.getCode(), menuStatus); } diff --git a/erupt-core/src/main/java/xyz/erupt/core/module/ModuleInfo.java b/erupt-core/src/main/java/xyz/erupt/core/module/ModuleInfo.java index 3137e083f..041ca967a 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/module/ModuleInfo.java +++ b/erupt-core/src/main/java/xyz/erupt/core/module/ModuleInfo.java @@ -15,4 +15,6 @@ public class ModuleInfo { private String name; + private String description; + } diff --git a/erupt-core/src/main/java/xyz/erupt/core/proxy/EruptProxy.java b/erupt-core/src/main/java/xyz/erupt/core/proxy/EruptProxy.java index c98e78c21..090657d4c 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/proxy/EruptProxy.java +++ b/erupt-core/src/main/java/xyz/erupt/core/proxy/EruptProxy.java @@ -3,14 +3,14 @@ import lombok.SneakyThrows; import org.aopalliance.intercept.MethodInvocation; import xyz.erupt.annotation.Erupt; -import xyz.erupt.annotation.Viz; +import xyz.erupt.annotation.Vis; import xyz.erupt.annotation.sub_erupt.Drill; import xyz.erupt.annotation.sub_erupt.RowOperation; import xyz.erupt.core.invoke.ExprInvoke; import xyz.erupt.core.proxy.erupt.DrillProxy; import xyz.erupt.core.proxy.erupt.FilterProxy; import xyz.erupt.core.proxy.erupt.RowOperationProxy; -import xyz.erupt.core.proxy.erupt.VizProxy; +import xyz.erupt.core.proxy.erupt.VisProxy; import java.util.ArrayList; import java.util.List; @@ -44,15 +44,15 @@ protected Object invocation(MethodInvocation invocation) { } } return proxyDrills.toArray(new Drill[0]); - } else if (super.matchMethod(invocation, Erupt::viz)) { - Viz[] viz = this.rawAnnotation.viz(); - List proxyViz = new ArrayList<>(); - for (Viz v : viz) { + } else if (super.matchMethod(invocation, Erupt::vis)) { + Vis[] vis = this.rawAnnotation.vis(); + List proxyVis = new ArrayList<>(); + for (Vis v : vis) { if (ExprInvoke.getExpr(v.show())) { - proxyViz.add(AnnotationProxyPool.getOrPut(v, it -> new VizProxy().newProxy(it, this))); + proxyVis.add(AnnotationProxyPool.getOrPut(v, it -> new VisProxy().newProxy(it, this))); } } - return proxyViz.toArray(new Viz[0]); + return proxyVis.toArray(new Vis[0]); } else if (super.matchMethod(invocation, Erupt::name)) { return ProxyContext.translate(this.rawAnnotation.name()); } diff --git a/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VizProxy.java b/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VisProxy.java similarity index 68% rename from erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VizProxy.java rename to erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VisProxy.java index 9b31ee10b..1e265e1d7 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VizProxy.java +++ b/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt/VisProxy.java @@ -2,22 +2,22 @@ import org.aopalliance.intercept.MethodInvocation; import xyz.erupt.annotation.Erupt; -import xyz.erupt.annotation.Viz; +import xyz.erupt.annotation.Vis; import xyz.erupt.annotation.constant.AnnotationConst; import xyz.erupt.core.proxy.AnnotationProxy; import xyz.erupt.core.proxy.ProxyContext; -public class VizProxy extends AnnotationProxy { +public class VisProxy extends AnnotationProxy { @Override protected Object invocation(MethodInvocation invocation) { - if (super.matchMethod(invocation, Viz::code) && AnnotationConst.EMPTY_STR.equals(this.rawAnnotation.code())) { + if (super.matchMethod(invocation, Vis::code) && AnnotationConst.EMPTY_STR.equals(this.rawAnnotation.code())) { return Integer.toString(this.rawAnnotation.title().hashCode()); - } else if (super.matchMethod(invocation, Viz::title)) { + } else if (super.matchMethod(invocation, Vis::title)) { return ProxyContext.translate(this.rawAnnotation.title()); - } else if (super.matchMethod(invocation, Viz::desc)) { + } else if (super.matchMethod(invocation, Vis::desc)) { return ProxyContext.translate(this.rawAnnotation.desc()); - } else if (super.matchMethod(invocation, Viz::filter)) { + } else if (super.matchMethod(invocation, Vis::filter)) { return FilterProxy.proxy(this.rawAnnotation.filter(), this); } return this.invoke(invocation); diff --git a/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt_field/EditProxy.java b/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt_field/EditProxy.java index b19ce1120..d4f28dd32 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt_field/EditProxy.java +++ b/erupt-core/src/main/java/xyz/erupt/core/proxy/erupt_field/EditProxy.java @@ -41,7 +41,7 @@ protected Object invocation(MethodInvocation invocation) { } return this.rawAnnotation.type(); } else if (super.matchMethod(invocation, Edit::filter)) { - return FilterProxy.proxy(this.rawAnnotation.filter(),this); + return FilterProxy.proxy(this.rawAnnotation.filter(), this); } else if (super.matchMethod(invocation, Edit::readonly)) { return AnnotationProxyPool.getOrPut(this.rawAnnotation.readonly(), readonly -> new ReadonlyProxy().newProxy(readonly, this)); } else if (super.matchMethod(invocation, Edit::title)) { diff --git a/erupt-core/src/main/java/xyz/erupt/core/service/EruptModifyService.java b/erupt-core/src/main/java/xyz/erupt/core/service/EruptModifyService.java index 66237c313..c292606d0 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/service/EruptModifyService.java +++ b/erupt-core/src/main/java/xyz/erupt/core/service/EruptModifyService.java @@ -18,6 +18,7 @@ import xyz.erupt.core.exception.EruptWebApiRuntimeException; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.invoke.DataProxyInvoke; +import xyz.erupt.core.util.EruptSpringUtil; import xyz.erupt.core.util.EruptUtil; import xyz.erupt.core.util.ReflectUtil; import xyz.erupt.core.view.EruptApiModel; @@ -44,8 +45,10 @@ public class EruptModifyService { @SneakyThrows public Object eruptInsertDataProcess(EruptModel eruptModel, JsonObject data) { Map extraData = new HashMap<>(); - this.setLinkValue(eruptModel, extraData); - this.setDrillValue(eruptModel, extraData); + if (EruptSpringUtil.isMvcContext()) { + this.setLinkValue(eruptModel, extraData); + this.setDrillValue(eruptModel, extraData); + } return EruptUtil.jsonToEruptEntity(eruptModel, data, extraData); } diff --git a/erupt-core/src/main/java/xyz/erupt/core/service/EruptService.java b/erupt-core/src/main/java/xyz/erupt/core/service/EruptService.java index d98102a50..17bbf274a 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/service/EruptService.java +++ b/erupt-core/src/main/java/xyz/erupt/core/service/EruptService.java @@ -6,14 +6,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; -import xyz.erupt.annotation.Viz; +import xyz.erupt.annotation.Vis; import xyz.erupt.annotation.config.QueryExpression; import xyz.erupt.annotation.fun.PowerObject; import xyz.erupt.annotation.query.Condition; -import xyz.erupt.annotation.sub_erupt.Filter; -import xyz.erupt.annotation.sub_erupt.Layout; -import xyz.erupt.annotation.sub_erupt.Link; -import xyz.erupt.annotation.sub_erupt.LinkTree; +import xyz.erupt.annotation.sub_erupt.*; import xyz.erupt.core.constant.EruptConst; import xyz.erupt.core.constant.EruptReqHeader; import xyz.erupt.core.exception.EruptNoLegalPowerException; @@ -78,12 +75,20 @@ public Page getEruptData(EruptModel eruptModel, TableQuery tableQuery, List Optional.ofNullable(dataProxy.beforeFetch(legalConditions)).ifPresent(conditionStrings::add))); - if (null != tableQuery.getViz()) { - for (Viz viz : eruptModel.getErupt().viz()) { - if (viz.code().equals(tableQuery.getViz())) { - for (Filter filter : viz.filter()) { + if (null != tableQuery.getVis()) { + for (Vis vis : eruptModel.getErupt().vis()) { + if (vis.code().equals(tableQuery.getVis())) { + for (Filter filter : vis.filter()) { conditionStrings.add(filter.value()); } + if (vis.orderBy().length > 0) { + if (null == tableQuery.getSort() || tableQuery.getSort().isEmpty()) { + tableQuery.setSort(new ArrayList<>()); + for (Sort sort : vis.orderBy()) { + tableQuery.getSort().add(new xyz.erupt.annotation.query.Sort(sort.field(), sort.direction())); + } + } + } } } } diff --git a/erupt-core/src/main/java/xyz/erupt/core/util/DateUtil.java b/erupt-core/src/main/java/xyz/erupt/core/util/DateUtil.java index 89fe4b517..0929c159e 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/util/DateUtil.java +++ b/erupt-core/src/main/java/xyz/erupt/core/util/DateUtil.java @@ -21,6 +21,8 @@ public class DateUtil { public static final String DATE_TIME = "yyyy-MM-dd HH:mm:ss"; + public static final String ISO_8601 = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"; + private static final String[] PATTERNS = { "yyyy-MM-dd'T'HH:mm:ss", // ISO 8601 specification,T segmentation "yyyy-MM-dd' 'HH:mm:ss.SSS", // SQL/DB TIMESTAMP @@ -61,7 +63,7 @@ public static Object getDate(Class targetDateType, String str) { return new SimpleDateFormat(DATE_TIME).parse(str); } } else if (targetDateType == LocalDate.class) { - return LocalDate.parse(str, DateTimeFormatter.ofPattern(DATE)); + return LocalDate.parse(str.substring(0, 10), DateTimeFormatter.ofPattern(DATE)); } else if (targetDateType == LocalDateTime.class) { return LocalDateTime.parse(str, DateTimeFormatter.ofPattern(DATE_TIME)); } else { diff --git a/erupt-core/src/main/java/xyz/erupt/core/util/EruptSpringUtil.java b/erupt-core/src/main/java/xyz/erupt/core/util/EruptSpringUtil.java index db431ae44..3a3173353 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/util/EruptSpringUtil.java +++ b/erupt-core/src/main/java/xyz/erupt/core/util/EruptSpringUtil.java @@ -14,6 +14,8 @@ import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; import java.util.function.Consumer; @@ -62,6 +64,11 @@ public static T getBeanByPath(String path, Class clazz) throws ClassNotFo return clazz.cast(getBean(Class.forName(path))); } + public static boolean isMvcContext(){ + ServletRequestAttributes attrs = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + return attrs != null; + } + /** * Scan all matching classes according to the corresponding rules * diff --git a/erupt-core/src/main/java/xyz/erupt/core/util/EruptUtil.java b/erupt-core/src/main/java/xyz/erupt/core/util/EruptUtil.java index 8bd77454b..33c0627e2 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/util/EruptUtil.java +++ b/erupt-core/src/main/java/xyz/erupt/core/util/EruptUtil.java @@ -8,9 +8,9 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import xyz.erupt.annotation.EruptField; -import xyz.erupt.annotation.SceneEnum; import xyz.erupt.annotation.config.QueryExpression; import xyz.erupt.annotation.constant.AnnotationConst; +import xyz.erupt.annotation.constant.SceneEnum; import xyz.erupt.annotation.exception.EruptException; import xyz.erupt.annotation.fun.AttachmentProxy; import xyz.erupt.annotation.fun.VLModel; @@ -40,6 +40,7 @@ import java.lang.reflect.Field; import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -134,7 +135,15 @@ public static Map generateEruptDataMap(EruptModel eruptModel, Ob map.put(field.getName(), list); break; default: - map.put(field.getName(), value); + if (value instanceof Date d) { + map.put(field.getName(), DateUtil.getFormatDate(d, DateUtil.ISO_8601)); + } else if (value instanceof LocalDate ld) { + map.put(field.getName(), ld.format(DateTimeFormatter.ISO_LOCAL_DATE)); + } else if (value instanceof LocalDateTime ldt) { + map.put(field.getName(), ldt.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); + } else { + map.put(field.getName(), value); + } break; } } @@ -151,11 +160,11 @@ public static Map getChoiceMap(EruptModel eruptModel, Edit edit) public static List getChoiceList(EruptModel eruptModel, Edit edit) { List vls = new ArrayList<>(); if (edit.type() == EditType.CHOICE) { - vls.addAll(Stream.of(edit.choiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.disable())).toList()); + vls.addAll(Stream.of(edit.choiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.color(), vl.disable())).toList()); Stream.of(edit.choiceType().fetchHandler()).filter(clazz -> !clazz.isInterface()).forEach(clazz -> Optional.ofNullable(EruptSpringUtil.getBean(clazz).fetch(edit.choiceType().fetchHandlerParams())).ifPresent(vls::addAll)); } else if (edit.type() == EditType.MULTI_CHOICE) { - vls.addAll(Stream.of(edit.multiChoiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.disable())).toList()); + vls.addAll(Stream.of(edit.multiChoiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.color(), vl.disable())).toList()); Stream.of(edit.multiChoiceType().fetchHandler()).filter(clazz -> !clazz.isInterface()).forEach(clazz -> Optional.ofNullable(EruptSpringUtil.getBean(clazz).fetch(edit.multiChoiceType().fetchHandlerParams())).ifPresent(vls::addAll)); } @@ -168,11 +177,11 @@ public static List getChoiceList(EruptModel eruptModel, Edit edit) { public static List getChoiceListFilter(EruptModel eruptModel, Edit edit, Map formData) { List vls = new ArrayList<>(); if (edit.type() == EditType.CHOICE) { - vls.addAll(Stream.of(edit.choiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.disable())).toList()); + vls.addAll(Stream.of(edit.choiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.color(), vl.disable())).toList()); Stream.of(edit.choiceType().fetchHandler()).filter(clazz -> !clazz.isInterface()).forEach(clazz -> Optional.ofNullable(EruptSpringUtil.getBean(clazz).fetchFilter(formData, edit.choiceType().fetchHandlerParams())).ifPresent(vls::addAll)); } else if (edit.type() == EditType.MULTI_CHOICE) { - vls.addAll(Stream.of(edit.multiChoiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.disable())).toList()); + vls.addAll(Stream.of(edit.multiChoiceType().vl()).map(vl -> new VLModel(vl.value(), vl.label(), vl.desc(), vl.color(), vl.disable())).toList()); Stream.of(edit.multiChoiceType().fetchHandler()).filter(clazz -> !clazz.isInterface()).forEach(clazz -> Optional.ofNullable(EruptSpringUtil.getBean(clazz).fetchFilter(formData, edit.multiChoiceType().fetchHandlerParams())).ifPresent(vls::addAll)); } @@ -385,6 +394,9 @@ public static Object dataTarget(EruptModel eruptModel, Object data, Object targe for (EruptFieldModel fieldModel : eruptModel.getEruptFieldModels()) { EruptField eruptField = fieldModel.getEruptField(); boolean readonly = sceneEnum == SceneEnum.EDIT ? eruptField.edit().readonly().edit() : eruptField.edit().readonly().add(); + if (eruptField.edit().readonly().allowChange()) { + readonly = false; + } if (StringUtils.isNotBlank(eruptField.edit().title()) && !readonly) { Field f = fieldModel.getField(); try { diff --git a/erupt-core/src/main/java/xyz/erupt/core/view/OnChangeVo.java b/erupt-core/src/main/java/xyz/erupt/core/view/OnChangeVo.java new file mode 100644 index 000000000..45960579b --- /dev/null +++ b/erupt-core/src/main/java/xyz/erupt/core/view/OnChangeVo.java @@ -0,0 +1,20 @@ +package xyz.erupt.core.view; + +import lombok.Getter; +import lombok.Setter; + +import java.util.Map; + +/** + * @author YuePeng + * date 2026/1/2 23:42 + */ +@Getter +@Setter +public class OnChangeVo { + + private Map formData; + + private Map editExpr; + +} diff --git a/erupt-core/src/main/java/xyz/erupt/core/view/SimplePage.java b/erupt-core/src/main/java/xyz/erupt/core/view/SimplePage.java new file mode 100644 index 000000000..e31be64db --- /dev/null +++ b/erupt-core/src/main/java/xyz/erupt/core/view/SimplePage.java @@ -0,0 +1,20 @@ +package xyz.erupt.core.view; + +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +/** + * @author YuePeng + * date 2025/11/25 23:05 + */ +@Getter +@Setter +public class SimplePage { + + private Long total; + + private List list; + +} diff --git a/erupt-core/src/main/java/xyz/erupt/core/view/TableQuery.java b/erupt-core/src/main/java/xyz/erupt/core/view/TableQuery.java index 8370ec4ee..ca1f4732a 100644 --- a/erupt-core/src/main/java/xyz/erupt/core/view/TableQuery.java +++ b/erupt-core/src/main/java/xyz/erupt/core/view/TableQuery.java @@ -14,7 +14,7 @@ public class TableQuery extends Page { private List condition; - // ref @Viz.code - private String viz; + // ref @Vis.code + private String vis; } diff --git a/erupt-core/src/main/resources/i18n/erupt.i18n.csv b/erupt-core/src/main/resources/i18n/erupt.i18n.csv index cf931f128..1d9ab1d92 100644 --- a/erupt-core/src/main/resources/i18n/erupt.i18n.csv +++ b/erupt-core/src/main/resources/i18n/erupt.i18n.csv @@ -19,9 +19,9 @@ erupt.upload_error.image_height,上传失败,图片高度不在范围内,上 erupt.data.data_duplication,数据重复,數據重復,Data duplication,Duplication des données,データが重複します。,데이터가 중복되다.,Повторение данных,Duplicación de datos,Ich wiederhole die daten.,Duplicação de dados,Pengulangan data,تكرار البيانات erupt.data.delete_fail_may_be_associated_data,删除失败,请检查关联数据,刪除失敗,請檢查關聯資料,Deletion failed. Please check for associated data.,Échec de la suppression. Veuillez vérifier les données associées.,削除に失敗しました。関連データを確認してください.,삭제 실패. 관련 데이터를 확인해 주세요.,Ошибка удаления. Проверьте связанные данные.,Error al eliminar. Verifique los datos asociados.,Löschen fehlgeschlagen. Bitte prüfen Sie verknüpfte Daten.,Falha ao excluir. Verifique os dados associados.,Gagal menghapus. Silakan periksa data terkait.,فشل الحذف. يرجى التحقق من البيانات المرتبطة. erupt.data.limit_length,内容超出数据库限制长度,內容超出數據庫限製長度,The content exceeds the database limit length,Contenu au-delà de la longueur limite de la base de données,コンテンツがデータベースの制限長を超えています,내용이 데이타베이스 제한을 초과했습니다,Содержание вне предельной длины базы данных,Contenido fuera del límite de longitud de base de datos,Der inhalt ist über die dauer der datenbank hinaus begrenzt,Conteúdo fora do comprimento limite do banco de dados,Isinya melampaui batas database,يتجاوز المحتوى الحد الأقصى لقاعدة البيانات -创建人,创建人,創建人,founder,Le créateur,設立者です,창립자,Создатель.,creador,Der gründer.,O criador,pendiri,مؤسس +创建人,创建人,創建人,Creator,Le créateur,設立者です,창립자,Создатель.,creador,Der gründer.,O criador,pendiri,مؤسس 创建时间,创建时间,創建時間,Creation time,Temps de création,作成時間です,만든 시간,Создание времени,Hora de creación,Zeit kreieren?,Hora de criação,Buat waktu,خلق الوقت -更新人,更新人,更新人,regenerator,Renouveler la personne,人を更新します,갱신자,Обновление.,Renovar la persona,erneuerung,Renovar a pessoa,Update manusia,تحديث +更新人,更新人,更新人,Updater,Renouveler la personne,人を更新します,갱신자,Обновление.,Renovar la persona,erneuerung,Renovar a pessoa,Update manusia,تحديث 更新时间,更新时间,更新時間,Update time,Temps de mise à jour,更新時間です,업데이트 시간,Время обновления.,Hora de actualización,Aktualisiert die zeit!,Tempo de atualização,Untuk memperbarui waktu,تحديث الوقت 数据审计,数据审计,數據審計,Data audit,Audit des données,データ監査です,데이터 감사,Проверка данных,Auditoría de datos,Prüfung Von daten,Auditoria de dados,Audit data,مراجعة البيانات 表格视图,表格视图,表格視圖,Table view,Vue de table,テーブルグラフです,테이블 보기,Вид на таблицу,Vista de tabla,view,Vista da tabela,Tampilan tabel,عرض الجدول diff --git a/erupt-data/erupt-elasticsearch/src/main/java/xyz/erupt/es/EruptESAutoConfiguration.java b/erupt-data/erupt-elasticsearch/src/main/java/xyz/erupt/es/EruptESAutoConfiguration.java index 52c7cd128..72e5a29d9 100644 --- a/erupt-data/erupt-elasticsearch/src/main/java/xyz/erupt/es/EruptESAutoConfiguration.java +++ b/erupt-data/erupt-elasticsearch/src/main/java/xyz/erupt/es/EruptESAutoConfiguration.java @@ -20,7 +20,7 @@ public class EruptESAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-mongodb").build(); + return ModuleInfo.builder().name("erupt-es").build(); } } diff --git a/erupt-data/erupt-jpa/pom.xml b/erupt-data/erupt-jpa/pom.xml index 6fc20936b..1148ef7f6 100644 --- a/erupt-data/erupt-jpa/pom.xml +++ b/erupt-data/erupt-jpa/pom.xml @@ -5,7 +5,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/EruptJpaAutoConfiguration.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/EruptJpaAutoConfiguration.java index 0ac799ae0..b1519845d 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/EruptJpaAutoConfiguration.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/EruptJpaAutoConfiguration.java @@ -20,7 +20,7 @@ public class EruptJpaAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-jpa").build(); + return ModuleInfo.builder().name("erupt-jpa").description("erupt orm").build(); } } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/dao/EruptLambdaQuery.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/dao/EruptLambdaQuery.java index 618b0e96d..aa1926434 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/dao/EruptLambdaQuery.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/dao/EruptLambdaQuery.java @@ -9,6 +9,7 @@ import org.apache.commons.lang3.RandomStringUtils; import org.springframework.transaction.annotation.Transactional; import xyz.erupt.core.util.ReflectUtil; +import xyz.erupt.core.view.SimplePage; import xyz.erupt.jpa.constant.SqlLang; import xyz.erupt.linq.lambda.LambdaInfo; import xyz.erupt.linq.lambda.LambdaSee; @@ -45,6 +46,18 @@ public EruptLambdaQuery with() { return this; } + public SimplePage page(int limit, int offset) { + SimplePage simplePage = new SimplePage<>(); + + simplePage.setTotal(this.count()); + if (simplePage.getTotal() > 0) { + simplePage.setList(this.limit(limit).offset(offset).list()); + } else { + simplePage.setList(new ArrayList<>()); + } + return simplePage; + } + public EruptLambdaQuery isNull(SFunction field) { querySchema.getWheres().add(geneField(field) + " is null"); return this; @@ -372,33 +385,57 @@ private R objectToClazz(Class clazz, Object[] objects, SFunction... } public Long count() { - this.querySchema.columns.add("count(*)"); - return (Long) geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("count(*)"); + return (Long) geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public Long count(SFunction field) { - this.querySchema.columns.add("count(" + geneField(field) + ")"); - return (Long) geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("count(" + geneField(field) + ")"); + return (Long) geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public Object sum(SFunction field) { - this.querySchema.columns.add("sum(" + geneField(field) + ")"); - return geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("sum(" + geneField(field) + ")"); + return geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public Double avg(SFunction field) { - this.querySchema.columns.add("avg(" + geneField(field) + ")"); - return (Double) geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("avg(" + geneField(field) + ")"); + return (Double) geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public Object min(SFunction field) { - this.querySchema.columns.add("min(" + geneField(field) + ")"); - return geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("min(" + geneField(field) + ")"); + return geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public Object max(SFunction field) { - this.querySchema.columns.add("max(" + geneField(field) + ")"); - return geneQuery().getSingleResult(); + try { + this.querySchema.columns.add("max(" + geneField(field) + ")"); + return geneQuery(false).getSingleResult(); + } finally { + this.querySchema.columns.clear(); + } } public int delete() { @@ -417,6 +454,13 @@ public int deleteAndFlush() { } private Query geneQuery() { + return this.geneQuery(true); + } + + /** + * @param useOrderBy count/sum/avg/min/max don't need order + */ + private Query geneQuery(boolean useOrderBy) { StringBuilder select = new StringBuilder(); if (!querySchema.columns.isEmpty()) { select.append(SqlLang.SELECT); @@ -429,7 +473,7 @@ private Query geneQuery() { StringBuilder expr = new StringBuilder(select + SqlLang.FROM + eruptClass.getSimpleName() + SqlLang.AS + eruptClass.getSimpleName()); if (!querySchema.getWheres().isEmpty()) expr.append(SqlLang.WHERE).append(String.join(SqlLang.AND, querySchema.getWheres())); - if (!querySchema.getOrders().isEmpty()) + if (useOrderBy && !querySchema.getOrders().isEmpty()) expr.append(SqlLang.ORDER_BY).append(String.join(SqlLang.COMMA, querySchema.getOrders())); Query query = entityManager.createQuery(expr.toString()); querySchema.getParams().forEach(query::setParameter); diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModel.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModel.java index 1a4895769..e1bb2cb42 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModel.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModel.java @@ -40,10 +40,10 @@ public class MetaModel extends BaseModel { @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); this.update(); @@ -51,10 +51,10 @@ protected void persist() { @PreUpdate protected void update() { + this.setUpdateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setUpdateBy(it.getName()); - this.setUpdateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnly.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnly.java index 56fa66e5f..a40cf3964 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnly.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnly.java @@ -30,10 +30,10 @@ public class MetaModelCreateOnly extends BaseModel { @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnlyVo.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnlyVo.java index 6df8acfb1..78ffcc8af 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnlyVo.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateOnlyVo.java @@ -27,22 +27,22 @@ public class MetaModelCreateOnlyVo extends BaseModel { @EruptField( views = @View(title = "创建人", width = "100px"), - edit = @Edit(title = "创建人", readonly = @Readonly) + edit = @Edit(title = "创建人", readonly = @Readonly(allowChange = false)) ) private String createBy; @EruptField( views = @View(title = "创建时间", sortable = true), - edit = @Edit(title = "创建时间", readonly = @Readonly, dateType = @DateType(type = DateType.Type.DATE_TIME)) + edit = @Edit(title = "创建时间", readonly = @Readonly(allowChange = false), dateType = @DateType(type = DateType.Type.DATE_TIME)) ) private LocalDateTime createTime; @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateVo.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateVo.java index 8687e78e0..4b18fcd96 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateVo.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelCreateVo.java @@ -29,13 +29,13 @@ public class MetaModelCreateVo extends BaseModel { @EruptField( views = @View(title = "创建人", width = "100px"), - edit = @Edit(title = "创建人", readonly = @Readonly) + edit = @Edit(title = "创建人", readonly = @Readonly(allowChange = false)) ) private String createBy; @EruptField( views = @View(title = "创建时间"), - edit = @Edit(title = "创建时间", readonly = @Readonly, dateType = @DateType(type = DateType.Type.DATE_TIME)) + edit = @Edit(title = "创建时间", readonly = @Readonly(allowChange = false), dateType = @DateType(type = DateType.Type.DATE_TIME)) ) private LocalDateTime createTime; @@ -49,10 +49,10 @@ public class MetaModelCreateVo extends BaseModel { @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); this.update(); @@ -60,10 +60,10 @@ protected void persist() { @PreUpdate protected void update() { + this.setUpdateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setUpdateBy(it.getName()); - this.setUpdateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelUpdateVo.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelUpdateVo.java index 080e5e3b1..537197d00 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelUpdateVo.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelUpdateVo.java @@ -37,22 +37,22 @@ public class MetaModelUpdateVo extends BaseModel { @EruptField( views = @View(title = "更新人", width = "100px"), - edit = @Edit(title = "更新人", readonly = @Readonly) + edit = @Edit(title = "更新人", readonly = @Readonly(allowChange = false)) ) private String updateBy; @EruptField( views = @View(title = "更新时间"), - edit = @Edit(title = "更新时间", readonly = @Readonly, dateType = @DateType(type = DateType.Type.DATE_TIME)) + edit = @Edit(title = "更新时间", readonly = @Readonly(allowChange = false), dateType = @DateType(type = DateType.Type.DATE_TIME)) ) private LocalDateTime updateTime; @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); this.update(); @@ -60,10 +60,10 @@ protected void persist() { @PreUpdate protected void update() { + this.setUpdateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setUpdateBy(it.getName()); - this.setUpdateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelVo.java b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelVo.java index aafeedb62..b5c55f0c6 100644 --- a/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelVo.java +++ b/erupt-data/erupt-jpa/src/main/java/xyz/erupt/jpa/model/MetaModelVo.java @@ -38,38 +38,38 @@ public class MetaModelVo extends BaseModel { @EruptField( views = @View(title = "创建人", width = "100px"), - edit = @Edit(title = "创建人", readonly = @Readonly) + edit = @Edit(title = "创建人", readonly = @Readonly(allowChange = false)) ) @EruptSmartSkipSerialize private String createBy; @EruptField( views = @View(title = "创建时间", sortable = true), - edit = @Edit(title = "创建时间", readonly = @Readonly, dateType = @DateType(type = DateType.Type.DATE_TIME)) + edit = @Edit(title = "创建时间", readonly = @Readonly(allowChange = false), dateType = @DateType(type = DateType.Type.DATE_TIME)) ) @EruptSmartSkipSerialize private LocalDateTime createTime; @EruptField( views = @View(title = "更新人", width = "100px"), - edit = @Edit(title = "更新人", readonly = @Readonly) + edit = @Edit(title = "更新人", readonly = @Readonly(allowChange = false)) ) @EruptSmartSkipSerialize private String updateBy; @EruptField( views = @View(title = "更新时间", sortable = true), - edit = @Edit(title = "更新时间", readonly = @Readonly, dateType = @DateType(type = DateType.Type.DATE_TIME)) + edit = @Edit(title = "更新时间", readonly = @Readonly(allowChange = false), dateType = @DateType(type = DateType.Type.DATE_TIME)) ) @EruptSmartSkipSerialize private LocalDateTime updateTime; @PrePersist protected void persist() { + this.setCreateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setCreateBy(it.getName()); - this.setCreateTime(LocalDateTime.now()); } }); this.update(); @@ -77,10 +77,10 @@ protected void persist() { @PreUpdate protected void update() { + this.setUpdateTime(LocalDateTime.now()); Optional.ofNullable(MetaContext.getUser()).ifPresent(it -> { if (null != it.getName()) { this.setUpdateBy(it.getName()); - this.setUpdateTime(LocalDateTime.now()); } }); } diff --git a/erupt-data/erupt-mongodb/pom.xml b/erupt-data/erupt-mongodb/pom.xml index 84c0ac2ca..70b2702c7 100644 --- a/erupt-data/erupt-mongodb/pom.xml +++ b/erupt-data/erupt-mongodb/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/EruptMongodbAutoConfiguration.java b/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/EruptMongodbAutoConfiguration.java index 2b6543548..c32d124b0 100644 --- a/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/EruptMongodbAutoConfiguration.java +++ b/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/EruptMongodbAutoConfiguration.java @@ -20,7 +20,7 @@ public class EruptMongodbAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-mongodb").build(); + return ModuleInfo.builder().name("erupt-mongodb").description("Mongodb implement").build(); } } diff --git a/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/impl/EruptMongodbImpl.java b/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/impl/EruptMongodbImpl.java index 6521fcae9..ef384efee 100644 --- a/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/impl/EruptMongodbImpl.java +++ b/erupt-data/erupt-mongodb/src/main/java/xyz/erupt/mongodb/impl/EruptMongodbImpl.java @@ -11,6 +11,7 @@ import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; import xyz.erupt.annotation.query.Condition; +import xyz.erupt.annotation.query.Direction; import xyz.erupt.core.exception.EruptFieldAnnotationException; import xyz.erupt.core.invoke.DataProcessorManager; import xyz.erupt.core.query.Column; @@ -56,7 +57,7 @@ public Page queryList(EruptModel eruptModel, Page page, EruptQuery eruptQuery) { query.skip((long) (page.getPageIndex() - 1) * page.getPageSize()); if (null != page.getSort() && !page.getSort().isEmpty()) { for (xyz.erupt.annotation.query.Sort sort : page.getSort()) { - if (sort.getDirection() == xyz.erupt.annotation.query.Sort.Direction.asc) { + if (sort.getDirection() == Direction.ASC) { query.with(Sort.by(Sort.Direction.ASC, sort.getField())); } else { query.with(Sort.by(Sort.Direction.DESC, sort.getField())); diff --git a/erupt-excel/pom.xml b/erupt-excel/pom.xml index 4c46946fb..f6884ca93 100644 --- a/erupt-excel/pom.xml +++ b/erupt-excel/pom.xml @@ -10,12 +10,12 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../pom.xml - 5.4.1 + 5.5.0 diff --git a/erupt-excel/src/main/java/xyz/erupt/excel/EruptExcelAutoConfiguration.java b/erupt-excel/src/main/java/xyz/erupt/excel/EruptExcelAutoConfiguration.java index 2b7a47c49..ce155c336 100644 --- a/erupt-excel/src/main/java/xyz/erupt/excel/EruptExcelAutoConfiguration.java +++ b/erupt-excel/src/main/java/xyz/erupt/excel/EruptExcelAutoConfiguration.java @@ -15,7 +15,7 @@ public class EruptExcelAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-excel").build(); + return ModuleInfo.builder().name("erupt-excel").description("Support Excel").build(); } } diff --git a/erupt-extra/erupt-generator/pom.xml b/erupt-extra/erupt-generator/pom.xml index 54ddaa73b..4ef59a159 100644 --- a/erupt-extra/erupt-generator/pom.xml +++ b/erupt-extra/erupt-generator/pom.xml @@ -5,7 +5,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml diff --git a/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/EruptGeneratorAutoConfiguration.java b/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/EruptGeneratorAutoConfiguration.java index aebd4bd2e..928e0d75f 100644 --- a/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/EruptGeneratorAutoConfiguration.java +++ b/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/EruptGeneratorAutoConfiguration.java @@ -31,7 +31,7 @@ public class EruptGeneratorAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-generator").build(); + return ModuleInfo.builder().name("erupt-generator").description("Generator erupt code").build(); } @Override diff --git a/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/model/GeneratorField.java b/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/model/GeneratorField.java index 71558efbc..d01c2188c 100644 --- a/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/model/GeneratorField.java +++ b/erupt-extra/erupt-generator/src/main/java/xyz/erupt/generator/model/GeneratorField.java @@ -1,6 +1,9 @@ package xyz.erupt.generator.model; -import jakarta.persistence.*; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.Table; import lombok.Getter; import lombok.Setter; import xyz.erupt.annotation.Erupt; @@ -48,7 +51,6 @@ public class GeneratorField extends BaseModel implements ChoiceFetchHandler { private Integer sort; @Enumerated(EnumType.STRING) - @Column(columnDefinition = "varchar(100)") @EruptField( views = @View(title = "编辑类型"), edit = @Edit(title = "编辑类型", @@ -61,7 +63,7 @@ public class GeneratorField extends BaseModel implements ChoiceFetchHandler { views = @View(title = "关联实体类"), edit = @Edit(title = "关联实体类", dynamic = @Dynamic(dependField = "type", match = Dynamic.Ctrl.NOTNULL, - condition = "value.indexOf('REFERENCE') != -1 || value.indexOf('TAB') != -1 || value == 'CHECKBOX' || value == 'COMBINE'")) + condition = "value.indexOf('REFERENCE') !== -1 || value.indexOf('TAB') !== -1 || value === 'CHECKBOX' || value === 'COMBINE'")) ) private String linkClass; diff --git a/erupt-extra/erupt-job/pom.xml b/erupt-extra/erupt-job/pom.xml index 617f74cb9..25b46274c 100644 --- a/erupt-extra/erupt-job/pom.xml +++ b/erupt-extra/erupt-job/pom.xml @@ -10,7 +10,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml @@ -28,7 +28,7 @@ xyz.erupt erupt-toolkit - 1.13.1 + 1.13.2 provided diff --git a/erupt-extra/erupt-job/src/main/java/xyz/erupt/job/EruptJobAutoConfiguration.java b/erupt-extra/erupt-job/src/main/java/xyz/erupt/job/EruptJobAutoConfiguration.java index 7d121a495..a1c73fb44 100644 --- a/erupt-extra/erupt-job/src/main/java/xyz/erupt/job/EruptJobAutoConfiguration.java +++ b/erupt-extra/erupt-job/src/main/java/xyz/erupt/job/EruptJobAutoConfiguration.java @@ -67,7 +67,7 @@ public void run() { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-job").build(); + return ModuleInfo.builder().name("erupt-job").description("Scheduled Task Management").build(); } @Override diff --git a/erupt-extra/erupt-magic-api/pom.xml b/erupt-extra/erupt-magic-api/pom.xml index 43b2cce87..685dbcb27 100644 --- a/erupt-extra/erupt-magic-api/pom.xml +++ b/erupt-extra/erupt-magic-api/pom.xml @@ -13,7 +13,7 @@ xyz.erupt erupt - 1.13.1 + 1.13.2 ../../pom.xml @@ -40,6 +40,16 @@ org.ssssssss magic-api-spring-boot-starter ${magic-api.version} + + + commons-io + commons-io + + + commons-compress + org.apache.commons + + diff --git a/erupt-extra/erupt-magic-api/src/main/java/xyz/erupt/magicapi/EruptMagicApiAutoConfiguration.java b/erupt-extra/erupt-magic-api/src/main/java/xyz/erupt/magicapi/EruptMagicApiAutoConfiguration.java index 1f25bc978..0dc746bd0 100644 --- a/erupt-extra/erupt-magic-api/src/main/java/xyz/erupt/magicapi/EruptMagicApiAutoConfiguration.java +++ b/erupt-extra/erupt-magic-api/src/main/java/xyz/erupt/magicapi/EruptMagicApiAutoConfiguration.java @@ -39,7 +39,7 @@ public class EruptMagicApiAutoConfiguration implements EruptModule { @Override public ModuleInfo info() { - return ModuleInfo.builder().name("erupt-magic-api").build(); + return ModuleInfo.builder().name("erupt-magic-api").description("Online IDE").build(); } @Override diff --git a/erupt-extra/erupt-magic-api/src/main/resources/tpl/magic-api.ftl b/erupt-extra/erupt-magic-api/src/main/resources/tpl/magic-api.ftl index b8479a5e4..c3c092dab 100644 --- a/erupt-extra/erupt-magic-api/src/main/resources/tpl/magic-api.ftl +++ b/erupt-extra/erupt-magic-api/src/main/resources/tpl/magic-api.ftl @@ -34,7 +34,7 @@ } <#if web??> document.write(' - +
@@ -23,11 +23,12 @@ var SW = new SiriWave({ width: innerWidth < 512 ? innerWidth : 512, height: 200, - wave: innerWidth < 512 ? 2 : new Date().getHours() % 6 + 2, + wave: innerWidth < 512 ? 2 : new Date().getMinutes() % 5 + 2, container: document.getElementById("preload") }); SW.set(0.4, 0.2); SW.start(); + window.SW = SW;
@@ -42,11 +43,11 @@ - + diff --git a/erupt-web/src/main/resources/public/main-UMFV772B.js b/erupt-web/src/main/resources/public/main-UMFV772B.js new file mode 100644 index 000000000..c111c6e65 --- /dev/null +++ b/erupt-web/src/main/resources/public/main-UMFV772B.js @@ -0,0 +1,8 @@ +import{b as Os,c as Rs,d as Vs}from"./chunk-ZV3QTPR5.js";import{c as cs,d as ds,e as ps,j as Ns,k as Ds}from"./chunk-GAVEXYUR.js";import{a as bi}from"./chunk-AG4Q6ZLO.js";import{$ as ls,$a as Cs,Ba as fs,Ca as En,Da as Mn,Ea as hs,Fa as Nn,Fb as Ms,Ga as gs,Gb as Is,Ha as kt,Hb as ks,Ia as gi,Ib as Ps,Ja as Bi,Jc as xi,Ka as je,La as Dn,Mb as Ti,N as Nt,Nb as As,O as yn,P as Cn,Pb as Ls,Rb as Fn,S as si,Ta as Ue,U as li,Ua as In,V as Dt,Va as ot,W as vn,X as Sn,Xa as _s,Y as bn,Ya as ys,Z as Ae,_ as ss,_a as _i,a as Ve,aa as Tn,ab as Pt,b as pn,ba as Mo,bb as vs,c as za,cb as kn,cc as Fs,da as He,db as Pn,ea as ye,eb as Ss,f as ee,fa as ze,fb as bs,g as Se,ga as ci,gb as Ts,h as hn,hb as xs,i as Be,ia as ut,ib as yi,j as os,ja as di,jb as Ci,k as ai,ka as pi,kb as vi,la as mi,lb as Es,m as rs,mb as At,na as ui,nb as Hi,oa as Vi,qa as xn,r as be,ra as ms,rb as X,s as gn,sa as wn,sb as An,t as _n,ta as fi,tb as Te,u as as,ua as hi,v as V,va as us,vb as Ln,wa as It,wb as Si,xa as zn,xb as rt}from"./chunk-GUSJSUNI.js";import{$c as ma,$h as de,$i as pe,Aa as se,Ab as ei,Ad as oi,Ag as Ha,Bb as ti,Bd as Fi,Bg as ja,Ca as me,Cc as sa,Cd as ha,Cg as Ua,Da as on,Db as ki,Dd as zt,Eb as Pi,Ec as sn,Fa as _o,Fb as Ai,Fc as Tt,Fd as ga,Ga as l,Gb as ea,Gd as oe,Ha as Yt,Hb as ta,Hc as xt,Hd as _a,Ia as St,Ib as Co,Ic as et,Id as Re,Jb as R,Jg as $a,K as Hr,Ka as Qr,Kd as ya,Lb as ne,Ma as Zr,Mb as ia,Na as bt,Nb as Pe,Nd as Ca,O as jr,Oa as h,Ob as S,Oc as wt,Od as va,Pa as Yr,Pb as F,Pc as la,Pd as Sa,Qa as k,Qb as H,Qc as mt,Qd as dn,Ra as G,Rd as ba,Sc as ca,Sf as Aa,Tb as ue,Ub as fe,Ud as Ta,Ue as wo,Ug as Wa,Vb as he,Vf as La,Wa as O,Wb as vo,Wc as tt,Wd as xa,Wg as qa,Xa as Xr,Xb as rn,Xd as wa,Xe as Na,Yb as Ht,Yd as xo,Ye as Da,Z as qe,Za as Jr,Zc as da,_a as Bt,_b as Ge,_c as pa,_e as Ia,_i as un,a as Vr,ab as y,ad as ln,ae as Ea,ba as Ur,bc as an,be as it,bj as es,ca as q,cb as C,ch as Ka,cj as ts,d as Zt,db as Je,dc as Oe,de as Ma,ea as pt,eb as Ke,ec as _e,fa as K,fb as le,fh as Ga,fi as Xa,ga as $r,gb as ce,gh as re,ha as Ct,hb as u,hh as Et,hj as is,ia as B,ib as d,ih as Qa,ij as ns,ja as T,jb as p,jd as So,jf as ka,jh as Za,ka as x,kb as g,kc as w,kd as ua,la as Wr,lc as z,ld as ni,lf as Pa,lg as Fa,m as Ii,ma as qr,mc as na,md as U,nd as Qe,o as Br,oa as we,ob as Xt,oh as ae,p as fo,pa as tn,pb as Jt,pc as j,ph as ri,qa as ho,qb as yo,qd as fa,qg as Oa,qi as Oi,rd as bo,rg as Ra,rh as nt,ri as Ja,sg as Va,sh as Ya,si as mn,sj as fn,ta as nn,tb as N,tc as oa,td as jt,ti as Mt,tj as zo,uc as ra,ud as cn,ui as Ri,uj as Eo,va as vt,vd as Li,vj as ws,wb as b,xa as Kr,xc as ii,ya as go,yc as Me,yd as Ut,yj as zs,za as Gr,zb as f,zc as aa,zd as To,zg as Ba}from"./chunk-LH5JAFL2.js";import{a as dt,b as Fr,d as Or,h as Rr}from"./chunk-WWX6BADO.js";function Bs(o){return new q(3e3,!1)}function Dc(){return new q(3100,!1)}function Ic(){return new q(3101,!1)}function kc(o){return new q(3001,!1)}function Pc(o){return new q(3003,!1)}function Ac(o){return new q(3004,!1)}function js(o,i){return new q(3005,!1)}function Us(){return new q(3006,!1)}function $s(){return new q(3007,!1)}function Ws(o,i){return new q(3008,!1)}function qs(o){return new q(3002,!1)}function Ks(o,i,e,t,n){return new q(3010,!1)}function Gs(){return new q(3011,!1)}function Qs(){return new q(3012,!1)}function Zs(){return new q(3200,!1)}function Ys(){return new q(3202,!1)}function Xs(){return new q(3013,!1)}function Js(o){return new q(3014,!1)}function el(o){return new q(3015,!1)}function tl(o){return new q(3016,!1)}function il(o,i){return new q(3404,!1)}function Lc(o){return new q(3502,!1)}function nl(o){return new q(3503,!1)}function ol(){return new q(3300,!1)}function rl(o){return new q(3504,!1)}function al(o){return new q(3301,!1)}function sl(o,i){return new q(3302,!1)}function ll(o){return new q(3303,!1)}function cl(o,i){return new q(3400,!1)}function dl(o){return new q(3401,!1)}function pl(o){return new q(3402,!1)}function ml(o,i){return new q(3505,!1)}function ft(o){switch(o.length){case 0:return new jt;case 1:return o[0];default:return new cn(o)}}function ko(o,i,e=new Map,t=new Map){let n=[],r=[],a=-1,s=null;if(i.forEach(c=>{let m=c.get("offset"),_=m==a,v=_&&s||new Map;c.forEach((D,I)=>{let M=I,A=D;if(I!=="offset")switch(M=o.normalizePropertyName(M,n),A){case Li:A=e.get(I);break;case Qe:A=t.get(I);break;default:A=o.normalizeStyleValue(I,M,A,n);break}v.set(M,A)}),_||r.push(v),s=v,a=m}),n.length)throw Lc(n);return r}function On(o,i,e,t){switch(i){case"start":o.onStart(()=>t(e&&No(e,"start",o)));break;case"done":o.onDone(()=>t(e&&No(e,"done",o)));break;case"destroy":o.onDestroy(()=>t(e&&No(e,"destroy",o)));break}}function No(o,i,e){let t=e.totalTime,n=!!e.disabled,r=Rn(o.element,o.triggerName,o.fromState,o.toState,i||o.phaseName,t??o.totalTime,n),a=o._data;return a!=null&&(r._data=a),r}function Rn(o,i,e,t,n="",r=0,a){return{element:o,triggerName:i,fromState:e,toState:t,phaseName:n,totalTime:r,disabled:!!a}}function Ne(o,i,e){let t=o.get(i);return t||o.set(i,t=e),t}function Po(o){let i=o.indexOf(":"),e=o.substring(1,i),t=o.slice(i+1);return[e,t]}var Fc=typeof document>"u"?null:document.documentElement;function Vn(o){let i=o.parentNode||o.host||null;return i===Fc?null:i}function Oc(o){return o.substring(1,6)=="ebkit"}var $t=null,Hs=!1;function ul(o){$t||($t=Rc()||{},Hs=$t.style?"WebkitAppearance"in $t.style:!1);let i=!0;return $t.style&&!Oc(o)&&(i=o in $t.style,!i&&Hs&&(i="Webkit"+o.charAt(0).toUpperCase()+o.slice(1)in $t.style)),i}function Rc(){return typeof document<"u"?document.body:null}function Ao(o,i){for(;i;){if(i===o)return!0;i=Vn(i)}return!1}function Lo(o,i,e){if(e)return Array.from(o.querySelectorAll(i));let t=o.querySelector(i);return t?[t]:[]}var Vc=1e3,Fo="{{",Bc="}}",Oo="ng-enter",Bn="ng-leave",ji="ng-trigger",Ui=".ng-trigger",Ro="ng-animating",Hn=".ng-animating";function at(o){if(typeof o=="number")return o;let i=o.match(/^(-?[\.\d]+)(m?s)/);return!i||i.length<2?0:Do(parseFloat(i[1]),i[2])}function Do(o,i){switch(i){case"s":return o*Vc;default:return o}}function $i(o,i,e){return o.hasOwnProperty("duration")?o:jc(o,i,e)}var Hc=/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i;function jc(o,i,e){let t,n=0,r="";if(typeof o=="string"){let a=o.match(Hc);if(a===null)return i.push(Bs(o)),{duration:0,delay:0,easing:""};t=Do(parseFloat(a[1]),a[2]);let s=a[3];s!=null&&(n=Do(parseFloat(s),a[4]));let c=a[5];c&&(r=c)}else t=o;if(!e){let a=!1,s=i.length;t<0&&(i.push(Dc()),a=!0),n<0&&(i.push(Ic()),a=!0),a&&i.splice(s,0,Bs(o))}return{duration:t,delay:n,easing:r}}function fl(o){return o.length?o[0]instanceof Map?o:o.map(i=>new Map(Object.entries(i))):[]}function Ze(o,i,e){i.forEach((t,n)=>{let r=jn(n);e&&!e.has(n)&&e.set(n,o.style[r]),o.style[r]=t})}function Lt(o,i){i.forEach((e,t)=>{let n=jn(t);o.style[n]=""})}function wi(o){return Array.isArray(o)?o.length==1?o[0]:fa(o):o}function hl(o,i,e){let t=i.params||{},n=Vo(o);n.length&&n.forEach(r=>{t.hasOwnProperty(r)||e.push(kc(r))})}var Io=new RegExp(`${Fo}\\s*(.+?)\\s*${Bc}`,"g");function Vo(o){let i=[];if(typeof o=="string"){let e;for(;e=Io.exec(o);)i.push(e[1]);Io.lastIndex=0}return i}function zi(o,i,e){let t=`${o}`,n=t.replace(Io,(r,a)=>{let s=i[a];return s==null&&(e.push(Pc(a)),s=""),s.toString()});return n==t?o:n}var Uc=/-+([a-z0-9])/g;function jn(o){return o.replace(Uc,(...i)=>i[1].toUpperCase())}function gl(o,i){return o===0||i===0}function _l(o,i,e){if(e.size&&i.length){let t=i[0],n=[];if(e.forEach((r,a)=>{t.has(a)||n.push(a),t.set(a,r)}),n.length)for(let r=1;ra.set(s,Un(o,s)))}}return i}function De(o,i,e){switch(i.type){case U.Trigger:return o.visitTrigger(i,e);case U.State:return o.visitState(i,e);case U.Transition:return o.visitTransition(i,e);case U.Sequence:return o.visitSequence(i,e);case U.Group:return o.visitGroup(i,e);case U.Animate:return o.visitAnimate(i,e);case U.Keyframes:return o.visitKeyframes(i,e);case U.Style:return o.visitStyle(i,e);case U.Reference:return o.visitReference(i,e);case U.AnimateChild:return o.visitAnimateChild(i,e);case U.AnimateRef:return o.visitAnimateRef(i,e);case U.Query:return o.visitQuery(i,e);case U.Stagger:return o.visitStagger(i,e);default:throw Ac(i.type)}}function Un(o,i){return window.getComputedStyle(o)[i]}var ir=(()=>{class o{validateStyleProperty(e){return ul(e)}containsElement(e,t){return Ao(e,t)}getParentElement(e){return Vn(e)}query(e,t,n){return Lo(e,t,n)}computeStyle(e,t,n){return n||""}animate(e,t,n,r,a,s=[],c){return new jt(n,r)}static \u0275fac=function(t){return new(t||o)};static \u0275prov=pt({token:o,factory:o.\u0275fac})}return o})(),qt=class{static NOOP=new ir},Kt=class{};var $c=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]),Gn=class extends Kt{normalizePropertyName(i,e){return jn(i)}normalizeStyleValue(i,e,t,n){let r="",a=t.toString().trim();if($c.has(e)&&t!==0&&t!=="0")if(typeof t=="number")r="px";else{let s=t.match(/^[+-]?[\d\.]+([a-z]*)$/);s&&s[1].length==0&&n.push(js(i,t))}return a+r}};var Qn="*";function Wc(o,i){let e=[];return typeof o=="string"?o.split(/\s*,\s*/).forEach(t=>qc(t,e,i)):e.push(o),e}function qc(o,i,e){if(o[0]==":"){let c=Kc(o,e);if(typeof c=="function"){i.push(c);return}o=c}let t=o.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(t==null||t.length<4)return e.push(el(o)),i;let n=t[1],r=t[2],a=t[3];i.push(yl(n,a));let s=n==Qn&&a==Qn;r[0]=="<"&&!s&&i.push(yl(a,n))}function Kc(o,i){switch(o){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,t)=>parseFloat(t)>parseFloat(e);case":decrement":return(e,t)=>parseFloat(t) *"}}var $n=new Set(["true","1"]),Wn=new Set(["false","0"]);function yl(o,i){let e=$n.has(o)||Wn.has(o),t=$n.has(i)||Wn.has(i);return(n,r)=>{let a=o==Qn||o==n,s=i==Qn||i==r;return!a&&e&&typeof n=="boolean"&&(a=n?$n.has(o):Wn.has(o)),!s&&t&&typeof r=="boolean"&&(s=r?$n.has(i):Wn.has(i)),a&&s}}var Ml=":self",Gc=new RegExp(`s*${Ml}s*,?`,"g");function Nl(o,i,e,t){return new Wo(o).build(i,e,t)}var Cl="",Wo=class{_driver;constructor(i){this._driver=i}build(i,e,t){let n=new qo(e);return this._resetContextStyleTimingState(n),De(this,wi(i),n)}_resetContextStyleTimingState(i){i.currentQuerySelector=Cl,i.collectedStyles=new Map,i.collectedStyles.set(Cl,new Map),i.currentTime=0}visitTrigger(i,e){let t=e.queryCount=0,n=e.depCount=0,r=[],a=[];return i.name.charAt(0)=="@"&&e.errors.push(Us()),i.definitions.forEach(s=>{if(this._resetContextStyleTimingState(e),s.type==U.State){let c=s,m=c.name;m.toString().split(/\s*,\s*/).forEach(_=>{c.name=_,r.push(this.visitState(c,e))}),c.name=m}else if(s.type==U.Transition){let c=this.visitTransition(s,e);t+=c.queryCount,n+=c.depCount,a.push(c)}else e.errors.push($s())}),{type:U.Trigger,name:i.name,states:r,transitions:a,queryCount:t,depCount:n,options:null}}visitState(i,e){let t=this.visitStyle(i.styles,e),n=i.options&&i.options.params||null;if(t.containsDynamicStyles){let r=new Set,a=n||{};t.styles.forEach(s=>{s instanceof Map&&s.forEach(c=>{Vo(c).forEach(m=>{a.hasOwnProperty(m)||r.add(m)})})}),r.size&&e.errors.push(Ws(i.name,[...r.values()]))}return{type:U.State,name:i.name,style:t,options:n?{params:n}:null}}visitTransition(i,e){e.queryCount=0,e.depCount=0;let t=De(this,wi(i.animation),e),n=Wc(i.expr,e.errors);return{type:U.Transition,matchers:n,animation:t,queryCount:e.queryCount,depCount:e.depCount,options:Wt(i.options)}}visitSequence(i,e){return{type:U.Sequence,steps:i.steps.map(t=>De(this,t,e)),options:Wt(i.options)}}visitGroup(i,e){let t=e.currentTime,n=0,r=i.steps.map(a=>{e.currentTime=t;let s=De(this,a,e);return n=Math.max(n,e.currentTime),s});return e.currentTime=n,{type:U.Group,steps:r,options:Wt(i.options)}}visitAnimate(i,e){let t=Xc(i.timings,e.errors);e.currentAnimateTimings=t;let n,r=i.styles?i.styles:bo({});if(r.type==U.Keyframes)n=this.visitKeyframes(r,e);else{let a=i.styles,s=!1;if(!a){s=!0;let m={};t.easing&&(m.easing=t.easing),a=bo(m)}e.currentTime+=t.duration+t.delay;let c=this.visitStyle(a,e);c.isEmptyStep=s,n=c}return e.currentAnimateTimings=null,{type:U.Animate,timings:t,style:n,options:null}}visitStyle(i,e){let t=this._makeStyleAst(i,e);return this._validateStyleAst(t,e),t}_makeStyleAst(i,e){let t=[],n=Array.isArray(i.styles)?i.styles:[i.styles];for(let s of n)typeof s=="string"?s===Qe?t.push(s):e.errors.push(qs(s)):t.push(new Map(Object.entries(s)));let r=!1,a=null;return t.forEach(s=>{if(s instanceof Map&&(s.has("easing")&&(a=s.get("easing"),s.delete("easing")),!r)){for(let c of s.values())if(c.toString().indexOf(Fo)>=0){r=!0;break}}}),{type:U.Style,styles:t,easing:a,offset:i.offset,containsDynamicStyles:r,options:null}}_validateStyleAst(i,e){let t=e.currentAnimateTimings,n=e.currentTime,r=e.currentTime;t&&r>0&&(r-=t.duration+t.delay),i.styles.forEach(a=>{typeof a!="string"&&a.forEach((s,c)=>{let m=e.collectedStyles.get(e.currentQuerySelector),_=m.get(c),v=!0;_&&(r!=n&&r>=_.startTime&&n<=_.endTime&&(e.errors.push(Ks(c,_.startTime,_.endTime,r,n)),v=!1),r=_.startTime),v&&m.set(c,{startTime:r,endTime:n}),e.options&&hl(s,e.options,e.errors)})})}visitKeyframes(i,e){let t={type:U.Keyframes,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(Gs()),t;let n=1,r=0,a=[],s=!1,c=!1,m=0,_=i.steps.map(J=>{let te=this._makeStyleAst(J,e),Z=te.offset!=null?te.offset:Yc(te.styles),Y=0;return Z!=null&&(r++,Y=te.offset=Z),c=c||Y<0||Y>1,s=s||Y0&&r{let Z=D>0?te==I?1:D*te:a[te],Y=Z*Q;e.currentTime=M+A.delay+Y,A.duration=Y,this._validateStyleAst(J,e),J.offset=Z,t.styles.push(J)}),t}visitReference(i,e){return{type:U.Reference,animation:De(this,wi(i.animation),e),options:Wt(i.options)}}visitAnimateChild(i,e){return e.depCount++,{type:U.AnimateChild,options:Wt(i.options)}}visitAnimateRef(i,e){return{type:U.AnimateRef,animation:this.visitReference(i.animation,e),options:Wt(i.options)}}visitQuery(i,e){let t=e.currentQuerySelector,n=i.options||{};e.queryCount++,e.currentQuery=i;let[r,a]=Qc(i.selector);e.currentQuerySelector=t.length?t+" "+r:r,Ne(e.collectedStyles,e.currentQuerySelector,new Map);let s=De(this,wi(i.animation),e);return e.currentQuery=null,e.currentQuerySelector=t,{type:U.Query,selector:r,limit:n.limit||0,optional:!!n.optional,includeSelf:a,animation:s,originalSelector:i.selector,options:Wt(i.options)}}visitStagger(i,e){e.currentQuery||e.errors.push(Xs());let t=i.timings==="full"?{duration:0,delay:0,easing:"full"}:$i(i.timings,e.errors,!0);return{type:U.Stagger,animation:De(this,wi(i.animation),e),timings:t,options:null}}};function Qc(o){let i=!!o.split(/\s*,\s*/).find(e=>e==Ml);return i&&(o=o.replace(Gc,"")),o=o.replace(/@\*/g,Ui).replace(/@\w+/g,e=>Ui+"-"+e.slice(1)).replace(/:animating/g,Hn),[o,i]}function Zc(o){return o?dt({},o):null}var qo=class{errors;queryCount=0;depCount=0;currentTransition=null;currentQuery=null;currentQuerySelector=null;currentAnimateTimings=null;currentTime=0;collectedStyles=new Map;options=null;unsupportedCSSPropertiesFound=new Set;constructor(i){this.errors=i}};function Yc(o){if(typeof o=="string")return null;let i=null;if(Array.isArray(o))o.forEach(e=>{if(e instanceof Map&&e.has("offset")){let t=e;i=parseFloat(t.get("offset")),t.delete("offset")}});else if(o instanceof Map&&o.has("offset")){let e=o;i=parseFloat(e.get("offset")),e.delete("offset")}return i}function Xc(o,i){if(o.hasOwnProperty("duration"))return o;if(typeof o=="number"){let r=$i(o,i).duration;return Bo(r,0,"")}let e=o;if(e.split(/\s+/).some(r=>r.charAt(0)=="{"&&r.charAt(1)=="{")){let r=Bo(0,0,"");return r.dynamic=!0,r.strValue=e,r}let n=$i(e,i);return Bo(n.duration,n.delay,n.easing)}function Wt(o){return o?(o=dt({},o),o.params&&(o.params=Zc(o.params))):o={},o}function Bo(o,i,e){return{duration:o,delay:i,easing:e}}function nr(o,i,e,t,n,r,a=null,s=!1){return{type:1,element:o,keyframes:i,preStyleProps:e,postStyleProps:t,duration:n,delay:r,totalTime:n+r,easing:a,subTimeline:s}}var qi=class{_map=new Map;get(i){return this._map.get(i)||[]}append(i,e){let t=this._map.get(i);t||this._map.set(i,t=[]),t.push(...e)}has(i){return this._map.has(i)}clear(){this._map.clear()}},Jc=1,ed=":enter",td=new RegExp(ed,"g"),id=":leave",nd=new RegExp(id,"g");function Dl(o,i,e,t,n,r=new Map,a=new Map,s,c,m=[]){return new Ko().buildKeyframes(o,i,e,t,n,r,a,s,c,m)}var Ko=class{buildKeyframes(i,e,t,n,r,a,s,c,m,_=[]){m=m||new qi;let v=new Go(i,e,m,n,r,_,[]);v.options=c;let D=c.delay?at(c.delay):0;v.currentTimeline.delayNextStep(D),v.currentTimeline.setStyles([a],null,v.errors,c),De(this,t,v);let I=v.timelines.filter(M=>M.containsAnimation());if(I.length&&s.size){let M;for(let A=I.length-1;A>=0;A--){let Q=I[A];if(Q.element===e){M=Q;break}}M&&!M.allowOnlyTimelineStyles()&&M.setStyles([s],null,v.errors,c)}return I.length?I.map(M=>M.buildKeyframes()):[nr(e,[],[],[],0,D,"",!1)]}visitTrigger(i,e){}visitState(i,e){}visitTransition(i,e){}visitAnimateChild(i,e){let t=e.subInstructions.get(e.element);if(t){let n=e.createSubContext(i.options),r=e.currentTimeline.currentTime,a=this._visitSubInstructions(t,n,n.options);r!=a&&e.transformIntoNewTimeline(a)}e.previousNode=i}visitAnimateRef(i,e){let t=e.createSubContext(i.options);t.transformIntoNewTimeline(),this._applyAnimationRefDelays([i.options,i.animation.options],e,t),this.visitReference(i.animation,t),e.transformIntoNewTimeline(t.currentTimeline.currentTime),e.previousNode=i}_applyAnimationRefDelays(i,e,t){for(let n of i){let r=n?.delay;if(r){let a=typeof r=="number"?r:at(zi(r,n?.params??{},e.errors));t.delayNextStep(a)}}}_visitSubInstructions(i,e,t){let r=e.currentTimeline.currentTime,a=t.duration!=null?at(t.duration):null,s=t.delay!=null?at(t.delay):null;return a!==0&&i.forEach(c=>{let m=e.appendInstructionToTimeline(c,a,s);r=Math.max(r,m.duration+m.delay)}),r}visitReference(i,e){e.updateOptions(i.options,!0),De(this,i.animation,e),e.previousNode=i}visitSequence(i,e){let t=e.subContextCount,n=e,r=i.options;if(r&&(r.params||r.delay)&&(n=e.createSubContext(r),n.transformIntoNewTimeline(),r.delay!=null)){n.previousNode.type==U.Style&&(n.currentTimeline.snapshotCurrentStyles(),n.previousNode=Zn);let a=at(r.delay);n.delayNextStep(a)}i.steps.length&&(i.steps.forEach(a=>De(this,a,n)),n.currentTimeline.applyStylesToKeyframe(),n.subContextCount>t&&n.transformIntoNewTimeline()),e.previousNode=i}visitGroup(i,e){let t=[],n=e.currentTimeline.currentTime,r=i.options&&i.options.delay?at(i.options.delay):0;i.steps.forEach(a=>{let s=e.createSubContext(i.options);r&&s.delayNextStep(r),De(this,a,s),n=Math.max(n,s.currentTimeline.currentTime),t.push(s.currentTimeline)}),t.forEach(a=>e.currentTimeline.mergeTimelineCollectedStyles(a)),e.transformIntoNewTimeline(n),e.previousNode=i}_visitTiming(i,e){if(i.dynamic){let t=i.strValue,n=e.params?zi(t,e.params,e.errors):t;return $i(n,e.errors)}else return{duration:i.duration,delay:i.delay,easing:i.easing}}visitAnimate(i,e){let t=e.currentAnimateTimings=this._visitTiming(i.timings,e),n=e.currentTimeline;t.delay&&(e.incrementTime(t.delay),n.snapshotCurrentStyles());let r=i.style;r.type==U.Keyframes?this.visitKeyframes(r,e):(e.incrementTime(t.duration),this.visitStyle(r,e),n.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=i}visitStyle(i,e){let t=e.currentTimeline,n=e.currentAnimateTimings;!n&&t.hasCurrentStyleProperties()&&t.forwardFrame();let r=n&&n.easing||i.easing;i.isEmptyStep?t.applyEmptyStep(r):t.setStyles(i.styles,r,e.errors,e.options),e.previousNode=i}visitKeyframes(i,e){let t=e.currentAnimateTimings,n=e.currentTimeline.duration,r=t.duration,s=e.createSubContext().currentTimeline;s.easing=t.easing,i.styles.forEach(c=>{let m=c.offset||0;s.forwardTime(m*r),s.setStyles(c.styles,c.easing,e.errors,e.options),s.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(s),e.transformIntoNewTimeline(n+r),e.previousNode=i}visitQuery(i,e){let t=e.currentTimeline.currentTime,n=i.options||{},r=n.delay?at(n.delay):0;r&&(e.previousNode.type===U.Style||t==0&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Zn);let a=t,s=e.invokeQuery(i.selector,i.originalSelector,i.limit,i.includeSelf,!!n.optional,e.errors);e.currentQueryTotal=s.length;let c=null;s.forEach((m,_)=>{e.currentQueryIndex=_;let v=e.createSubContext(i.options,m);r&&v.delayNextStep(r),m===e.element&&(c=v.currentTimeline),De(this,i.animation,v),v.currentTimeline.applyStylesToKeyframe();let D=v.currentTimeline.currentTime;a=Math.max(a,D)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(a),c&&(e.currentTimeline.mergeTimelineCollectedStyles(c),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=i}visitStagger(i,e){let t=e.parentContext,n=e.currentTimeline,r=i.timings,a=Math.abs(r.duration),s=a*(e.currentQueryTotal-1),c=a*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":c=s-c;break;case"full":c=t.currentStaggerTime;break}let _=e.currentTimeline;c&&_.delayNextStep(c);let v=_.currentTime;De(this,i.animation,e),e.previousNode=i,t.currentStaggerTime=n.currentTime-v+(n.startTime-t.currentTimeline.startTime)}},Zn={},Go=class o{_driver;element;subInstructions;_enterClassName;_leaveClassName;errors;timelines;parentContext=null;currentTimeline;currentAnimateTimings=null;previousNode=Zn;subContextCount=0;options={};currentQueryIndex=0;currentQueryTotal=0;currentStaggerTime=0;constructor(i,e,t,n,r,a,s,c){this._driver=i,this.element=e,this.subInstructions=t,this._enterClassName=n,this._leaveClassName=r,this.errors=a,this.timelines=s,this.currentTimeline=c||new Yn(this._driver,e,0),s.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(i,e){if(!i)return;let t=i,n=this.options;t.duration!=null&&(n.duration=at(t.duration)),t.delay!=null&&(n.delay=at(t.delay));let r=t.params;if(r){let a=n.params;a||(a=this.options.params={}),Object.keys(r).forEach(s=>{(!e||!a.hasOwnProperty(s))&&(a[s]=zi(r[s],a,this.errors))})}}_copyOptions(){let i={};if(this.options){let e=this.options.params;if(e){let t=i.params={};Object.keys(e).forEach(n=>{t[n]=e[n]})}}return i}createSubContext(i=null,e,t){let n=e||this.element,r=new o(this._driver,n,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(n,t||0));return r.previousNode=this.previousNode,r.currentAnimateTimings=this.currentAnimateTimings,r.options=this._copyOptions(),r.updateOptions(i),r.currentQueryIndex=this.currentQueryIndex,r.currentQueryTotal=this.currentQueryTotal,r.parentContext=this,this.subContextCount++,r}transformIntoNewTimeline(i){return this.previousNode=Zn,this.currentTimeline=this.currentTimeline.fork(this.element,i),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(i,e,t){let n={duration:e??i.duration,delay:this.currentTimeline.currentTime+(t??0)+i.delay,easing:""},r=new Qo(this._driver,i.element,i.keyframes,i.preStyleProps,i.postStyleProps,n,i.stretchStartingKeyframe);return this.timelines.push(r),n}incrementTime(i){this.currentTimeline.forwardTime(this.currentTimeline.duration+i)}delayNextStep(i){i>0&&this.currentTimeline.delayNextStep(i)}invokeQuery(i,e,t,n,r,a){let s=[];if(n&&s.push(this.element),i.length>0){i=i.replace(td,"."+this._enterClassName),i=i.replace(nd,"."+this._leaveClassName);let c=t!=1,m=this._driver.query(this.element,i,c);t!==0&&(m=t<0?m.slice(m.length+t,m.length):m.slice(0,t)),s.push(...m)}return!r&&s.length==0&&a.push(Js(e)),s}},Yn=class o{_driver;element;startTime;_elementTimelineStylesLookup;duration=0;easing=null;_previousKeyframe=new Map;_currentKeyframe=new Map;_keyframes=new Map;_styleSummary=new Map;_localTimelineStyles=new Map;_globalTimelineStyles;_pendingStyles=new Map;_backFill=new Map;_currentEmptyStepKeyframe=null;constructor(i,e,t,n){this._driver=i,this.element=e,this.startTime=t,this._elementTimelineStylesLookup=n,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(i){let e=this._keyframes.size===1&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+i),e&&this.snapshotCurrentStyles()):this.startTime+=i}fork(i,e){return this.applyStylesToKeyframe(),new o(this._driver,i,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=Jc,this._loadKeyframe()}forwardTime(i){this.applyStylesToKeyframe(),this.duration=i,this._loadKeyframe()}_updateStyle(i,e){this._localTimelineStyles.set(i,e),this._globalTimelineStyles.set(i,e),this._styleSummary.set(i,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(i){i&&this._previousKeyframe.set("easing",i);for(let[e,t]of this._globalTimelineStyles)this._backFill.set(e,t||Qe),this._currentKeyframe.set(e,Qe);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(i,e,t,n){e&&this._previousKeyframe.set("easing",e);let r=n&&n.params||{},a=od(i,this._globalTimelineStyles);for(let[s,c]of a){let m=zi(c,r,t);this._pendingStyles.set(s,m),this._localTimelineStyles.has(s)||this._backFill.set(s,this._globalTimelineStyles.get(s)??Qe),this._updateStyle(s,m)}}applyStylesToKeyframe(){this._pendingStyles.size!=0&&(this._pendingStyles.forEach((i,e)=>{this._currentKeyframe.set(e,i)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((i,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,i)}))}snapshotCurrentStyles(){for(let[i,e]of this._localTimelineStyles)this._pendingStyles.set(i,e),this._updateStyle(i,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){let i=[];for(let e in this._currentKeyframe)i.push(e);return i}mergeTimelineCollectedStyles(i){i._styleSummary.forEach((e,t)=>{let n=this._styleSummary.get(t);(!n||e.time>n.time)&&this._updateStyle(t,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();let i=new Set,e=new Set,t=this._keyframes.size===1&&this.duration===0,n=[];this._keyframes.forEach((s,c)=>{let m=new Map([...this._backFill,...s]);m.forEach((_,v)=>{_===Li?i.add(v):_===Qe&&e.add(v)}),t||m.set("offset",c/this.duration),n.push(m)});let r=[...i.values()],a=[...e.values()];if(t){let s=n[0],c=new Map(s);s.set("offset",0),c.set("offset",1),n=[s,c]}return nr(this.element,n,r,a,this.duration,this.startTime,this.easing,!1)}},Qo=class extends Yn{keyframes;preStyleProps;postStyleProps;_stretchStartingKeyframe;timings;constructor(i,e,t,n,r,a,s=!1){super(i,e,a.delay),this.keyframes=t,this.preStyleProps=n,this.postStyleProps=r,this._stretchStartingKeyframe=s,this.timings={duration:a.duration,delay:a.delay,easing:a.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let i=this.keyframes,{delay:e,duration:t,easing:n}=this.timings;if(this._stretchStartingKeyframe&&e){let r=[],a=t+e,s=e/a,c=new Map(i[0]);c.set("offset",0),r.push(c);let m=new Map(i[0]);m.set("offset",vl(s)),r.push(m);let _=i.length-1;for(let v=1;v<=_;v++){let D=new Map(i[v]),I=D.get("offset"),M=e+I*t;D.set("offset",vl(M/a)),r.push(D)}t=a,e=0,n="",i=r}return nr(this.element,i,this.preStyleProps,this.postStyleProps,t,e,n,!0)}};function vl(o,i=3){let e=Math.pow(10,i-1);return Math.round(o*e)/e}function od(o,i){let e=new Map,t;return o.forEach(n=>{if(n==="*"){t??=i.keys();for(let r of t)e.set(r,Qe)}else for(let[r,a]of n)e.set(r,a)}),e}function Sl(o,i,e,t,n,r,a,s,c,m,_,v,D){return{type:0,element:o,triggerName:i,isRemovalTransition:n,fromState:e,fromStyles:r,toState:t,toStyles:a,timelines:s,queriedElements:c,preStyleProps:m,postStyleProps:_,totalTime:v,errors:D}}var Ho={},Xn=class{_triggerName;ast;_stateStyles;constructor(i,e,t){this._triggerName=i,this.ast=e,this._stateStyles=t}match(i,e,t,n){return rd(this.ast.matchers,i,e,t,n)}buildStyles(i,e,t){let n=this._stateStyles.get("*");return i!==void 0&&(n=this._stateStyles.get(i?.toString())||n),n?n.buildStyles(e,t):new Map}build(i,e,t,n,r,a,s,c,m,_){let v=[],D=this.ast.options&&this.ast.options.params||Ho,I=s&&s.params||Ho,M=this.buildStyles(t,I,v),A=c&&c.params||Ho,Q=this.buildStyles(n,A,v),J=new Set,te=new Map,Z=new Map,Y=n==="void",ct={params:Il(A,D),delay:this.ast.options?.delay},Ie=_?[]:Dl(i,e,this.ast.animation,r,a,M,Q,ct,m,v),xe=0;return Ie.forEach(Ee=>{xe=Math.max(Ee.duration+Ee.delay,xe)}),v.length?Sl(e,this._triggerName,t,n,Y,M,Q,[],[],te,Z,xe,v):(Ie.forEach(Ee=>{let Ot=Ee.element,Qt=Ne(te,Ot,new Set);Ee.preStyleProps.forEach(Rt=>Qt.add(Rt));let kr=Ne(Z,Ot,new Set);Ee.postStyleProps.forEach(Rt=>kr.add(Rt)),Ot!==e&&J.add(Ot)}),Sl(e,this._triggerName,t,n,Y,M,Q,Ie,[...J.values()],te,Z,xe))}};function rd(o,i,e,t,n){return o.some(r=>r(i,e,t,n))}function Il(o,i){let e=dt({},i);return Object.entries(o).forEach(([t,n])=>{n!=null&&(e[t]=n)}),e}var Zo=class{styles;defaultParams;normalizer;constructor(i,e,t){this.styles=i,this.defaultParams=e,this.normalizer=t}buildStyles(i,e){let t=new Map,n=Il(i,this.defaultParams);return this.styles.styles.forEach(r=>{typeof r!="string"&&r.forEach((a,s)=>{a&&(a=zi(a,n,e));let c=this.normalizer.normalizePropertyName(s,e);a=this.normalizer.normalizeStyleValue(s,c,a,e),t.set(s,a)})}),t}};function ad(o,i,e){return new Yo(o,i,e)}var Yo=class{name;ast;_normalizer;transitionFactories=[];fallbackTransition;states=new Map;constructor(i,e,t){this.name=i,this.ast=e,this._normalizer=t,e.states.forEach(n=>{let r=n.options&&n.options.params||{};this.states.set(n.name,new Zo(n.style,r,t))}),bl(this.states,"true","1"),bl(this.states,"false","0"),e.transitions.forEach(n=>{this.transitionFactories.push(new Xn(i,n,this.states))}),this.fallbackTransition=sd(i,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(i,e,t,n){return this.transitionFactories.find(a=>a.match(i,e,t,n))||null}matchStyles(i,e,t){return this.fallbackTransition.buildStyles(i,e,t)}};function sd(o,i,e){let t=[(a,s)=>!0],n={type:U.Sequence,steps:[],options:null},r={type:U.Transition,animation:n,matchers:t,options:null,queryCount:0,depCount:0};return new Xn(o,r,i)}function bl(o,i,e){o.has(i)?o.has(e)||o.set(e,o.get(i)):o.has(e)&&o.set(i,o.get(e))}var ld=new qi,Xo=class{bodyNode;_driver;_normalizer;_animations=new Map;_playersById=new Map;players=[];constructor(i,e,t){this.bodyNode=i,this._driver=e,this._normalizer=t}register(i,e){let t=[],n=[],r=Nl(this._driver,e,t,n);if(t.length)throw nl(t);this._animations.set(i,r)}_buildPlayer(i,e,t){let n=i.element,r=ko(this._normalizer,i.keyframes,e,t);return this._driver.animate(n,r,i.duration,i.delay,i.easing,[],!0)}create(i,e,t={}){let n=[],r=this._animations.get(i),a,s=new Map;if(r?(a=Dl(this._driver,e,r,Oo,Bn,new Map,new Map,t,ld,n),a.forEach(_=>{let v=Ne(s,_.element,new Map);_.postStyleProps.forEach(D=>v.set(D,null))})):(n.push(ol()),a=[]),n.length)throw rl(n);s.forEach((_,v)=>{_.forEach((D,I)=>{_.set(I,this._driver.computeStyle(v,I,Qe))})});let c=a.map(_=>{let v=s.get(_.element);return this._buildPlayer(_,new Map,v)}),m=ft(c);return this._playersById.set(i,m),m.onDestroy(()=>this.destroy(i)),this.players.push(m),m}destroy(i){let e=this._getPlayer(i);e.destroy(),this._playersById.delete(i);let t=this.players.indexOf(e);t>=0&&this.players.splice(t,1)}_getPlayer(i){let e=this._playersById.get(i);if(!e)throw al(i);return e}listen(i,e,t,n){let r=Rn(e,"","","");return On(this._getPlayer(i),t,r,n),()=>{}}command(i,e,t,n){if(t=="register"){this.register(i,n[0]);return}if(t=="create"){let a=n[0]||{};this.create(i,e,a);return}let r=this._getPlayer(i);switch(t){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(n[0]));break;case"destroy":this.destroy(i);break}}},Tl="ng-animate-queued",cd=".ng-animate-queued",jo="ng-animate-disabled",dd=".ng-animate-disabled",pd="ng-star-inserted",md=".ng-star-inserted",ud=[],kl={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},fd={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Ye="__ng_removed",Ki=class{namespaceId;value;options;get params(){return this.options.params}constructor(i,e=""){this.namespaceId=e;let t=i&&i.hasOwnProperty("value"),n=t?i.value:i;if(this.value=gd(n),t){let r=i,{value:a}=r,s=Or(r,["value"]);this.options=s}else this.options={};this.options.params||(this.options.params={})}absorbOptions(i){let e=i.params;if(e){let t=this.options.params;Object.keys(e).forEach(n=>{t[n]==null&&(t[n]=e[n])})}}},Wi="void",Uo=new Ki(Wi),Jo=class{id;hostElement;_engine;players=[];_triggers=new Map;_queue=[];_elementListeners=new Map;_hostClassName;constructor(i,e,t){this.id=i,this.hostElement=e,this._engine=t,this._hostClassName="ng-tns-"+i,$e(e,this._hostClassName)}listen(i,e,t,n){if(!this._triggers.has(e))throw sl(t,e);if(t==null||t.length==0)throw ll(e);if(!_d(t))throw cl(t,e);let r=Ne(this._elementListeners,i,[]),a={name:e,phase:t,callback:n};r.push(a);let s=Ne(this._engine.statesByElement,i,new Map);return s.has(e)||($e(i,ji),$e(i,ji+"-"+e),s.set(e,Uo)),()=>{this._engine.afterFlush(()=>{let c=r.indexOf(a);c>=0&&r.splice(c,1),this._triggers.has(e)||s.delete(e)})}}register(i,e){return this._triggers.has(i)?!1:(this._triggers.set(i,e),!0)}_getTrigger(i){let e=this._triggers.get(i);if(!e)throw dl(i);return e}trigger(i,e,t,n=!0){let r=this._getTrigger(e),a=new Gi(this.id,e,i),s=this._engine.statesByElement.get(i);s||($e(i,ji),$e(i,ji+"-"+e),this._engine.statesByElement.set(i,s=new Map));let c=s.get(e),m=new Ki(t,this.id);if(!(t&&t.hasOwnProperty("value"))&&c&&m.absorbOptions(c.options),s.set(e,m),c||(c=Uo),!(m.value===Wi)&&c.value===m.value){if(!vd(c.params,m.params)){let A=[],Q=r.matchStyles(c.value,c.params,A),J=r.matchStyles(m.value,m.params,A);A.length?this._engine.reportError(A):this._engine.afterFlush(()=>{Lt(i,Q),Ze(i,J)})}return}let D=Ne(this._engine.playersByElement,i,[]);D.forEach(A=>{A.namespaceId==this.id&&A.triggerName==e&&A.queued&&A.destroy()});let I=r.matchTransition(c.value,m.value,i,m.params),M=!1;if(!I){if(!n)return;I=r.fallbackTransition,M=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:e,transition:I,fromState:c,toState:m,player:a,isFallbackTransition:M}),M||($e(i,Tl),a.onStart(()=>{Ei(i,Tl)})),a.onDone(()=>{let A=this.players.indexOf(a);A>=0&&this.players.splice(A,1);let Q=this._engine.playersByElement.get(i);if(Q){let J=Q.indexOf(a);J>=0&&Q.splice(J,1)}}),this.players.push(a),D.push(a),a}deregister(i){this._triggers.delete(i),this._engine.statesByElement.forEach(e=>e.delete(i)),this._elementListeners.forEach((e,t)=>{this._elementListeners.set(t,e.filter(n=>n.name!=i))})}clearElementCache(i){this._engine.statesByElement.delete(i),this._elementListeners.delete(i);let e=this._engine.playersByElement.get(i);e&&(e.forEach(t=>t.destroy()),this._engine.playersByElement.delete(i))}_signalRemovalForInnerTriggers(i,e){let t=this._engine.driver.query(i,Ui,!0);t.forEach(n=>{if(n[Ye])return;let r=this._engine.fetchNamespacesByElement(n);r.size?r.forEach(a=>a.triggerLeaveAnimation(n,e,!1,!0)):this.clearElementCache(n)}),this._engine.afterFlushAnimationsDone(()=>t.forEach(n=>this.clearElementCache(n)))}triggerLeaveAnimation(i,e,t,n){let r=this._engine.statesByElement.get(i),a=new Map;if(r){let s=[];if(r.forEach((c,m)=>{if(a.set(m,c.value),this._triggers.has(m)){let _=this.trigger(i,m,Wi,n);_&&s.push(_)}}),s.length)return this._engine.markElementAsRemoved(this.id,i,!0,e,a),t&&ft(s).onDone(()=>this._engine.processLeaveNode(i)),!0}return!1}prepareLeaveAnimationListeners(i){let e=this._elementListeners.get(i),t=this._engine.statesByElement.get(i);if(e&&t){let n=new Set;e.forEach(r=>{let a=r.name;if(n.has(a))return;n.add(a);let c=this._triggers.get(a).fallbackTransition,m=t.get(a)||Uo,_=new Ki(Wi),v=new Gi(this.id,a,i);this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:a,transition:c,fromState:m,toState:_,player:v,isFallbackTransition:!0})})}}removeNode(i,e){let t=this._engine;if(i.childElementCount&&this._signalRemovalForInnerTriggers(i,e),this.triggerLeaveAnimation(i,e,!0))return;let n=!1;if(t.totalAnimations){let r=t.players.length?t.playersByQueriedElement.get(i):[];if(r&&r.length)n=!0;else{let a=i;for(;a=a.parentNode;)if(t.statesByElement.get(a)){n=!0;break}}}if(this.prepareLeaveAnimationListeners(i),n)t.markElementAsRemoved(this.id,i,!1,e);else{let r=i[Ye];(!r||r===kl)&&(t.afterFlush(()=>this.clearElementCache(i)),t.destroyInnerAnimations(i),t._onRemovalComplete(i,e))}}insertNode(i,e){$e(i,this._hostClassName)}drainQueuedTransitions(i){let e=[];return this._queue.forEach(t=>{let n=t.player;if(n.destroyed)return;let r=t.element,a=this._elementListeners.get(r);a&&a.forEach(s=>{if(s.name==t.triggerName){let c=Rn(r,t.triggerName,t.fromState.value,t.toState.value);c._data=i,On(t.player,s.phase,c,s.callback)}}),n.markedForDestroy?this._engine.afterFlush(()=>{n.destroy()}):e.push(t)}),this._queue=[],e.sort((t,n)=>{let r=t.transition.ast.depCount,a=n.transition.ast.depCount;return r==0||a==0?r-a:this._engine.driver.containsElement(t.element,n.element)?1:-1})}destroy(i){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,i)}},er=class{bodyNode;driver;_normalizer;players=[];newHostElements=new Map;playersByElement=new Map;playersByQueriedElement=new Map;statesByElement=new Map;disabledNodes=new Set;totalAnimations=0;totalQueuedPlayers=0;_namespaceLookup={};_namespaceList=[];_flushFns=[];_whenQuietFns=[];namespacesByHostElement=new Map;collectedEnterElements=[];collectedLeaveElements=[];onRemovalComplete=(i,e)=>{};_onRemovalComplete(i,e){this.onRemovalComplete(i,e)}constructor(i,e,t){this.bodyNode=i,this.driver=e,this._normalizer=t}get queuedPlayers(){let i=[];return this._namespaceList.forEach(e=>{e.players.forEach(t=>{t.queued&&i.push(t)})}),i}createNamespace(i,e){let t=new Jo(i,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(t,e):(this.newHostElements.set(e,t),this.collectEnterElement(e)),this._namespaceLookup[i]=t}_balanceNamespaceList(i,e){let t=this._namespaceList,n=this.namespacesByHostElement;if(t.length-1>=0){let a=!1,s=this.driver.getParentElement(e);for(;s;){let c=n.get(s);if(c){let m=t.indexOf(c);t.splice(m+1,0,i),a=!0;break}s=this.driver.getParentElement(s)}a||t.unshift(i)}else t.push(i);return n.set(e,i),i}register(i,e){let t=this._namespaceLookup[i];return t||(t=this.createNamespace(i,e)),t}registerTrigger(i,e,t){let n=this._namespaceLookup[i];n&&n.register(e,t)&&this.totalAnimations++}destroy(i,e){i&&(this.afterFlush(()=>{}),this.afterFlushAnimationsDone(()=>{let t=this._fetchNamespace(i);this.namespacesByHostElement.delete(t.hostElement);let n=this._namespaceList.indexOf(t);n>=0&&this._namespaceList.splice(n,1),t.destroy(e),delete this._namespaceLookup[i]}))}_fetchNamespace(i){return this._namespaceLookup[i]}fetchNamespacesByElement(i){let e=new Set,t=this.statesByElement.get(i);if(t){for(let n of t.values())if(n.namespaceId){let r=this._fetchNamespace(n.namespaceId);r&&e.add(r)}}return e}trigger(i,e,t,n){if(qn(e)){let r=this._fetchNamespace(i);if(r)return r.trigger(e,t,n),!0}return!1}insertNode(i,e,t,n){if(!qn(e))return;let r=e[Ye];if(r&&r.setForRemoval){r.setForRemoval=!1,r.setForMove=!0;let a=this.collectedLeaveElements.indexOf(e);a>=0&&this.collectedLeaveElements.splice(a,1)}if(i){let a=this._fetchNamespace(i);a&&a.insertNode(e,t)}n&&this.collectEnterElement(e)}collectEnterElement(i){this.collectedEnterElements.push(i)}markElementAsDisabled(i,e){e?this.disabledNodes.has(i)||(this.disabledNodes.add(i),$e(i,jo)):this.disabledNodes.has(i)&&(this.disabledNodes.delete(i),Ei(i,jo))}removeNode(i,e,t){if(qn(e)){let n=i?this._fetchNamespace(i):null;n?n.removeNode(e,t):this.markElementAsRemoved(i,e,!1,t);let r=this.namespacesByHostElement.get(e);r&&r.id!==i&&r.removeNode(e,t)}else this._onRemovalComplete(e,t)}markElementAsRemoved(i,e,t,n,r){this.collectedLeaveElements.push(e),e[Ye]={namespaceId:i,setForRemoval:n,hasAnimation:t,removedBeforeQueried:!1,previousTriggersValues:r}}listen(i,e,t,n,r){return qn(e)?this._fetchNamespace(i).listen(e,t,n,r):()=>{}}_buildInstruction(i,e,t,n,r){return i.transition.build(this.driver,i.element,i.fromState.value,i.toState.value,t,n,i.fromState.options,i.toState.options,e,r)}destroyInnerAnimations(i){let e=this.driver.query(i,Ui,!0);e.forEach(t=>this.destroyActiveAnimationsForElement(t)),this.playersByQueriedElement.size!=0&&(e=this.driver.query(i,Hn,!0),e.forEach(t=>this.finishActiveQueriedAnimationOnElement(t)))}destroyActiveAnimationsForElement(i){let e=this.playersByElement.get(i);e&&e.forEach(t=>{t.queued?t.markedForDestroy=!0:t.destroy()})}finishActiveQueriedAnimationOnElement(i){let e=this.playersByQueriedElement.get(i);e&&e.forEach(t=>t.finish())}whenRenderingDone(){return new Promise(i=>{if(this.players.length)return ft(this.players).onDone(()=>i());i()})}processLeaveNode(i){let e=i[Ye];if(e&&e.setForRemoval){if(i[Ye]=kl,e.namespaceId){this.destroyInnerAnimations(i);let t=this._fetchNamespace(e.namespaceId);t&&t.clearElementCache(i)}this._onRemovalComplete(i,e.setForRemoval)}i.classList?.contains(jo)&&this.markElementAsDisabled(i,!1),this.driver.query(i,dd,!0).forEach(t=>{this.markElementAsDisabled(t,!1)})}flush(i=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((t,n)=>this._balanceNamespaceList(t,n)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let t=0;tt()),this._flushFns=[],this._whenQuietFns.length){let t=this._whenQuietFns;this._whenQuietFns=[],e.length?ft(e).onDone(()=>{t.forEach(n=>n())}):t.forEach(n=>n())}}reportError(i){throw pl(i)}_flushAnimations(i,e){let t=new qi,n=[],r=new Map,a=[],s=new Map,c=new Map,m=new Map,_=new Set;this.disabledNodes.forEach(E=>{_.add(E);let P=this.driver.query(E,cd,!0);for(let L=0;L{let L=Oo+A++;M.set(P,L),E.forEach(W=>$e(W,L))});let Q=[],J=new Set,te=new Set;for(let E=0;EJ.add(W)):te.add(P))}let Z=new Map,Y=zl(D,Array.from(J));Y.forEach((E,P)=>{let L=Bn+A++;Z.set(P,L),E.forEach(W=>$e(W,L))}),i.push(()=>{I.forEach((E,P)=>{let L=M.get(P);E.forEach(W=>Ei(W,L))}),Y.forEach((E,P)=>{let L=Z.get(P);E.forEach(W=>Ei(W,L))}),Q.forEach(E=>{this.processLeaveNode(E)})});let ct=[],Ie=[];for(let E=this._namespaceList.length-1;E>=0;E--)this._namespaceList[E].drainQueuedTransitions(e).forEach(L=>{let W=L.player,ge=L.element;if(ct.push(W),this.collectedEnterElements.length){let ve=ge[Ye];if(ve&&ve.setForMove){if(ve.previousTriggersValues&&ve.previousTriggersValues.has(L.triggerName)){let Vt=ve.previousTriggersValues.get(L.triggerName),Fe=this.statesByElement.get(L.element);if(Fe&&Fe.has(L.triggerName)){let en=Fe.get(L.triggerName);en.value=Vt,Fe.set(L.triggerName,en)}}W.destroy();return}}let Xe=!v||!this.driver.containsElement(v,ge),ke=Z.get(ge),yt=M.get(ge),ie=this._buildInstruction(L,t,yt,ke,Xe);if(ie.errors&&ie.errors.length){Ie.push(ie);return}if(Xe){W.onStart(()=>Lt(ge,ie.fromStyles)),W.onDestroy(()=>Ze(ge,ie.toStyles)),n.push(W);return}if(L.isFallbackTransition){W.onStart(()=>Lt(ge,ie.fromStyles)),W.onDestroy(()=>Ze(ge,ie.toStyles)),n.push(W);return}let Lr=[];ie.timelines.forEach(ve=>{ve.stretchStartingKeyframe=!0,this.disabledNodes.has(ve.element)||Lr.push(ve)}),ie.timelines=Lr,t.append(ge,ie.timelines);let Nc={instruction:ie,player:W,element:ge};a.push(Nc),ie.queriedElements.forEach(ve=>Ne(s,ve,[]).push(W)),ie.preStyleProps.forEach((ve,Vt)=>{if(ve.size){let Fe=c.get(Vt);Fe||c.set(Vt,Fe=new Set),ve.forEach((en,uo)=>Fe.add(uo))}}),ie.postStyleProps.forEach((ve,Vt)=>{let Fe=m.get(Vt);Fe||m.set(Vt,Fe=new Set),ve.forEach((en,uo)=>Fe.add(uo))})});if(Ie.length){let E=[];Ie.forEach(P=>{E.push(ml(P.triggerName,P.errors))}),ct.forEach(P=>P.destroy()),this.reportError(E)}let xe=new Map,Ee=new Map;a.forEach(E=>{let P=E.element;t.has(P)&&(Ee.set(P,P),this._beforeAnimationBuild(E.player.namespaceId,E.instruction,xe))}),n.forEach(E=>{let P=E.element;this._getPreviousPlayers(P,!1,E.namespaceId,E.triggerName,null).forEach(W=>{Ne(xe,P,[]).push(W),W.destroy()})});let Ot=Q.filter(E=>El(E,c,m)),Qt=new Map;wl(Qt,this.driver,te,m,Qe).forEach(E=>{El(E,c,m)&&Ot.push(E)});let Rt=new Map;I.forEach((E,P)=>{wl(Rt,this.driver,new Set(E),c,Li)}),Ot.forEach(E=>{let P=Qt.get(E),L=Rt.get(E);Qt.set(E,new Map([...P?.entries()??[],...L?.entries()??[]]))});let mo=[],Pr=[],Ar={};a.forEach(E=>{let{element:P,player:L,instruction:W}=E;if(t.has(P)){if(_.has(P)){L.onDestroy(()=>Ze(P,W.toStyles)),L.disabled=!0,L.overrideTotalTime(W.totalTime),n.push(L);return}let ge=Ar;if(Ee.size>1){let ke=P,yt=[];for(;ke=ke.parentNode;){let ie=Ee.get(ke);if(ie){ge=ie;break}yt.push(ke)}yt.forEach(ie=>Ee.set(ie,ge))}let Xe=this._buildAnimation(L.namespaceId,W,xe,r,Rt,Qt);if(L.setRealPlayer(Xe),ge===Ar)mo.push(L);else{let ke=this.playersByElement.get(ge);ke&&ke.length&&(L.parentPlayer=ft(ke)),n.push(L)}}else Lt(P,W.fromStyles),L.onDestroy(()=>Ze(P,W.toStyles)),Pr.push(L),_.has(P)&&n.push(L)}),Pr.forEach(E=>{let P=r.get(E.element);if(P&&P.length){let L=ft(P);E.setRealPlayer(L)}}),n.forEach(E=>{E.parentPlayer?E.syncPlayerEvents(E.parentPlayer):E.destroy()});for(let E=0;E!Xe.destroyed);ge.length?yd(this,P,ge):this.processLeaveNode(P)}return Q.length=0,mo.forEach(E=>{this.players.push(E),E.onDone(()=>{E.destroy();let P=this.players.indexOf(E);this.players.splice(P,1)}),E.play()}),mo}afterFlush(i){this._flushFns.push(i)}afterFlushAnimationsDone(i){this._whenQuietFns.push(i)}_getPreviousPlayers(i,e,t,n,r){let a=[];if(e){let s=this.playersByQueriedElement.get(i);s&&(a=s)}else{let s=this.playersByElement.get(i);if(s){let c=!r||r==Wi;s.forEach(m=>{m.queued||!c&&m.triggerName!=n||a.push(m)})}}return(t||n)&&(a=a.filter(s=>!(t&&t!=s.namespaceId||n&&n!=s.triggerName))),a}_beforeAnimationBuild(i,e,t){let n=e.triggerName,r=e.element,a=e.isRemovalTransition?void 0:i,s=e.isRemovalTransition?void 0:n;for(let c of e.timelines){let m=c.element,_=m!==r,v=Ne(t,m,[]);this._getPreviousPlayers(m,_,a,s,e.toState).forEach(I=>{let M=I.getRealPlayer();M.beforeDestroy&&M.beforeDestroy(),I.destroy(),v.push(I)})}Lt(r,e.fromStyles)}_buildAnimation(i,e,t,n,r,a){let s=e.triggerName,c=e.element,m=[],_=new Set,v=new Set,D=e.timelines.map(M=>{let A=M.element;_.add(A);let Q=A[Ye];if(Q&&Q.removedBeforeQueried)return new jt(M.duration,M.delay);let J=A!==c,te=Cd((t.get(A)||ud).map(xe=>xe.getRealPlayer())).filter(xe=>{let Ee=xe;return Ee.element?Ee.element===A:!1}),Z=r.get(A),Y=a.get(A),ct=ko(this._normalizer,M.keyframes,Z,Y),Ie=this._buildPlayer(M,ct,te);if(M.subTimeline&&n&&v.add(A),J){let xe=new Gi(i,s,A);xe.setRealPlayer(Ie),m.push(xe)}return Ie});m.forEach(M=>{Ne(this.playersByQueriedElement,M.element,[]).push(M),M.onDone(()=>hd(this.playersByQueriedElement,M.element,M))}),_.forEach(M=>$e(M,Ro));let I=ft(D);return I.onDestroy(()=>{_.forEach(M=>Ei(M,Ro)),Ze(c,e.toStyles)}),v.forEach(M=>{Ne(n,M,[]).push(I)}),I}_buildPlayer(i,e,t){return e.length>0?this.driver.animate(i.element,e,i.duration,i.delay,i.easing,t):new jt(i.duration,i.delay)}},Gi=class{namespaceId;triggerName;element;_player=new jt;_containsRealPlayer=!1;_queuedCallbacks=new Map;destroyed=!1;parentPlayer=null;markedForDestroy=!1;disabled=!1;queued=!0;totalTime=0;constructor(i,e,t){this.namespaceId=i,this.triggerName=e,this.element=t}setRealPlayer(i){this._containsRealPlayer||(this._player=i,this._queuedCallbacks.forEach((e,t)=>{e.forEach(n=>On(i,t,void 0,n))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(i.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(i){this.totalTime=i}syncPlayerEvents(i){let e=this._player;e.triggerCallback&&i.onStart(()=>e.triggerCallback("start")),i.onDone(()=>this.finish()),i.onDestroy(()=>this.destroy())}_queueEvent(i,e){Ne(this._queuedCallbacks,i,[]).push(e)}onDone(i){this.queued&&this._queueEvent("done",i),this._player.onDone(i)}onStart(i){this.queued&&this._queueEvent("start",i),this._player.onStart(i)}onDestroy(i){this.queued&&this._queueEvent("destroy",i),this._player.onDestroy(i)}init(){this._player.init()}hasStarted(){return this.queued?!1:this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(i){this.queued||this._player.setPosition(i)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(i){let e=this._player;e.triggerCallback&&e.triggerCallback(i)}};function hd(o,i,e){let t=o.get(i);if(t){if(t.length){let n=t.indexOf(e);t.splice(n,1)}t.length==0&&o.delete(i)}return t}function gd(o){return o??null}function qn(o){return o&&o.nodeType===1}function _d(o){return o=="start"||o=="done"}function xl(o,i){let e=o.style.display;return o.style.display=i??"none",e}function wl(o,i,e,t,n){let r=[];e.forEach(c=>r.push(xl(c)));let a=[];t.forEach((c,m)=>{let _=new Map;c.forEach(v=>{let D=i.computeStyle(m,v,n);_.set(v,D),(!D||D.length==0)&&(m[Ye]=fd,a.push(m))}),o.set(m,_)});let s=0;return e.forEach(c=>xl(c,r[s++])),a}function zl(o,i){let e=new Map;if(o.forEach(s=>e.set(s,[])),i.length==0)return e;let t=1,n=new Set(i),r=new Map;function a(s){if(!s)return t;let c=r.get(s);if(c)return c;let m=s.parentNode;return e.has(m)?c=m:n.has(m)?c=t:c=a(m),r.set(s,c),c}return i.forEach(s=>{let c=a(s);c!==t&&e.get(c).push(s)}),e}function $e(o,i){o.classList?.add(i)}function Ei(o,i){o.classList?.remove(i)}function yd(o,i,e){ft(e).onDone(()=>o.processLeaveNode(i))}function Cd(o){let i=[];return Pl(o,i),i}function Pl(o,i){for(let e=0;en.add(r)):i.set(o,t),e.delete(o),!0}var Mi=class{_driver;_normalizer;_transitionEngine;_timelineEngine;_triggerCache={};onRemovalComplete=(i,e)=>{};constructor(i,e,t){this._driver=e,this._normalizer=t,this._transitionEngine=new er(i.body,e,t),this._timelineEngine=new Xo(i.body,e,t),this._transitionEngine.onRemovalComplete=(n,r)=>this.onRemovalComplete(n,r)}registerTrigger(i,e,t,n,r){let a=i+"-"+n,s=this._triggerCache[a];if(!s){let c=[],m=[],_=Nl(this._driver,r,c,m);if(c.length)throw il(n,c);s=ad(n,_,this._normalizer),this._triggerCache[a]=s}this._transitionEngine.registerTrigger(e,n,s)}register(i,e){this._transitionEngine.register(i,e)}destroy(i,e){this._transitionEngine.destroy(i,e)}onInsert(i,e,t,n){this._transitionEngine.insertNode(i,e,t,n)}onRemove(i,e,t){this._transitionEngine.removeNode(i,e,t)}disableAnimations(i,e){this._transitionEngine.markElementAsDisabled(i,e)}process(i,e,t,n){if(t.charAt(0)=="@"){let[r,a]=Po(t),s=n;this._timelineEngine.command(r,e,a,s)}else this._transitionEngine.trigger(i,e,t,n)}listen(i,e,t,n,r){if(t.charAt(0)=="@"){let[a,s]=Po(t);return this._timelineEngine.listen(a,e,s,r)}return this._transitionEngine.listen(i,e,t,n,r)}flush(i=-1){this._transitionEngine.flush(i)}get players(){return[...this._transitionEngine.players,...this._timelineEngine.players]}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}afterFlushAnimationsDone(i){this._transitionEngine.afterFlushAnimationsDone(i)}};function Sd(o,i){let e=null,t=null;return Array.isArray(i)&&i.length?(e=$o(i[0]),i.length>1&&(t=$o(i[i.length-1]))):i instanceof Map&&(e=$o(i)),e||t?new bd(o,e,t):null}var bd=(()=>{class o{_element;_startStyles;_endStyles;static initialStylesByElement=new WeakMap;_state=0;_initialStyles;constructor(e,t,n){this._element=e,this._startStyles=t,this._endStyles=n;let r=o.initialStylesByElement.get(e);r||o.initialStylesByElement.set(e,r=new Map),this._initialStyles=r}start(){this._state<1&&(this._startStyles&&Ze(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(Ze(this._element,this._initialStyles),this._endStyles&&(Ze(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(o.initialStylesByElement.delete(this._element),this._startStyles&&(Lt(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Lt(this._element,this._endStyles),this._endStyles=null),Ze(this._element,this._initialStyles),this._state=3)}}return o})();function $o(o){let i=null;return o.forEach((e,t)=>{Td(t)&&(i=i||new Map,i.set(t,e))}),i}function Td(o){return o==="display"||o==="position"}var Jn=class{element;keyframes;options;_specialStyles;_onDoneFns=[];_onStartFns=[];_onDestroyFns=[];_duration;_delay;_initialized=!1;_finished=!1;_started=!1;_destroyed=!1;_finalKeyframe;_originalOnDoneFns=[];_originalOnStartFns=[];domPlayer=null;time=0;parentPlayer=null;currentSnapshot=new Map;constructor(i,e,t,n){this.element=i,this.keyframes=e,this.options=t,this._specialStyles=n,this._duration=t.duration,this._delay=t.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}init(){this._buildPlayer()&&this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return this.domPlayer;this._initialized=!0;let i=this.keyframes,e=this._triggerWebAnimation(this.element,i,this.options);if(!e)return this._onFinish(),null;this.domPlayer=e,this._finalKeyframe=i.length?i[i.length-1]:new Map;let t=()=>this._onFinish();return e.addEventListener("finish",t),this.onDestroy(()=>{e.removeEventListener("finish",t)}),e}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer?.pause()}_convertKeyframesToObject(i){let e=[];return i.forEach(t=>{e.push(Object.fromEntries(t))}),e}_triggerWebAnimation(i,e,t){let n=this._convertKeyframesToObject(e);try{return i.animate(n,t)}catch{return null}}onStart(i){this._originalOnStartFns.push(i),this._onStartFns.push(i)}onDone(i){this._originalOnDoneFns.push(i),this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}play(){let i=this._buildPlayer();i&&(this.hasStarted()||(this._onStartFns.forEach(e=>e()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),i.play())}pause(){this.init(),this.domPlayer?.pause()}finish(){this.init(),this.domPlayer&&(this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish())}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer?.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}setPosition(i){this.domPlayer||this.init(),this.domPlayer&&(this.domPlayer.currentTime=i*this.time)}getPosition(){return this.domPlayer?+(this.domPlayer.currentTime??0)/this.time:this._initialized?1:0}get totalTime(){return this._delay+this._duration}beforeDestroy(){let i=new Map;this.hasStarted()&&this._finalKeyframe.forEach((t,n)=>{n!=="offset"&&i.set(n,this._finished?t:Un(this.element,n))}),this.currentSnapshot=i}triggerCallback(i){let e=i==="start"?this._onStartFns:this._onDoneFns;e.forEach(t=>t()),e.length=0}},eo=class{validateStyleProperty(i){return!0}validateAnimatableStyleProperty(i){return!0}containsElement(i,e){return Ao(i,e)}getParentElement(i){return Vn(i)}query(i,e,t){return Lo(i,e,t)}computeStyle(i,e,t){return Un(i,e)}animate(i,e,t,n,r,a=[]){let s=n==0?"both":"forwards",c={duration:t,delay:n,fill:s};r&&(c.easing=r);let m=new Map,_=a.filter(I=>I instanceof Jn);gl(t,n)&&_.forEach(I=>{I.currentSnapshot.forEach((M,A)=>m.set(A,M))});let v=fl(e).map(I=>new Map(I));v=_l(i,v,m);let D=Sd(i,v);return new Jn(i,v,c,D)}};var Kn="@",Al="@.disabled",to=class{namespaceId;delegate;engine;_onDestroy;\u0275type=0;constructor(i,e,t,n){this.namespaceId=i,this.delegate=e,this.engine=t,this._onDestroy=n}get data(){return this.delegate.data}destroyNode(i){this.delegate.destroyNode?.(i)}destroy(){this.engine.destroy(this.namespaceId,this.delegate),this.engine.afterFlushAnimationsDone(()=>{queueMicrotask(()=>{this.delegate.destroy()})}),this._onDestroy?.()}createElement(i,e){return this.delegate.createElement(i,e)}createComment(i){return this.delegate.createComment(i)}createText(i){return this.delegate.createText(i)}appendChild(i,e){this.delegate.appendChild(i,e),this.engine.onInsert(this.namespaceId,e,i,!1)}insertBefore(i,e,t,n=!0){this.delegate.insertBefore(i,e,t),this.engine.onInsert(this.namespaceId,e,i,n)}removeChild(i,e,t,n){if(n){this.delegate.removeChild(i,e,t,n);return}this.parentNode(e)&&this.engine.onRemove(this.namespaceId,e,this.delegate)}selectRootElement(i,e){return this.delegate.selectRootElement(i,e)}parentNode(i){return this.delegate.parentNode(i)}nextSibling(i){return this.delegate.nextSibling(i)}setAttribute(i,e,t,n){this.delegate.setAttribute(i,e,t,n)}removeAttribute(i,e,t){this.delegate.removeAttribute(i,e,t)}addClass(i,e){this.delegate.addClass(i,e)}removeClass(i,e){this.delegate.removeClass(i,e)}setStyle(i,e,t,n){this.delegate.setStyle(i,e,t,n)}removeStyle(i,e,t){this.delegate.removeStyle(i,e,t)}setProperty(i,e,t){e.charAt(0)==Kn&&e==Al?this.disableAnimations(i,!!t):this.delegate.setProperty(i,e,t)}setValue(i,e){this.delegate.setValue(i,e)}listen(i,e,t,n){return this.delegate.listen(i,e,t,n)}disableAnimations(i,e){this.engine.disableAnimations(i,e)}},tr=class extends to{factory;constructor(i,e,t,n,r){super(e,t,n,r),this.factory=i,this.namespaceId=e}setProperty(i,e,t){e.charAt(0)==Kn?e.charAt(1)=="."&&e==Al?(t=t===void 0?!0:!!t,this.disableAnimations(i,t)):this.engine.process(this.namespaceId,i,e.slice(1),t):this.delegate.setProperty(i,e,t)}listen(i,e,t,n){if(e.charAt(0)==Kn){let r=xd(i),a=e.slice(1),s="";return a.charAt(0)!=Kn&&([a,s]=wd(a)),this.engine.listen(this.namespaceId,r,a,s,c=>{let m=c._data||-1;this.factory.scheduleListenerCallback(m,t,c)})}return this.delegate.listen(i,e,t,n)}};function xd(o){switch(o){case"body":return document.body;case"document":return document;case"window":return window;default:return o}}function wd(o){let i=o.indexOf("."),e=o.substring(0,i),t=o.slice(i+1);return[e,t]}var io=class{delegate;engine;_zone;_currentId=0;_microtaskId=1;_animationCallbacksBuffer=[];_rendererCache=new Map;_cdRecurDepth=0;constructor(i,e,t){this.delegate=i,this.engine=e,this._zone=t,e.onRemovalComplete=(n,r)=>{r?.removeChild(null,n)}}createRenderer(i,e){let n=this.delegate.createRenderer(i,e);if(!i||!e?.data?.animation){let m=this._rendererCache,_=m.get(n);if(!_){let v=()=>m.delete(n);_=new to("",n,this.engine,v),m.set(n,_)}return _}let r=e.id,a=e.id+"-"+this._currentId;this._currentId++,this.engine.register(a,i);let s=m=>{Array.isArray(m)?m.forEach(s):this.engine.registerTrigger(r,a,i,m.name,m)};return e.data.animation.forEach(s),new tr(this,a,n,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){queueMicrotask(()=>{this._microtaskId++})}scheduleListenerCallback(i,e,t){if(i>=0&&ie(t));return}let n=this._animationCallbacksBuffer;n.length==0&&queueMicrotask(()=>{this._zone.run(()=>{n.forEach(r=>{let[a,s]=r;a(s)}),this._animationCallbacksBuffer=[]})}),n.push([e,t])}end(){this._cdRecurDepth--,this._cdRecurDepth==0&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}componentReplaced(i){this.engine.flush(),this.delegate.componentReplaced?.(i)}};var Ed=(()=>{class o extends Mi{constructor(e,t,n){super(e,t,n)}ngOnDestroy(){this.flush()}static \u0275fac=function(t){return new(t||o)(Ct(we),Ct(qt),Ct(Kt))};static \u0275prov=pt({token:o,factory:o.\u0275fac})}return o})();function Md(){return new Gn}function Nd(o,i,e){return new io(o,i,e)}var Fl=[{provide:Kt,useFactory:Md},{provide:Mi,useClass:Ed},{provide:Zr,useFactory:Nd,deps:[pa,Mi,St]}],Dd=[{provide:qt,useClass:ir},{provide:go,useValue:"NoopAnimations"},...Fl],Ll=[{provide:qt,useFactory:()=>new eo},{provide:go,useFactory:()=>"BrowserAnimations"},...Fl],Ol=(()=>{class o{static withConfig(e){return{ngModule:o,providers:e.disableAnimations?Dd:Ll}}static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({providers:Ll,imports:[ln]})}return o})();var Rl=new Ur("20.4.4");var Bl=(()=>{class o{router;titleSrv;modalSrv;sanitizer;modal;msg;notification;constructor(e,t,n,r,a,s,c,m,_){this.router=n,this.titleSrv=r,this.modalSrv=a,this.sanitizer=s,this.modal=c,this.msg=m,this.notification=_,t.setAttribute(e.nativeElement,"ng-alain-version",Eo.full),t.setAttribute(e.nativeElement,"ng-zorro-version",Rl.full),t.setAttribute(e.nativeElement,"ng-erupt-version",Eo.full)}beforeMatch=null;ngOnInit(){window.msg=this.msg,window.modal=this.modal,window.notify=this.notification,window.safeHtml=t=>this.sanitizer.bypassSecurityTrustHtml(t);let e=!1;this.router.events.subscribe(t=>{if(t instanceof Fi&&(e=!0),e&&t instanceof oi&&this.modalSrv.confirm({nzTitle:"\u63D0\u9192",nzContent:Be.production?"\u5E94\u7528\u53EF\u80FD\u5DF2\u53D1\u5E03\u65B0\u7248\u672C\uFF0C\u8BF7\u70B9\u51FB\u5237\u65B0\u624D\u80FD\u751F\u6548\u3002":`\u65E0\u6CD5\u52A0\u8F7D\u8DEF\u7531\uFF1A${t.url}`,nzCancelDisabled:!1,nzOkText:"\u5237\u65B0",nzCancelText:"\u5FFD\u7565",nzOnOk:()=>location.reload()}),t instanceof Ut&&(this.titleSrv.setTitle(),V.eruptRouterEvent)){let n=t.url;n=n.substring(0,n.indexOf("?")===-1?n.length:n.indexOf("?"));let r=n.split("/"),a=r[r.length-1];if(a!=this.beforeMatch){if(this.beforeMatch){V.eruptRouterEvent.$&&V.eruptRouterEvent.$.unload&&V.eruptRouterEvent.$.unload(t);let c=V.eruptRouterEvent[this.beforeMatch];c&&c.unload&&c.unload(t)}let s=V.eruptRouterEvent[a];V.eruptRouterEvent.$&&V.eruptRouterEvent.$.load&&V.eruptRouterEvent.$.load(t),s&&s.load&&s.load(t)}this.beforeMatch=a}})}static \u0275fac=function(t){return new(t||o)(h(vt),h(bt),h(oe),h(ts),h(de),h(ni),h(de),h(be),h(gn))};static \u0275cmp=k({type:o,selectors:[["app-root"]],standalone:!1,decls:1,vars:0,template:function(t,n){t&1&&g(0,"router-outlet")},dependencies:[zt],encapsulation:2})}return o})();var Hl=(()=>{class o{constructor(e){hn(e,"CoreModule")}static \u0275fac=function(t){return new(t||o)(Ct(o,12))};static \u0275mod=G({type:o});static \u0275inj=K({})}return o})();var Id={st:{modal:{size:"lg"}},pageHeader:{homeI18n:"home"},auth:{login_url:"/passport/login",ignores:[/\/erupt-app$/,/\/tenant\/domain-info$/,/erupt-api\/login/,/erupt-api\/tenant\/login/]}},kd=[fn.forRoot(),Ea,Tn],rr=[{provide:va,useValue:Id}];rr.push(Ae);rr.push({provide:ga,useClass:ls,deps:[Ae]});var Pd={},Ad=[{provide:Na,useValue:Pd}],Ld=[{provide:ps,useValue:{}},{provide:cs,useValue:[ds]}],jl=(()=>{class o{constructor(e){hn(e,"GlobalConfigModule")}static forRoot(){return{ngModule:o,providers:[...rr,...Ad,...Ld]}}static \u0275fac=function(t){return new(t||o)(Ct(o,12))};static \u0275mod=G({type:o});static \u0275inj=K({imports:[kd,Be.modules||[]]})}return o})();var Fd=["host"],$l=["*"];function Od(o,i){o&1&&ti(0)}function Rd(o,i){if(o&1){let e=N();d(0,"a",4),b("click",function(){let n=T(e).$implicit,r=f(2);return x(r.to(n))}),p()}if(o&2){let e=i.$implicit;u("innerHTML",e.title,se)}}function Vd(o,i){o&1&&yo(0)}function Bd(o,i){if(o&1){let e=N();d(0,"a",5),b("click",function(){let n=T(e).$implicit,r=f(2);return x(r.to(n))}),O(1,Vd,1,0,"ng-container",6),p()}if(o&2){let e=i.$implicit;l(),u("ngTemplateOutlet",e.host())}}function Hd(o,i){if(o&1&&(d(0,"div",0),le(1,Rd,1,1,"a",2,Je),le(3,Bd,2,1,"a",3,Je),p()),o&2){let e=f();l(),ce(e.linkHtmls()),l(2),ce(e.items())}}var Ul=(()=>{class o{host=aa.required("host");href=Me();blankTarget=Me(!1,{transform:xt});static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["global-footer-item"]],viewQuery:function(t,n){t&1&&ta(n.host,Fd,5),t&2&&Co()},inputs:{href:[1,"href"],blankTarget:[1,"blankTarget"]},exportAs:["globalFooterItem"],ngContentSelectors:$l,decls:2,vars:0,consts:[["host",""]],template:function(t,n){t&1&&(ei(),Xr(0,Od,1,0,"ng-template",null,0,j))},encapsulation:2,changeDetection:0})}return o})(),Wl=(()=>{class o{router=B(oe);win=B(xn);dom=B(ni);dir=B(it).valueSignal;links=Me([]);items=sa(Ul);linkHtmls=oa(()=>this.links().map(e=>(typeof e.title=="string"&&(e.title=this.dom.bypassSecurityTrustHtml(e.title)),e)));to(e){let t=typeof e.href=="string"?e.href:e.href();if(!t)return;if(typeof e.blankTarget=="boolean"?e.blankTarget:e.blankTarget?.()){this.win.open(t);return}/^https?:\/\//.test(t)?this.win.location.href=t:this.router.navigateByUrl(t)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["global-footer"]],contentQueries:function(t,n,r){t&1&&ea(r,n.items,Ul,4),t&2&&Co()},hostVars:4,hostBindings:function(t,n){t&2&&ne("global-footer",!0)("global-footer-rtl",n.dir()==="rtl")},inputs:{links:[1,"links"]},exportAs:["globalFooter"],ngContentSelectors:$l,decls:3,vars:1,consts:[[1,"global-footer__links"],[1,"global-footer__copyright"],[1,"global-footer__links-item",3,"innerHTML"],[1,"global-footer__links-item"],[1,"global-footer__links-item",3,"click","innerHTML"],[1,"global-footer__links-item",3,"click"],[4,"ngTemplateOutlet"]],template:function(t,n){t&1&&(ei(),y(0,Hd,5,0,"div",0),d(1,"div",1),ti(2),p()),t&2&&C(n.linkHtmls().length>0||n.items().length>0?0:-1)},dependencies:[mt],encapsulation:2,changeDetection:0})}return o})();var ql=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[tt,Re]})}return o})();var no=class{constructor(i){this.children=[],this.parent=i}delete(i){let e=this.children.indexOf(i);return e===-1?!1:(this.children=this.children.slice(0,e).concat(this.children.slice(e+1)),this.children.length===0&&this.parent.delete(this),!0)}add(i){return this.children.push(i),this}},ar=class o{constructor(i){this.parent=null,this.children={},this.parent=i||null}get(i){return this.children[i]}insert(i){let e=this;for(let t=0;t","\xBF":"?"},$d={"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+","[":"{","]":"}","\\":"|",";":":","'":'"',",":"<",".":">","/":"?",q:"Q",w:"W",e:"E",r:"R",t:"T",y:"Y",u:"U",i:"I",o:"O",p:"P",a:"A",s:"S",d:"D",f:"F",g:"G",h:"H",j:"J",k:"K",l:"L",z:"Z",x:"X",c:"C",v:"V",b:"B",n:"N",m:"M"},Wd={" ":"Space","+":"Plus"};function qd(o,i=navigator.platform){var e,t,n;let{ctrlKey:r,altKey:a,metaKey:s,shiftKey:c,key:m}=o,_=[],v=[r,a,s,c];for(let[D,I]of v.entries())I&&_.push(Kl[D]);if(!Kl.includes(m)){let D=_.includes("Alt")&&Gl.test(i)&&(e=Ud[m])!==null&&e!==void 0?e:m,I=_.includes("Shift")&&Gl.test(i)&&(t=$d[D])!==null&&t!==void 0?t:D,M=(n=Wd[I])!==null&&n!==void 0?n:I;_.push(M)}return _.join("+")}var Kl=["Control","Alt","Meta","Shift"];var Gl=/Mac|iPod|iPhone|iPad/i;var Kd=" ",Gd=(()=>{class o{constructor({onReset:e}={}){this._path=[],this.timer=null,this.onReset=e}get path(){return this._path}get sequence(){return this._path.join(Kd)}registerKeypress(e){this._path=[...this._path,qd(e)],this.startTimer()}reset(){var e;this.killTimer(),this._path=[],(e=this.onReset)===null||e===void 0||e.call(this)}killTimer(){this.timer!=null&&window.clearTimeout(this.timer),this.timer=null}startTimer(){this.killTimer(),this.timer=window.setTimeout(()=>this.reset(),o.CHORD_TIMEOUT)}}return o.CHORD_TIMEOUT=1500,o})();var Ql=new ar;var Qd=Ql,w0=new Gd({onReset(){Qd=Ql}});var Zl=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({})}return o})();var Yl=o=>({$implicit:o});function Yd(o,i){}function Xd(o,i){if(o&1&&O(0,Yd,0,0,"ng-template",4),o&2){f();let e=R(5);u("ngTemplateOutlet",e)}}function Jd(o,i){if(o&1&&g(0,"img",6),o&2){f(2);let e=Ht(0);Bt("src",e.emptyImage,me)}}function ep(o,i){if(o&1&&(Xt(0),S(1),Jt()),o&2){let e=f(2),t=Ht(0);l(),H(" ",t.emptyText??e.locale().emptyText," ")}}function tp(o,i){if(o&1&&(d(0,"div",5),y(1,Jd,1,1,"img",6),d(2,"p"),O(3,ep,2,1,"ng-container",7),p()()),o&2){f();let e=Ht(0);l(),C(e.emptyImage?1:-1),l(2),u("nzStringTemplateOutlet",e.emptyText)}}function ip(o,i){if(o&1&&(Xt(0),S(1),Jt()),o&2){let e=f(2).$implicit;l(),H(" ",e.title," ")}}function np(o,i){if(o&1&&(d(0,"div",13)(1,"nz-tag",14),S(2),p()()),o&2){let e=f(2).$implicit;l(),u("nzColor",e.color),l(),F(e.extra)}}function op(o,i){if(o&1&&(O(0,ip,2,1,"ng-container",12),y(1,np,3,2,"div",13)),o&2){let e=f().$implicit;u("nzStringTemplateOutlet",e.title)("nzStringTemplateOutletContext",_e(3,Yl,e)),l(),C(e.extra?1:-1)}}function rp(o,i){if(o&1&&(Xt(0),S(1),Jt()),o&2){let e=f(3).$implicit;l(),H(" ",e.description," ")}}function ap(o,i){if(o&1&&(d(0,"div",15),O(1,rp,2,1,"ng-container",12),p()),o&2){let e=f(2).$implicit;l(),u("nzStringTemplateOutlet",e.description)("nzStringTemplateOutletContext",_e(2,Yl,e))}}function sp(o,i){if(o&1&&(d(0,"div",16),S(1),p()),o&2){let e=f(2).$implicit;l(),F(e.datetime)}}function lp(o,i){if(o&1&&(y(0,ap,2,4,"div",15),y(1,sp,2,1,"div",16)),o&2){let e=f().$implicit;C(e.description?0:-1),l(),C(e.datetime?1:-1)}}function cp(o,i){if(o&1){let e=N();d(0,"nz-list-item",10),b("click",function(n){let r=T(e).$implicit,a=f(2);return x(a.onClick(r,n))}),d(1,"nz-list-item-meta",11),O(2,op,2,5,"ng-template",null,2,j)(4,lp,2,2,"ng-template",null,3,j),p()()}if(o&2){let e=i.$implicit,t=R(3),n=R(5);ne("notice-icon__item-read",e.read),l(),u("nzTitle",t)("nzDescription",n)("nzAvatar",e.avatar)}}function dp(o,i){if(o&1){let e=N();d(0,"nz-list",8),O(1,cp,6,5,"ng-template",null,1,j),p(),d(3,"div",9),b("click",function(){T(e);let n=f();return x(n.onClear())}),S(4),p()}if(o&2){let e=R(2),t=f(),n=Ht(0),r=Ht(1);u("nzDataSource",r)("nzRenderItem",e),l(4),F(n.clearText??t.locale().clearText)}}var pp=()=>({"box-shadow":"none"});function mp(o,i){if(o&1&&(d(0,"nz-badge",3),g(1,"nz-icon",4),p()),o&2){let e=f();Pe(e.btnClass()),u("nzCount",e.count())("nzStyle",Oe(6,pp)),l(),Pe(e.btnIconClass())}}function up(o,i){}function fp(o,i){if(o&1&&O(0,up,0,0,"ng-template",2),o&2){f();let e=R(1);u("ngTemplateOutlet",e)}}function hp(o,i){}function gp(o,i){if(o&1){let e=N();d(0,"nz-tab",8)(1,"notice-icon-tab",9),b("select",function(n){T(e);let r=f(3);return x(r.select.emit(n))})("clear",function(n){T(e);let r=f(3);return x(r.clear.emit(n))}),p()()}if(o&2){let e=i.$implicit,t=f(3);u("nzTitle",e.title),l(),u("locale",t.locale())("item",e)}}function _p(o,i){if(o&1&&(d(0,"nz-tabs",7),le(1,gp,2,3,"nz-tab",8,Je),p()),o&2){let e=f(2),t=Ht(2);u("nzSelectedIndex",0)("nzCentered",e.centered()),l(),ce(t)}}function yp(o,i){if(o&1){let e=N();d(0,"div",5),b("nzVisibleChange",function(n){T(e);let r=f();return x(r.onVisibleChange(n))}),O(1,hp,0,0,"ng-template",2),p(),d(2,"nz-dropdown-menu",null,1)(4,"nz-spin",6),y(5,_p,3,2,"nz-tabs",7),p()()}if(o&2){let e=R(3),t=f(),n=R(1);u("nzVisible",t.popoverVisible())("nzOverlayClassName",t.overlayCls())("nzDropdownMenu",e),l(),u("ngTemplateOutlet",n),l(3),u("nzSpinning",t.loading())("nzDelay",0),l(),C(t.delayShow()?5:-1)}}var Xl=(()=>{class o{locale=Me.required();item=Me.required();select=ii();clear=ii();onClick(e,t){this.select.emit({title:this.item().title,item:e,event:t})}onClear(){this.clear.emit(this.item().title)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["notice-icon-tab"]],inputs:{locale:[1,"locale"],item:[1,"item"]},outputs:{select:"select",clear:"clear"},exportAs:["noticeIconTab"],decls:6,vars:3,consts:[["listTpl",""],["item",""],["nzTitle",""],["nzDescription",""],[3,"ngTemplateOutlet"],[1,"notice-icon__notfound"],["alt","not found",1,"notice-icon__notfound-img"],[4,"nzStringTemplateOutlet"],[3,"nzDataSource","nzRenderItem"],[1,"notice-icon__clear",3,"click"],[3,"click"],[3,"nzTitle","nzDescription","nzAvatar"],[4,"nzStringTemplateOutlet","nzStringTemplateOutletContext"],[1,"notice-icon__item-extra"],[3,"nzColor"],[1,"notice-icon__item-desc"],[1,"notice-icon__item-time"]],template:function(t,n){if(t&1&&(vo(0)(1),y(2,Xd,1,1,null,4)(3,tp,4,2,"div",5),O(4,dp,5,3,"ng-template",null,0,j)),t&2){let r=rn(n.item());l();let a=rn(r.list);l(),C(a&&a.length>0?2:3)}},dependencies:[mt,Qa,En,Mn,fs,Nn],encapsulation:2})}return o})(),Cp=(()=>{class o{locale=B(is).valueSignal("noticeIcon");data=Me([]);count=Me(void 0,{transform:et});loading=Me(!1,{transform:xt});popoverVisible=Me(!1,{transform:xt});btnClass=Me();btnIconClass=Me();centered=Me(!1,{transform:xt});select=ii();clear=ii();popoverVisibleChange=ii();overlayCls=ho("");constructor(){ra(()=>{this.overlayCls.set(`header-dropdown notice-icon${this.centered()?"":" notice-icon__tab-left"}`),this.popoverVisible()||this.delayShow.set(!1)})}delayShow=ho(!1);onVisibleChange(e){this.delayShow.set(e),this.popoverVisibleChange.emit(e)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["notice-icon"]],hostVars:2,hostBindings:function(t,n){t&2&&ne("notice-icon__btn",!0)},inputs:{data:[1,"data"],count:[1,"count"],loading:[1,"loading"],popoverVisible:[1,"popoverVisible"],btnClass:[1,"btnClass"],btnIconClass:[1,"btnIconClass"],centered:[1,"centered"]},outputs:{select:"select",clear:"clear",popoverVisibleChange:"popoverVisibleChange"},exportAs:["noticeIcon"],decls:5,vars:2,consts:[["badgeTpl",""],["noticeMenu","nzDropdownMenu"],[3,"ngTemplateOutlet"],[3,"nzCount","nzStyle"],["nzType","bell"],["nz-dropdown","","nzTrigger","click","nzPlacement","bottomRight",3,"nzVisibleChange","nzVisible","nzOverlayClassName","nzDropdownMenu"],[3,"nzSpinning","nzDelay"],[3,"nzSelectedIndex","nzCentered"],[3,"nzTitle"],[3,"select","clear","locale","item"]],template:function(t,n){if(t&1&&(O(0,mp,2,7,"ng-template",null,0,j),vo(2),y(3,fp,1,1,null,2)(4,yp,6,7)),t&2){l(2);let r=rn(n.data());l(),C(r.length<=0?3:4)}},dependencies:[mt,kt,re,si,li,It,Sn,vn,Xl],encapsulation:2,changeDetection:0})}return o})(),vp=[Cp],Jl=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[tt,ns,gi,Dt,Et,hs,zn,bn,gs,Za,vp,Xl]})}return o})();var ec=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[tt,Re,Dn,Et,wn,Dt,gi]})}return o})();var lr=()=>({standalone:!0});function Tp(o,i){if(o&1){let e=N();d(0,"input",6),he("ngModelChange",function(n){T(e);let r=f();return fe(r.i.value,n)||(r.i.value=n),x(n)}),p()}if(o&2){let e=f();ue("ngModel",e.i.value),u("ngModelOptions",Oe(2,lr))}}function xp(o,i){if(o&1){let e=N();d(0,"input",7),he("ngModelChange",function(n){T(e);let r=f();return fe(r.i.value,n)||(r.i.value=n),x(n)}),p()}if(o&2){let e=f();ue("ngModel",e.i.value),u("ngModelOptions",Oe(2,lr))}}function wp(o,i){if(o&1){let e=N();d(0,"nz-input-number",8),he("ngModelChange",function(n){T(e);let r=f();return fe(r.pxVal,n)||(r.pxVal=n),x(n)}),b("ngModelChange",function(n){T(e);let r=f();return x(r.pxChange(n))}),p()}if(o&2){let e=f();ue("ngModel",e.pxVal),u("nzMin",e.i.min)("nzMax",e.i.max)("nzStep",e.i.step??2)("nzFormatter",e.format)}}function zp(o,i){if(o&1){let e=N();d(0,"nz-switch",9),he("ngModelChange",function(n){T(e);let r=f();return fe(r.i.value,n)||(r.i.value=n),x(n)}),p()}if(o&2){let e=f();ue("ngModel",e.i.value),u("ngModelOptions",Oe(2,lr))}}function Ep(o,i){}function Mp(o,i){o&1&&O(0,Ep,0,0,"ng-template",5)}var Np=o=>({"background-color":o});function Dp(o,i){o&1&&g(0,"nz-icon",20)}function Ip(o,i){if(o&1){let e=N();d(0,"span",19),b("click",function(){let n=T(e).$implicit,r=f(2);return x(r.changeColor(n.color))}),y(1,Dp,1,0,"nz-icon",20),p()}if(o&2){let e=i.$implicit,t=f(2);ia(_e(4,Np,e.color)),u("nzTooltipTitle",e.key),l(),C(t.color===e.color?1:-1)}}function kp(o,i){if(o&1){let e=N();d(0,"div",4)(1,"div",5)(2,"h3",6),S(3,"\u4E3B\u9898\u8272"),p(),le(4,Ip,2,6,"span",7,Je),p(),g(6,"nz-divider"),d(7,"div",8)(8,"h3",6),S(9,"\u8BBE\u7F6E"),p(),d(10,"nz-tabs")(11,"nz-tab",9)(12,"div",8),g(13,"setting-drawer-item",10)(14,"setting-drawer-item",10)(15,"setting-drawer-item",10),p()(),d(16,"nz-tab",11),g(17,"setting-drawer-item",10)(18,"setting-drawer-item",10)(19,"setting-drawer-item",10)(20,"setting-drawer-item",10),p(),d(21,"nz-tab",12),g(22,"setting-drawer-item",10)(23,"setting-drawer-item",10)(24,"setting-drawer-item",10)(25,"setting-drawer-item",10),p(),d(26,"nz-tab",13),g(27,"setting-drawer-item",10)(28,"setting-drawer-item",10)(29,"setting-drawer-item",10)(30,"setting-drawer-item",10)(31,"setting-drawer-item",10)(32,"setting-drawer-item",10),p()()(),g(33,"nz-divider"),d(34,"div",8)(35,"div",14),S(36," \u56FA\u5B9A\u5934\u548C\u4FA7\u8FB9\u680F "),d(37,"nz-switch",15),he("ngModelChange",function(n){T(e);let r=f();return fe(r.layout.fixed,n)||(r.layout.fixed=n),x(n)}),b("ngModelChange",function(){T(e);let n=f();return x(n.setLayout("fixed",n.layout.fixed))}),p()(),d(38,"div",14),S(39," \u8272\u5F31\u6A21\u5F0F "),d(40,"nz-switch",15),he("ngModelChange",function(n){T(e);let r=f();return fe(r.layout.colorWeak,n)||(r.layout.colorWeak=n),x(n)}),b("ngModelChange",function(){T(e);let n=f();return x(n.setLayout("colorWeak",n.layout.colorWeak))}),p()()(),g(41,"nz-divider"),d(42,"button",16),b("click",function(){T(e);let n=f();return x(n.apply())}),S(43,"\u9884\u89C8"),p(),d(44,"button",17),b("click",function(){T(e);let n=f();return x(n.reset())}),S(45,"\u91CD\u7F6E"),p(),d(46,"button",17),b("click",function(){T(e);let n=f();return x(n.copyVar())}),S(47,"\u62F7\u8D1D"),p(),g(48,"nz-alert",18),p()}if(o&2){let e=f();l(4),ce(e.colors),l(9),u("data",e.data["alain-default-header-hg"]),l(),u("data",e.data["alain-default-header-bg"]),l(),u("data",e.data["alain-default-header-padding"]),l(2),u("data",e.data["alain-default-aside-wd"]),l(),u("data",e.data["alain-default-aside-bg"]),l(),u("data",e.data["alain-default-aside-collapsed-wd"]),l(),u("data",e.data["alain-default-aside-nav-padding-top-bottom"]),l(2),u("data",e.data["alain-default-content-bg"]),l(),u("data",e.data["alain-default-content-heading-bg"]),l(),u("data",e.data["alain-default-content-heading-border"]),l(),u("data",e.data["alain-default-content-padding"]),l(2),u("data",e.data["form-state-visual-feedback-enabled"]),l(),u("data",e.data["preserve-white-spaces-enabled"]),l(),u("data",e.data["nz-table-img-radius"]),l(),u("data",e.data["nz-table-img-margin-right"]),l(),u("data",e.data["nz-table-img-max-width"]),l(),u("data",e.data["nz-table-img-max-height"]),l(5),ue("ngModel",e.layout.fixed),l(3),ue("ngModel",e.layout.colorWeak)}}var tc=(()=>{class o{i={};set data(e){this.i=e,e.type==="px"&&(this.pxVal=+e.value.replace("px",""))}pxVal=0;pxChange(e){this.i.value=`${e}px`}format=e=>`${e} px`;static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["setting-drawer-item"]],hostVars:2,hostBindings:function(t,n){t&2&&ne("setting-drawer__body-item",!0)},inputs:{data:"data"},decls:9,vars:3,consts:[[1,"pl-sm","text-grey"],["nz-input","","type","color",2,"width","88px",3,"ngModel","ngModelOptions"],["nz-input","",2,"width","88px",3,"ngModel","ngModelOptions"],[3,"ngModel","nzMin","nzMax","nzStep","nzFormatter"],["nzSize","small",3,"ngModel","ngModelOptions"],["nzDrawerContent",""],["nz-input","","type","color",2,"width","88px",3,"ngModelChange","ngModel","ngModelOptions"],["nz-input","",2,"width","88px",3,"ngModelChange","ngModel","ngModelOptions"],[3,"ngModelChange","ngModel","nzMin","nzMax","nzStep","nzFormatter"],["nzSize","small",3,"ngModelChange","ngModel","ngModelOptions"]],template:function(t,n){if(t&1&&(d(0,"span"),S(1),d(2,"span",0),S(3),p()(),y(4,Tp,1,3,"input",1)(5,xp,1,3,"input",2)(6,wp,1,5,"nz-input-number",3)(7,zp,1,3,"nz-switch",4)(8,Mp,1,0,null,5)),t&2){let r;l(),H(" ",n.i.label," "),l(2),F(n.i.tip),l(),C((r=n.i.type)==="color"?4:r==="input"?5:r==="px"?6:r==="switch"?7:8)}},dependencies:[Vi,He,ze,ut,Ue,ys,_i,Ri,Oi],encapsulation:2})}return o})(),sr="alain-default-vars",Pp=[{key:"dust",color:"#F5222D"},{key:"volcano",color:"#FA541C"},{key:"sunset",color:"#FAAD14"},{key:"cyan",color:"#13C2C2"},{key:"green",color:"#52C41A"},{key:"daybreak",color:"#1890ff"},{key:"geekblue",color:"#2F54EB"},{key:"purple",color:"#722ED1"},{key:"black",color:"#001529"}],oo={"primary-color":{label:"\u4E3B\u989C\u8272",type:"color",default:"#1890ff"},"alain-default-header-hg":{label:"\u9AD8",type:"px",default:"64px",max:300,min:24},"alain-default-header-bg":{label:"\u80CC\u666F\u8272",type:"color",default:"@primary-color",tip:"\u9ED8\u8BA4\u540C\u4E3B\u8272\u7CFB"},"alain-default-header-padding":{label:"\u9876\u90E8\u5DE6\u53F3\u5185\u8FB9\u8DDD",type:"px",default:"16px"},"alain-default-aside-wd":{label:"\u5BBD\u5EA6",type:"px",default:"200px"},"alain-default-aside-bg":{label:"\u80CC\u666F",type:"color",default:"#ffffff"},"alain-default-aside-collapsed-wd":{label:"\u6536\u7F29\u5BBD\u5EA6",type:"px",default:"64px"},"alain-default-aside-nav-padding-top-bottom":{label:"\u9879\u4E0A\u4E0B\u5185\u8FB9\u8DDD",type:"px",default:"8px",step:8},"alain-default-aside-nav-fs":{label:"\u83DC\u5355\u5B57\u53F7",type:"px",default:"14px",min:14,max:30},"alain-default-aside-collapsed-nav-fs":{label:"\u6536\u7F29\u83DC\u5355\u5B57\u53F7",type:"px",default:"24px",min:24,max:32},"alain-default-aside-nav-item-height":{label:"\u83DC\u5355\u9879\u9AD8\u5EA6",type:"px",default:"38px",min:24,max:64},"alain-default-aside-nav-text-color":{label:"\u83DC\u5355\u6587\u672C\u989C\u8272",type:"color",default:"rgba(0, 0, 0, 0.65)",rgba:!0},"alain-default-aside-nav-text-hover-color":{label:"\u83DC\u5355\u6587\u672C\u60AC\u505C\u989C\u8272",type:"color",default:"@primary-color",tip:"\u9ED8\u8BA4\u540C\u4E3B\u8272\u7CFB"},"alain-default-aside-nav-group-text-color":{label:"\u83DC\u5355\u5206\u7EC4\u6587\u672C\u989C\u8272",type:"color",default:"rgba(0, 0, 0, 0.43)",rgba:!0},"alain-default-aside-nav-selected-text-color":{label:"\u83DC\u5355\u6FC0\u6D3B\u65F6\u6587\u672C\u989C\u8272",type:"color",default:"@primary-color",tip:"\u9ED8\u8BA4\u540C\u4E3B\u8272\u7CFB"},"alain-default-aside-nav-selected-bg":{label:"\u83DC\u5355\u6FC0\u6D3B\u65F6\u80CC\u666F\u989C\u8272",type:"color",default:"#fcfcfc"},"alain-default-content-bg":{label:"\u80CC\u666F\u8272",type:"color",default:"#f5f7fa"},"alain-default-content-heading-bg":{label:"\u6807\u9898\u80CC\u666F\u8272",type:"color",default:"#fafbfc"},"alain-default-content-heading-border":{label:"\u6807\u9898\u5E95\u90E8\u8FB9\u6846\u8272",type:"color",default:"#efe3e5"},"alain-default-content-padding":{label:"\u5185\u8FB9\u8DDD",type:"px",default:"24px",min:0,max:128,step:8},"form-state-visual-feedback-enabled":{label:"\u5F00\u542F\u8868\u5355\u5143\u7D20\u7684\u89C6\u89C9\u53CD\u9988",type:"switch",default:!0},"preserve-white-spaces-enabled":{label:"\u5F00\u542F preserveWhitespaces",type:"switch",default:!0},"nz-table-img-radius":{label:"\u8868\u683C\u4E2D\uFF1A\u56FE\u7247\u5706\u89D2",type:"px",default:"4px",min:0,max:128},"nz-table-img-margin-right":{label:"\u8868\u683C\u4E2D\uFF1A\u56FE\u7247\u53F3\u5916\u8FB9\u8DDD",type:"px",default:"4px",min:0,max:128},"nz-table-img-max-width":{label:"\u8868\u683C\u4E2D\uFF1A\u56FE\u7247\u6700\u5927\u5BBD\u5EA6",type:"px",default:"32px",min:8,max:128},"nz-table-img-max-height":{label:"\u8868\u683C\u4E2D\uFF1A\u56FE\u7247\u6700\u5927\u9AD8\u5EA6",type:"px",default:"32px",min:8,max:128}},Ap=(()=>{class o{cdr=B(Tt);msg=B(be);settingSrv=B(pe);lazy=B(Ca);ngZone=B(St);doc=B(we);autoApplyColor=!0;compilingText="Compiling...";devTips="When the color can't be switched, you need to run it once: npm run color-less";lessJs="https://cdn.jsdelivr.net/npm/less";loadedLess=!1;dir=B(it).valueSignal;isDev=sn();collapse=!1;get layout(){return this.settingSrv.layout}data={};color;colors=Pp;constructor(){this.color=this.cachedData["@primary-color"]??this.DEFAULT_PRIMARY,this.resetData(this.cachedData,!1)}get cachedData(){return this.settingSrv.layout[sr]??{}}get DEFAULT_PRIMARY(){return oo["primary-color"].default}ngOnInit(){this.autoApplyColor&&this.color!==this.DEFAULT_PRIMARY&&(this.changeColor(this.color),this.runLess())}loadLess(){return Rr(this,null,function*(){return this.loadedLess?Promise.resolve():this.lazy.loadStyle("./assets/color.less",{rel:"stylesheet/less"}).then(()=>{let e=this.doc.createElement("script");e.innerHTML=` + window.less = { + async: true, + env: 'production', + javascriptEnabled: true + }; + `,this.doc.body.appendChild(e)}).then(()=>this.lazy.loadScript(this.lessJs)).then(()=>{this.loadedLess=!0})})}genVars(){let{data:e,color:t,validKeys:n}=this,r={"@primary-color":t};return n.filter(a=>a!=="primary-color").forEach(a=>r[`@${a}`]=e[a].value),this.setLayout(sr,r),r}runLess(){let{ngZone:e,msg:t,cdr:n}=this,r=t.loading(this.compilingText,{nzDuration:0}).messageId;setTimeout(()=>{this.loadLess().then(()=>{window.less.modifyVars(this.genVars()).then(()=>{t.success("\u6210\u529F"),t.remove(r),e.run(()=>n.detectChanges())})})},200)}toggle(){this.collapse=!this.collapse}changeColor(e){this.color=e,Object.keys(oo).filter(t=>oo[t].default==="@primary-color").forEach(t=>delete this.cachedData[`@${t}`]),this.resetData(this.cachedData,!1)}setLayout(e,t){this.settingSrv.setLayout(e,t)}resetData(e,t=!0){e=e??{};let n=ya(oo);Object.keys(n).forEach(r=>{let a=e[`@${r}`]??n[r].default??"";n[r].value=a==="@primary-color"?this.color:a}),this.data=n,t&&(this.cdr.detectChanges(),this.runLess())}get validKeys(){return Object.keys(this.data).filter(e=>this.data[e].value!==this.data[e].default)}apply(){this.runLess()}reset(){this.color=this.DEFAULT_PRIMARY,this.settingSrv.setLayout(sr,{}),this.resetData({})}copyVar(){let e=this.genVars(),t=Object.keys(e).map(n=>`${n}: ${e[n]};`).join(` +`);Ta(t),this.msg.success("Copy success")}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["setting-drawer"]],hostVars:4,hostBindings:function(t,n){t&2&&ne("setting-drawer",!0)("setting-drawer-rtl",n.dir()==="rtl")},inputs:{autoApplyColor:[2,"autoApplyColor","autoApplyColor",xt],compilingText:"compilingText",devTips:"devTips",lessJs:"lessJs"},decls:4,vars:7,consts:[[3,"nzOnClose","nzVisible","nzPlacement","nzWidth"],["class","setting-drawer__content",4,"nzDrawerContent"],["nz-tooltip","",1,"setting-drawer__handle",3,"click","nzTooltipTitle"],[1,"setting-drawer__handle-icon",3,"nzType"],[1,"setting-drawer__content"],[1,"setting-drawer__body","setting-drawer__theme"],[1,"setting-drawer__title"],["nz-tooltip","",1,"setting-drawer__theme-tag",3,"style","nzTooltipTitle"],[1,"setting-drawer__body"],["nzTitle","\u9876\u90E8"],[3,"data"],["nzTitle","\u4FA7\u8FB9\u680F"],["nzTitle","\u5185\u5BB9"],["nzTitle","\u5176\u5B83"],[1,"setting-drawer__body-item"],["nzSize","small",3,"ngModelChange","ngModel"],["type","button","nz-button","","nzType","primary",3,"click"],["type","button","nz-button","",3,"click"],["nzType","warning","nzMessage","\u914D\u7F6E\u680F\u53EA\u5728\u5F00\u53D1\u73AF\u5883\u7528\u4E8E\u9884\u89C8\uFF0C\u751F\u4EA7\u73AF\u5883\u4E0D\u4F1A\u5C55\u73B0\uFF0C\u8BF7\u62F7\u8D1D\u540E\u624B\u52A8\u4FEE\u6539\u53C2\u6570\u914D\u7F6E\u6587\u4EF6 src/styles/theme.less",1,"mt-md"],["nz-tooltip","",1,"setting-drawer__theme-tag",3,"click","nzTooltipTitle"],["nzType","check"]],template:function(t,n){t&1&&(d(0,"nz-drawer",0),b("nzOnClose",function(){return n.toggle()}),O(1,kp,49,19,"div",1),p(),d(2,"div",2),b("click",function(){return n.toggle()}),g(3,"nz-icon",3),p()),t&2&&(u("nzVisible",n.collapse)("nzPlacement",n.dir()==="rtl"?"left":"right")("nzWidth",500),l(2),ne("setting-drawer__handle-opened",n.collapse),u("nzTooltipTitle",n.isDev?n.devTips:null),l(),u("nzType",n.collapse?"close":"setting"))},dependencies:[Vi,ze,ut,Ri,mn,Oi,je,re,Pn,kn,bn,Sn,vn,tc,Cs,_i,nt,Pt],encapsulation:2,changeDetection:0})}return Ii([Bi()],o.prototype,"loadLess",null),Ii([Bi()],o.prototype,"runLess",null),o})(),Lp=[tc,Ap],ic=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[Lp]})}return o})();function Fp(o,i){if(o&1){let e=N();d(0,"li",8),b("click",function(){let n=T(e).$implicit,r=f();return x(r.onThemeChange(n.key))}),S(1),p()}if(o&2){let e=i.$implicit;l(),F(e.text)}}var Op=new $r("ALAIN_THEME_BTN_KEYS"),cr=(()=>{class o{doc=B(we);platform=B(dn);renderer=B(bt);configSrv=B(Sa);theme="default";isDev=sn();types=[{key:"default",text:"Default Theme"},{key:"dark",text:"Dark Theme"},{key:"compact",text:"Compact Theme"}];devTips="When the dark.css file can't be found, you need to run it once: npm run theme";deployUrl="";themeChange=new Yt;dir=B(it).valueSignal;key=B(Op,{optional:!0})??"site-theme";ngOnInit(){this.initTheme()}initTheme(){this.platform.isBrowser&&(this.theme=localStorage.getItem(this.key)??"default",this.updateChartTheme(),this.onThemeChange(this.theme))}updateChartTheme(){this.configSrv.set("chart",{theme:this.theme==="dark"?"dark":""})}onThemeChange(e){if(!this.platform.isBrowser)return;this.theme=e,this.themeChange.emit(e),this.renderer.setAttribute(this.doc.body,"data-theme",e);let t=this.doc.getElementById(this.key);if(t&&t.remove(),localStorage.removeItem(this.key),e!=="default"){let n=this.doc.createElement("link");n.type="text/css",n.rel="stylesheet",n.id=this.key,n.href=`${this.deployUrl}assets/style.${e}.css`,localStorage.setItem(this.key,e),this.doc.body.append(n)}this.updateChartTheme()}ngOnDestroy(){let e=this.doc.getElementById(this.key);e!=null&&this.doc.body.removeChild(e)}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["theme-btn"]],hostVars:4,hostBindings:function(t,n){t&2&&ne("theme-btn",!0)("theme-btn-rtl",n.dir()==="rtl")},inputs:{types:"types",devTips:"devTips",deployUrl:"deployUrl"},outputs:{themeChange:"themeChange"},decls:10,vars:2,consts:[["menu","nzDropdownMenu"],["nz-dropdown","","nzPlacement","topCenter",1,"ant-avatar","ant-avatar-circle","ant-avatar-icon",3,"nzDropdownMenu"],["nz-tooltip","","role","img","width","21","height","21","viewBox","0 0 21 21","fill","currentColor",1,"anticon",3,"nzTooltipTitle"],["fill-rule","evenodd"],["fill-rule","nonzero"],["d","M7.02 3.635l12.518 12.518a1.863 1.863 0 010 2.635l-1.317 1.318a1.863 1.863 0 01-2.635 0L3.068 7.588A2.795 2.795 0 117.02 3.635zm2.09 14.428a.932.932 0 110 1.864.932.932 0 010-1.864zm-.043-9.747L7.75 9.635l9.154 9.153 1.318-1.317-9.154-9.155zM3.52 12.473c.514 0 .931.417.931.931v.932h.932a.932.932 0 110 1.864h-.932v.931a.932.932 0 01-1.863 0l-.001-.931h-.93a.932.932 0 010-1.864h.93v-.932c0-.514.418-.931.933-.931zm15.374-3.727a1.398 1.398 0 110 2.795 1.398 1.398 0 010-2.795zM4.385 4.953a.932.932 0 000 1.317l2.046 2.047L7.75 7 5.703 4.953a.932.932 0 00-1.318 0zM14.701.36a.932.932 0 01.931.932v.931h.932a.932.932 0 010 1.864h-.933l.001.932a.932.932 0 11-1.863 0l-.001-.932h-.93a.932.932 0 110-1.864h.93v-.931a.932.932 0 01.933-.932z"],["nz-menu","","nzSelectable",""],["nz-menu-item",""],["nz-menu-item","",3,"click"]],template:function(t,n){if(t&1&&(d(0,"div",1),Wr(),d(1,"svg",2)(2,"g",3)(3,"g",4),g(4,"path",5),p()()(),qr(),d(5,"nz-dropdown-menu",null,0)(7,"ul",6),le(8,Fp,2,1,"li",7,Je),p()()()),t&2){let r=R(6);u("nzDropdownMenu",n.types.length>0?r:null),l(),u("nzTooltipTitle",n.isDev?n.devTips:null),l(7),ce(n.types)}},dependencies:[si,li,Cn,yn,je],encapsulation:2,changeDetection:0})}return o})(),Rp=[cr],nc=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[tt,Dt,Dn,Rp]})}return o})();function Hp(o,i){if(o&1&&g(0,"img",6),o&2){let e=f();u("src",e.logoPath,me)}}function jp(o,i){if(o&1&&(d(0,"span"),S(1),p()),o&2){let e=f();l(),F(e.desc)}}function Up(o,i){if(o&1&&g(0,"p",11),o&2){let e=f(2);u("innerHTML",e.copyrightTxt,se)}}function $p(o,i){if(o&1&&(g(0,"i",12),S(1),d(2,"a",13),S(3,"Erupt Engine"),p(),S(4,"\xA0 All rights reserved. ")),o&2){let e=f(2);l(),H(" 2018 - ",e.nowYear," ")}}function Wp(o,i){if(o&1&&(d(0,"global-footer"),y(1,Up,1,1,"p",11),y(2,$p,5,1),p()),o&2){let e=f();l(),C(e.copyrightTxt?1:-1),l(),C(e.copyrightTxt?-1:2)}}var dr=(()=>{class o{modalSrv;nowYear=new Date().getFullYear();logoPath=V.loginLogoPath;desc=V.desc;title=V.title;copyright=V.copyright;copyrightTxt=V.copyrightTxt;tenantDomainInfo=Nt.get();constructor(e){this.modalSrv=e,V.copyrightTxt&&(typeof V.copyrightTxt=="function"?this.copyrightTxt=V.copyrightTxt():this.copyrightTxt=V.copyrightTxt),this.tenantDomainInfo&&this.tenantDomainInfo.logo&&(this.logoPath=X.previewAttachment(this.tenantDomainInfo.logo))}ngAfterViewInit(){this.modalSrv.closeAll()}static \u0275fac=function(t){return new(t||o)(h(de))};static \u0275cmp=k({type:o,selectors:[["layout-passport"]],standalone:!1,decls:15,vars:4,consts:[[2,"position","absolute","right","5%","top","5%","z-index","999"],[2,"font-size","1.3em","color","#000"],[1,"container"],[1,"wrap"],[1,"top"],[1,"head"],["alt","logo",1,"logo",3,"src"],[1,"title"],[1,"desc"],[2,"display","flex","justify-content","center"],[1,"pass-form"],[3,"innerHTML"],["nz-icon","","nzType","copyright","nzTheme","outline"],["href","https://www.erupt.xyz","target","_blank"]],template:function(t,n){t&1&&(d(0,"div",0),g(1,"i18n-choice",1),p(),d(2,"div",2)(3,"div",3)(4,"div",4)(5,"div",5),y(6,Hp,1,1,"img",6),d(7,"span",7),S(8),p()(),d(9,"div",8),y(10,jp,2,1,"span"),p()(),d(11,"div",9)(12,"div",10),g(13,"router-outlet"),p()(),y(14,Wp,3,2,"global-footer"),p()()),t&2&&(l(6),C(n.logoPath?6:-1),l(2),F(n.title),l(2),C(n.desc?10:-1),l(4),C(n.copyright?14:-1))},dependencies:[zt,Wl,re,ae,An],styles:["[_nghost-%COMP%] .container{display:flex;flex-direction:column;min-height:100%;background:#fff}[_nghost-%COMP%] .wrap{padding:32px 0;flex:1;z-index:9}[_nghost-%COMP%] .ant-form-item{margin-bottom:24px}[_nghost-%COMP%] .pass-form{width:360px;margin:8px;padding:32px 26px;border-top:5px solid #1890ff;border-bottom:5px solid #1890ff;box-shadow:0 2px 20px #0000001a;background:#fff;border-radius:3px;overflow:hidden}@keyframes _ngcontent-%COMP%_transPass{0%{height:0}to{height:200px}}@media (min-width: 768px){[_nghost-%COMP%] .container{background-image:url(/assets/image/login-bg.svg);background-repeat:no-repeat;background-position:center 110px;background-size:100%}[_nghost-%COMP%] .wrap{padding:100px 0 24px}}[_nghost-%COMP%] .top{text-align:center}[_nghost-%COMP%] .header{height:44px;line-height:44px}[_nghost-%COMP%] .header a{text-decoration:none}[_nghost-%COMP%] .logo{height:44px;margin-right:16px}[_nghost-%COMP%] .title{font-size:33px;color:#000000d9;font-family:Courier New,Menlo,Monaco,Consolas,monospace;font-weight:600;position:relative;vertical-align:middle}[_nghost-%COMP%] .desc{font-size:14px;color:#00000073;margin-top:12px;margin-bottom:40px}"]})}return o})();var oc=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],_t=(()=>{if(typeof document>"u")return!1;let o=oc[0],i={};for(let e of oc)if(e?.[1]in document){for(let[n,r]of e.entries())i[o[n]]=r;return i}return!1})(),rc={change:_t.fullscreenchange,error:_t.fullscreenerror},Le={request(o=document.documentElement,i){return new Promise((e,t)=>{let n=()=>{Le.off("change",n),e()};Le.on("change",n);let r=o[_t.requestFullscreen](i);r instanceof Promise&&r.then(n).catch(t)})},exit(){return new Promise((o,i)=>{if(!Le.isFullscreen){o();return}let e=()=>{Le.off("change",e),o()};Le.on("change",e);let t=document[_t.exitFullscreen]();t instanceof Promise&&t.then(e).catch(i)})},toggle(o,i){return Le.isFullscreen?Le.exit():Le.request(o,i)},onchange(o){Le.on("change",o)},onerror(o){Le.on("error",o)},on(o,i){let e=rc[o];e&&document.addEventListener(e,i,!1)},off(o,i){let e=rc[o];e&&document.removeEventListener(e,i,!1)},raw:_t};Object.defineProperties(Le,{isFullscreen:{get:()=>!!document[_t.fullscreenElement]},element:{enumerable:!0,get:()=>document[_t.fullscreenElement]??void 0},isEnabled:{enumerable:!0,get:()=>!!document[_t.fullscreenEnabled]}});_t||(Le={isEnabled:!1});var pr=Le;var ac=o=>({color:o});function qp(o,i){if(o&1&&g(0,"i"),o&2){let e=f().$implicit;Pe(e.icon)}}function Kp(o,i){o&1&&g(0,"i",9)}function Gp(o,i){if(o&1){let e=N();d(0,"nz-auto-option",7),b("click",function(){let n=T(e).$implicit,r=f(2);return x(r.toMenu(n))}),y(1,qp,1,2,"i",8),y(2,Kp,1,0,"i",9),S(3),p()}if(o&2){let e=i.$implicit;u("nzValue",e.name)("nzLabel",e.name)("nzDisabled",!e.value),l(),C(e.icon?1:-1),l(),C(e.icon?-1:2),l(),H(" \xA0 ",e.name," ")}}function Qp(o,i){if(o&1&&(g(0,"i",10),S(1,"\xA0\xA0 ")),o&2){let e=f(2);u("ngStyle",_e(1,ac,e.focus?"#000":"#999"))}}function Zp(o,i){if(o&1&&g(0,"i",11),o&2){let e=f(3);u("ngStyle",_e(1,ac,e.focus?"#000":"#fff"))}}function Yp(o,i){if(o&1&&y(0,Zp,1,3,"i",11),o&2){let e=f(2);C(e.text?0:-1)}}function Xp(o,i){if(o&1){let e=N();d(0,"nz-input-group",3)(1,"input",4),w(2,"translate"),he("ngModelChange",function(n){T(e);let r=f();return fe(r.text,n)||(r.text=n),x(n)}),b("focus",function(){T(e);let n=f();return x(n.qFocus())})("blur",function(){T(e);let n=f();return x(n.qBlur())})("input",function(n){T(e);let r=f();return x(r.onInput(n))})("keydown.enter",function(n){T(e);let r=f();return x(r.search(n))}),p(),d(3,"nz-autocomplete",5,0),le(5,Gp,4,6,"nz-auto-option",6,Ke),p()(),O(7,Qp,2,3,"ng-template",null,1,j)(9,Yp,1,1,"ng-template",null,2,j)}if(o&2){let e=R(4),t=R(8),n=R(10),r=f();u("nzSuffix",n)("nzPrefix",t),l(),ue("ngModel",r.text),u("placeholder",z(2,6,"global.search.hint"))("nzAutocomplete",e),l(2),u("nzBackfill",!1),l(2),ce(r.options)}}var mr=(()=>{class o{el;router;msg;menu;text;qIpt;focus=!1;searchToggled=!1;options=[];set toggleChange(e){typeof e>"u"||(this.searchToggled=!0,this.focus=!0,setTimeout(()=>this.qIpt.focus(),300))}constructor(e,t,n){this.el=e,this.router=t,this.msg=n}ngAfterViewInit(){this.qIpt=this.el.nativeElement.querySelector(".ant-input")}onInput(e){let t=e.target.value;t&&(this.options=this.menu.filter(n=>n.type==At.button||n.type==At.api?!1:n.name.toLocaleLowerCase().indexOf(t.toLowerCase())!==-1)||[])}qFocus(){this.focus=!0}qBlur(){this.focus=!1,this.searchToggled=!1}toMenu(e){e.value&&(this.router.navigateByUrl(Hi(e.type,e.value)),this.text=null)}search(e){if(this.text){let t=this.menu.filter(n=>n.name.toLocaleLowerCase().indexOf(this.text.toLocaleLowerCase())!==-1)||[];t[0]&&this.toMenu(t[0])}}static \u0275fac=function(t){return new(t||o)(h(vt),h(oe),h(be))};static \u0275cmp=k({type:o,selectors:[["header-search"]],hostVars:4,hostBindings:function(t,n){t&2&&ne("alain-default__search-focus",n.focus)("alain-default__search-toggled",n.searchToggled)},inputs:{menu:"menu",toggleChange:"toggleChange"},standalone:!1,decls:1,vars:1,consts:[["auto",""],["prefixTemplateInfo",""],["suffixTemplateInfo",""],[3,"nzSuffix","nzPrefix"],["nz-input","","autofocus","",3,"ngModelChange","focus","blur","input","keydown.enter","ngModel","placeholder","nzAutocomplete"],[3,"nzBackfill"],[3,"nzValue","nzLabel","nzDisabled"],[3,"click","nzValue","nzLabel","nzDisabled"],[3,"class"],["nz-icon","","nzType","unordered-list","nzTheme","outline"],["nz-icon","","nzType","search","nzTheme","outline",2,"margin-top","2px","transition","all 500ms",3,"ngStyle"],["nz-icon","","nzType","arrow-right","nzTheme","outline",2,"cursor","pointer","transition",".5s all",3,"ngStyle"]],template:function(t,n){t&1&&y(0,Xp,11,8),t&2&&C(n.menu?0:-1)},dependencies:[la,He,ze,ut,Ue,ot,In,Ts,Ss,bs,re,ae,Te],encapsulation:2})}return o})();var Zi=(function(o){return o.SENT="SENT",o.UNREAD="UNREAD",o.READ="READ",o})(Zi||{});function Jp(o,i){if(o&1){let e=N();d(0,"span",7),b("click",function(){T(e);let n=f(2);return x(n.openUrlDrawer(n.noticeMessageDetail.noticeLog.url,n.noticeMessageDetail.noticeLog.title||""))}),p()}}function em(o,i){if(o&1&&(d(0,"div",1),g(1,"p",2),w(2,"safeHtml"),p(),d(3,"div",3)(4,"nz-tag",4),S(5),p(),y(6,Jp,1,0,"span",5),d(7,"span",6),S(8),p()()),o&2){let e=f();l(),u("innerHTML",z(2,5,e.noticeMessageDetail.noticeLog.content),se),l(3),u("nzColor","volcano"),l(),H(" ",e.noticeMessageDetail.noticeLog.noticeScene==null?null:e.noticeMessageDetail.noticeLog.noticeScene.name),l(),C(e.noticeMessageDetail.noticeLog!=null&&e.noticeMessageDetail.noticeLog.url?6:-1),l(2),F(e.noticeMessageDetail.noticeLog.createTime)}}var lc=(()=>{class o{dataService;drawerService;messageId;noticeMessageDetail;constructor(e,t){this.dataService=e,this.drawerService=t}ngOnInit(){this.dataService.noticeMessageDetail(this.messageId).subscribe({next:e=>{this.noticeMessageDetail=e.data},error:()=>{}})}openUrlDrawer(e,t){this.drawerService.create({nzTitle:null,nzClosable:!1,nzContent:Si,nzContentParams:{url:e,height:"100%",width:"100%"},nzWidth:"45%",nzBodyStyle:{padding:0},nzMaskClosable:!0})}static \u0275fac=function(t){return new(t||o)(h(X),h(Mt))};static \u0275cmp=k({type:o,selectors:[["app-notice-detail"]],inputs:{messageId:"messageId"},standalone:!1,decls:2,vars:2,consts:[[3,"nzSpinning"],[2,"padding","12px"],[1,"message-content",3,"innerHTML"],[2,"padding","12px","border","1px solid #e8e8e8"],[3,"nzColor"],["nz-icon","","nzType","link","nzTheme","outline","nz-tooltip","",2,"margin-left","8px","cursor","pointer","color","#1890ff"],[2,"float","right"],["nz-icon","","nzType","link","nzTheme","outline","nz-tooltip","",2,"margin-left","8px","cursor","pointer","color","#1890ff",3,"click"]],template:function(t,n){t&1&&(d(0,"nz-spin",0),y(1,em,9,7),p()),t&2&&(u("nzSpinning",n.noticeMessageDetail===null),l(),C(n.noticeMessageDetail?1:-1))},dependencies:[It,re,ae,je,Nn,rt],styles:[".message-content[_ngcontent-%COMP%]{height:460px;overflow:auto;white-space:pre-line;margin-bottom:0}"]})}return o})();var lo=(()=>{class o{announcement;static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["app-announcement-detail"]],inputs:{announcement:"announcement"},standalone:!1,decls:6,vars:4,consts:[[2,"padding","12px"],[1,"message-content",3,"innerHTML"],[2,"padding","12px","border","1px solid #e8e8e8","text-align","right"]],template:function(t,n){t&1&&(d(0,"div",0),g(1,"p",1),w(2,"safeHtml"),p(),d(3,"div",2)(4,"span"),S(5),p()()),t&2&&(l(),u("innerHTML",z(2,2,n.announcement.content),se),l(4),F(n.announcement.createTime))},dependencies:[rt],styles:[".message-content[_ngcontent-%COMP%]{height:460px;overflow:auto;white-space:pre-line;margin-bottom:0}"]})}return o})();function tm(o,i){if(o&1){let e=N();d(0,"span",19),b("click",function(){T(e);let n=f();return x(n.onSearch(n.searchKeyword))}),p()}}function im(o,i){if(o&1){let e=N();d(0,"button",20),b("click",function(){T(e);let n=f();return x(n.markAllAsRead())}),g(1,"span",21),S(2),w(3,"translate"),p()}o&2&&(l(2),H(" ",z(3,1,"notice.readAll")," "))}function nm(o,i){o&1&&g(0,"nz-badge",27)}function om(o,i){if(o&1){let e=N();d(0,"span",31),b("click",function(n){T(e);let r=f().$implicit;return f().openUrlDrawer(r.noticeLog.url,r.noticeLog.title||""),x(n.stopPropagation())}),p()}}function rm(o,i){if(o&1&&(g(0,"p",30),w(1,"safeHtml")),o&2){let e=f().$implicit,t=f();u("innerHTML",z(1,1,t.selectedChannelIndex===0?e.noticeLog==null?null:e.noticeLog.content:e.content),se)}}function am(o,i){if(o&1){let e=N();d(0,"nz-list-item",22),b("click",function(){let n=T(e).$implicit,r=f();return x(r.selectedChannelIndex===0?r.viewMessageDetail(n):r.viewAnnouncementDetail(n))}),d(1,"div",23)(2,"div",24)(3,"h3",25)(4,"div",26),y(5,nm,1,0,"nz-badge",27),d(6,"span"),S(7),p(),y(8,om,1,0,"span",28),d(9,"span",29),S(10),w(11,"date"),p()()()(),y(12,rm,2,3,"p",30),p()()}if(o&2){let e=i.$implicit,t=f();l(5),C(t.selectedChannelIndex===0&&e.status==t.NoticeStatus.UNREAD?5:-1),l(2),F(t.selectedChannelIndex===0?e.noticeLog==null?null:e.noticeLog.title:e.title),l(),C(t.selectedChannelIndex===0&&(e.noticeLog!=null&&e.noticeLog.url)?8:-1),l(2),H(" ",na(11,5,t.selectedChannelIndex===0?e.noticeLog==null?null:e.noticeLog.createTime:e.createTime,"yyyy-MM-dd HH:mm:ss")," "),l(2),C((t.selectedChannelIndex===0?e.noticeLog!=null&&e.noticeLog.content:e.content)?12:-1)}}function sm(o,i){if(o&1){let e=N();d(0,"div",18)(1,"nz-pagination",32),b("nzPageIndexChange",function(n){T(e);let r=f();return x(r.onPageIndexChange(n))}),p()()}if(o&2){let e=f();l(),u("nzPageIndex",e.pageIndex)("nzPageSize",e.pageSize)("nzTotal",e.total)("nzSize","small")("nzShowSizeChanger",!1)}}var dc=(()=>{class o{dataService;drawerRef;i18nService;modal;drawerService;destroy$=new Zt;channels=[];channelOptions=[];selectedChannelIndex=0;messages=[];loadingMessages=!1;pageIndex=1;pageSize=10;total=0;searchKeyword="";constructor(e,t,n,r,a){this.dataService=e,this.drawerRef=t,this.i18nService=n,this.modal=r,this.drawerService=a}ngOnInit(){this.channelOptions=[{label:this.i18nService.fanyi("notice"),value:0},{label:this.i18nService.fanyi("notice.announcement"),value:1}],this.selectedChannelIndex=0,this.loadMessages()}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete()}onChannelChange(e){this.selectedChannelIndex=e,this.pageIndex=1,this.searchKeyword="",this.loadMessages()}onSearch(e){this.searchKeyword=e,this.pageIndex=1,this.loadMessages()}loadMessages(){this.loadingMessages=!0,this.selectedChannelIndex===0?this.dataService.noticeMessages(this.pageIndex,this.pageSize,this.searchKeyword||null).pipe(qe(this.destroy$)).subscribe({next:e=>{this.messages=e.data.list,this.total=e.data.total,this.loadingMessages=!1},error:()=>{this.messages=[],this.total=0,this.loadingMessages=!1}}):this.selectedChannelIndex===1&&this.dataService.announcement(this.pageIndex,this.pageSize,this.searchKeyword||null).pipe(qe(this.destroy$)).subscribe({next:e=>{this.messages=e.data.list,this.total=e.data.total,this.loadingMessages=!1},error:()=>{this.messages=[],this.total=0,this.loadingMessages=!1}})}onPageIndexChange(e){this.pageIndex=e,this.loadMessages()}viewMessageDetail(e){e.status=Zi.READ;let t=e.id||e.noticeLog?.id,n=this.modal.create({nzTitle:e.noticeLog?.title,nzBodyStyle:{padding:"0"},nzFooter:null,nzContent:lc});n.componentInstance.messageId=t}viewAnnouncementDetail(e){let t=this.modal.create({nzWrapClassName:"modal-lg",nzTitle:e.title,nzBodyStyle:{padding:"0"},nzFooter:null,nzContent:lo});t.componentInstance.announcement=e}close(){this.drawerRef.close()}openUrlDrawer(e,t){this.drawerService.create({nzTitle:null,nzClosable:!1,nzContent:Si,nzContentParams:{url:e,height:"100%",width:"100%"},nzWidth:"45%",nzBodyStyle:{padding:0},nzMaskClosable:!0})}markAllAsRead(){this.modal.confirm({nzTitle:this.i18nService.fanyi("notice.confirm.title"),nzContent:this.i18nService.fanyi("notice.confirm.readAll"),nzOnOk:()=>new Promise((e,t)=>{this.dataService.noticeReadAllCount().pipe(qe(this.destroy$)).subscribe({next:()=>{this.messages.forEach(n=>{n.status=Zi.READ}),e(!0)},error:n=>{t(n)}})})})}NoticeStatus=Zi;static \u0275fac=function(t){return new(t||o)(h(X),h(Ja),h(Se),h(de),h(Mt))};static \u0275cmp=k({type:o,selectors:[["erupt-notice"]],standalone:!1,decls:24,vars:18,consts:[["suffixIconSearch",""],[1,"notice-container"],[1,"notice-header"],[1,"header-title"],["nz-icon","","nzType","bell","nzTheme","outline"],[1,"title-text"],["nz-button","","nzType","text","nzSize","small",1,"close-btn",3,"click"],["nz-icon","","nzType","close"],[1,"notice-content"],[1,"channel-segmented"],[1,"channel-header"],[3,"ngModelChange","nzBlock","nzOptions","ngModel","nzSize"],[1,"search-box"],[3,"nzSuffix"],["type","search","nz-input","",3,"ngModelChange","keyup.enter","nzSize","ngModel","placeholder"],["nz-button","","nzType","link","nzSize","small",1,"read-all-btn"],[1,"message-list",3,"nzDataSource","nzLoading","nzSize"],[1,"message-item"],[1,"notice-pagination"],["nz-icon","","nzType","search",2,"cursor","pointer",3,"click"],["nz-button","","nzType","link","nzSize","small",1,"read-all-btn",3,"click"],["nz-icon","","nzType","check","nzTheme","outline"],[1,"message-item",3,"click"],[2,"width","100%"],[1,"message-header"],[1,"message-title"],[2,"display","flex","align-items","center"],["nzStatus","error"],["nz-icon","","nzType","link","nzTheme","outline","nz-tooltip","",2,"margin-left","8px","cursor","pointer","color","#1890ff"],[2,"font-size",".7em","margin-left","auto"],[1,"message-content",3,"innerHTML"],["nz-icon","","nzType","link","nzTheme","outline","nz-tooltip","",2,"margin-left","8px","cursor","pointer","color","#1890ff",3,"click"],[3,"nzPageIndexChange","nzPageIndex","nzPageSize","nzTotal","nzSize","nzShowSizeChanger"]],template:function(t,n){if(t&1){let r=N();d(0,"div",1)(1,"div",2)(2,"div",3),g(3,"span",4),d(4,"span",5),S(5),w(6,"translate"),p()(),d(7,"button",6),b("click",function(){return T(r),x(n.close())}),g(8,"span",7),p()(),d(9,"div",8)(10,"div",9)(11,"div",10)(12,"nz-segmented",11),he("ngModelChange",function(s){return T(r),fe(n.selectedChannelIndex,s)||(n.selectedChannelIndex=s),x(s)}),b("ngModelChange",function(s){return T(r),x(n.onChannelChange(s))}),p()()(),d(13,"div",12)(14,"nz-input-group",13)(15,"input",14),w(16,"translate"),he("ngModelChange",function(s){return T(r),fe(n.searchKeyword,s)||(n.searchKeyword=s),x(s)}),b("keyup.enter",function(){return T(r),x(n.onSearch(n.searchKeyword))}),p()(),O(17,tm,1,0,"ng-template",null,0,j),y(19,im,4,3,"button",15),p(),d(20,"nz-list",16),le(21,am,13,8,"nz-list-item",17,Ke),p(),y(23,sm,2,5,"div",18),p()()}if(t&2){let r=R(18);l(5),F(z(6,14,"notice.center")),l(7),u("nzBlock",!0)("nzOptions",n.channelOptions),ue("ngModel",n.selectedChannelIndex),u("nzSize","small"),l(2),u("nzSuffix",r),l(),u("nzSize","small"),ue("ngModel",n.searchKeyword),u("placeholder",z(16,16,"gobal.search")),l(4),C(n.selectedChannelIndex===0&&n.messages.length>0?19:-1),l(),u("nzDataSource",n.messages)("nzLoading",n.loadingMessages)("nzSize","small"),l(),ce(n.messages),l(2),C(n.total>0?23:-1)}},dependencies:[He,ze,ut,Ue,ot,In,kt,re,nt,ae,je,En,Mn,Ms,Ns,ca,rt,Te],styles:[".notice-container[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100vh;background:#fff}.notice-header[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid #f0f0f0;flex-shrink:0}.notice-header[_ngcontent-%COMP%] .header-title[_ngcontent-%COMP%]{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:500;color:#262626}.notice-header[_ngcontent-%COMP%] .header-title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{margin-left:4px}.notice-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]{padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.notice-content[_ngcontent-%COMP%]{flex:1;display:flex;flex-direction:column;overflow:hidden}.notice-content[_ngcontent-%COMP%] .message-list[_ngcontent-%COMP%]{flex:1;overflow:auto}.notice-content[_ngcontent-%COMP%] .message-list[_ngcontent-%COMP%] .message-item[_ngcontent-%COMP%]{cursor:pointer}.notice-content[_ngcontent-%COMP%] .message-list[_ngcontent-%COMP%] .message-item[_ngcontent-%COMP%] .message-content[_ngcontent-%COMP%]{max-height:80px;overflow:hidden;white-space:pre-line;margin-bottom:0}.channel-segmented[_ngcontent-%COMP%]{padding:12px 16px;border-bottom:1px solid #f0f0f0;flex-shrink:0}.channel-segmented[_ngcontent-%COMP%] .channel-header[_ngcontent-%COMP%]{display:flex;align-items:center;gap:12px}.channel-segmented[_ngcontent-%COMP%] .channel-header[_ngcontent-%COMP%] nz-segmented[_ngcontent-%COMP%]{flex:1}.search-box[_ngcontent-%COMP%]{border-bottom:1px solid #f0f0f0;padding:8px;flex-shrink:0;display:flex;align-items:center;gap:6px}.search-box[_ngcontent-%COMP%] nz-input-group[_ngcontent-%COMP%]{flex:1}.search-box[_ngcontent-%COMP%] .read-all-btn[_ngcontent-%COMP%]{flex-shrink:0;padding:4px 8px;height:auto;font-size:12px}.notice-pagination[_ngcontent-%COMP%]{padding:12px 16px;border-top:1px solid #f0f0f0;display:flex;justify-content:center;flex-shrink:0}"]})}return o})();function lm(o,i){if(o&1&&g(0,"nz-alert",5),o&2){let e=f();u("nzType","error")("nzMessage",e.error)("nzShowIcon",!0)}}function cm(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"change-pwd.validate.original_password")," ")}function dm(o,i){if(o&1&&y(0,cm,2,3),o&2){let e=f(2);C(e.pwd.errors.required?0:-1)}}function pm(o,i){if(o&1&&y(0,dm,1,1),o&2){let e=f();C(e.pwd.dirty&&e.pwd.errors?0:-1)}}function mm(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"change-pwd.validate.length-sex")," ")}function um(o,i){if(o&1&&y(0,mm,2,3),o&2){let e=f();C(e.newPwd.dirty&&e.newPwd.errors?0:-1)}}function fm(o,i){o&1&&(d(0,"div",16),S(1),w(2,"translate"),p()),o&2&&(l(),F(z(2,1,"change-pwd.validate.height")))}function hm(o,i){o&1&&(d(0,"div",17),S(1),w(2,"translate"),p()),o&2&&(l(),F(z(2,1,"change-pwd.validate.middle")))}function gm(o,i){o&1&&(d(0,"div",18),S(1),w(2,"translate"),p()),o&2&&(l(),F(z(2,1,"change-pwd.validate.low")))}function _m(o,i){if(o&1&&(d(0,"div",15),y(1,fm,3,3,"div",16)(2,hm,3,3,"div",17)(3,gm,3,3,"div",18),d(4,"div"),g(5,"nz-progress",19),p(),d(6,"p",20),S(7),w(8,"translate"),p()()),o&2){let e,t=f();l(),C((e=t.status)==="ok"?1:e==="pass"?2:3),l(3),Pe(Ge("progress-",t.status)),l(),u("nzPercent",t.progress)("nzStatus",t.passwordProgressMap[t.status])("nzStrokeWidth",6)("nzShowInfo",!1),l(2),F(z(8,9,"change-pwd.validate.text"))}}function ym(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"change-pwd.validate.confirm_password")," ")}function Cm(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"change-pwd.validate.password_not_match")," ")}function vm(o,i){if(o&1&&(y(0,ym,2,3),y(1,Cm,2,3)),o&2){let e=f(2);C(e.newPwd2.errors.required?0:-1),l(),C(e.newPwd2.errors.equar?1:-1)}}function Sm(o,i){if(o&1&&y(0,vm,2,2),o&2){let e=f();C(e.newPwd2.dirty&&e.newPwd2.errors?0:-1)}}var Yi=(()=>{class o{msg;modal;router;data;i18n;settingsService;utilsService;tokenService;form;error="";type=0;loading=!1;visible=!1;status="pool";progress=0;passwordProgressMap={ok:"success",pass:"normal",pool:"exception"};constructor(e,t,n,r,a,s,c,m,_){this.msg=t,this.modal=n,this.router=r,this.data=a,this.i18n=s,this.settingsService=c,this.utilsService=m,this.tokenService=_,this.form=e.group({pwd:[null,[ye.required]],newPwd:[null,[ye.required,ye.minLength(6),o.checkPassword.bind(this)]],newPwd2:[null,[ye.required,o.passwordEquar]]})}static checkPassword(e){if(!e)return null;let t=this;t.visible=!!e.value,e.value&&e.value.length>9?t.status="ok":e.value&&e.value.length>5?t.status="pass":t.status="pool",t.visible&&(t.progress=e.value.length*10>100?100:e.value.length*10)}static passwordEquar(e){return!e||!e.parent?null:e.value!==e.parent.get("newPwd").value?{equar:!0}:null}fanyi(e){return this.i18n.fanyi(e)}get pwd(){return this.form.controls.pwd}get newPwd(){return this.form.controls.newPwd}get newPwd2(){return this.form.controls.newPwd2}submit(){this.error=null;for(let t in this.form.controls)this.form.controls[t].markAsDirty(),this.form.controls[t].updateValueAndValidity();if(this.form.invalid)return;this.loading=!0;let e;this.utilsService.isTenantToken()?e=this.data.tenantChangePwd(this.pwd.value,this.newPwd.value,this.newPwd2.value):e=this.data.changePwd(this.pwd.value,this.newPwd.value,this.newPwd2.value),e.subscribe(t=>{if(this.loading=!1,t.status==os.SUCCESS){this.msg.success(this.i18n.fanyi("global.update.success")),this.modal.closeAll();for(let n in this.form.controls)this.form.controls[n].markAsDirty(),this.form.controls[n].updateValueAndValidity(),this.form.controls[n].setValue(null)}else this.error=t.message})}static \u0275fac=function(t){return new(t||o)(h(ui),h(be),h(de),h(oe),h(X),h(Se),h(pe),h(Ti),h(Ve))};static \u0275cmp=k({type:o,selectors:[["reset-pwd"]],standalone:!1,decls:31,vars:13,consts:[["pwdTip",""],["newPwdTip",""],["nzTemplate",""],["pwd2Tip",""],["nz-form","","role","form","autocomplete","off",3,"ngSubmit","formGroup"],[1,"mb-lg",3,"nzType","nzMessage","nzShowIcon"],["nzSize","large","nzAddOnBeforeIcon","user",1,"full-width"],["nz-input","","disabled","disabled",3,"value"],["nzSize","large","nzAddOnBeforeIcon","lock",1,"full-width"],["nz-input","","type","password","formControlName","pwd",3,"placeholder"],[3,"nzErrorTip"],["nzSize","large","nz-popover","","nzPopoverPlacement","right","nzAddOnBeforeIcon","lock",1,"full-width",3,"nzPopoverContent"],["nz-input","","type","password","formControlName","newPwd",3,"placeholder"],["nz-input","","type","password","formControlName","newPwd2",3,"placeholder"],["nz-button","","nzType","primary","nzSize","large","type","submit",1,"submit",2,"display","block","width","100%",3,"nzLoading"],[2,"padding","4px 0"],[1,"success"],[1,"warning"],[1,"error"],[3,"nzPercent","nzStatus","nzStrokeWidth","nzShowInfo"],[1,"mt-sm"]],template:function(t,n){if(t&1){let r=N();d(0,"form",4),b("ngSubmit",function(){return T(r),x(n.submit())}),y(1,lm,1,3,"nz-alert",5),d(2,"nz-form-item")(3,"nz-form-control")(4,"nz-input-group",6),g(5,"input",7),p()()(),d(6,"nz-form-item")(7,"nz-form-control")(8,"nz-input-group",8),g(9,"input",9),p(),O(10,pm,1,1,"ng-template",null,0,j),p()(),d(12,"nz-form-item")(13,"nz-form-control",10)(14,"nz-input-group",11),g(15,"input",12),p(),O(16,um,1,1,"ng-template",null,1,j)(18,_m,9,11,"ng-template",null,2,j),p()(),d(20,"nz-form-item")(21,"nz-form-control",10)(22,"nz-input-group",8),g(23,"input",13),p(),O(24,Sm,1,1,"ng-template",null,3,j),p()(),d(26,"nz-form-item")(27,"button",14)(28,"span"),S(29),w(30,"translate"),p()()()()}if(t&2){let r=R(17),a=R(19),s=R(25);u("formGroup",n.form),l(),C(n.error?1:-1),l(4),u("value",n.settingsService.user.name),l(4),u("placeholder",n.fanyi("change-pwd.original_password")),l(4),u("nzErrorTip",r),l(),u("nzPopoverContent",a),l(),u("placeholder",n.fanyi("change-pwd.new_password")),l(6),u("nzErrorTip",s),l(2),u("placeholder",n.fanyi("change-pwd.confirm_password")),l(4),u("nzLoading",n.loading),l(2),F(z(30,11,"global.update"))}},dependencies:[di,He,ze,ci,pi,mi,nt,ae,ri,hi,fi,As,Pt,Ue,ot,Ci,yi,vi,Ls,Te],encapsulation:2})}return o})();function Tm(o,i){if(o&1&&(d(0,"div",5),S(1),p()),o&2){let e=f();l(),H(" ",e.settings.user.tenantName," ")}}function xm(o,i){if(o&1&&g(0,"i",9),o&2){let e=f().$implicit;u("ngClass",e.icon)}}function wm(o,i){if(o&1){let e=N();d(0,"div",7),b("click",function(n){let r=T(e).$implicit;return x(r.click(n))}),y(1,xm,1,1,"i",9),g(2,"span",10),w(3,"safeHtml"),p()}if(o&2){let e=i.$implicit;l(),C(e.icon?1:-1),l(),u("innerHTML",z(3,2,e.text),se)}}function zm(o,i){if(o&1&&le(0,wm,4,4,"div",6,Ke),o&2){let e=f();ce(e.userTools)}}function Em(o,i){if(o&1){let e=N();d(0,"div",7),b("click",function(){T(e);let n=f();return x(n.changePwd())}),g(1,"i",11),S(2),w(3,"translate"),p()}o&2&&(l(2),H("",z(3,1,"global.reset_pwd")," "))}var hr=(()=>{class o{settings;router;tokenService;i18n;dataService;modal;utilsService;socketService;resetPassword=ee.get().resetPwd;userTools=V.userTools;constructor(e,t,n,r,a,s,c,m){this.settings=e,this.router=t,this.tokenService=n,this.i18n=r,this.dataService=a,this.modal=s,this.utilsService=c,this.socketService=m}logout(){this.modal.confirm({nzTitle:this.i18n.fanyi("global.confirm_logout"),nzOnOk:()=>{this.dataService.logout().subscribe(e=>{this.socketService.closeSocket();let t=this.tokenService.get().token;V.eruptEvent&&V.eruptEvent.logout&&V.eruptEvent.logout({userName:this.settings.user.name,token:t}),this.utilsService.isTenantToken()?this.router.navigateByUrl("/passport/tenant"):this.router.navigateByUrl(this.tokenService.login_url),this.tokenService.clear()})}})}changePwd(){this.modal.create({nzTitle:this.i18n.fanyi("global.reset_pwd"),nzMaskClosable:!1,nzContent:Yi,nzFooter:null,nzBodyStyle:{paddingBottom:"1px"}})}static \u0275fac=function(t){return new(t||o)(h(pe),h(oe),h(Ve),h(Se),h(X),h(de),h(Ti),h(Fn))};static \u0275cmp=k({type:o,selectors:[["header-user"]],standalone:!1,decls:14,vars:10,consts:[["avatarMenu",""],["nz-dropdown","","nzPlacement","bottomRight",1,"alain-default__nav-item","d-flex","align-items-center","px-sm",3,"nzDropdownMenu"],["nzSize","default",1,"mr-sm",3,"nzText","nzSrc"],[1,"hidden-mobile"],["nz-menu","",1,"width-sm",2,"padding","0"],[2,"padding","8px 12px","border-bottom","1px solid #eee"],["nz-menu-item",""],["nz-menu-item","",3,"click"],["nz-icon","","nzType","logout","nzTheme","outline",1,"mr-sm"],[1,"mr-sm",3,"ngClass"],[3,"innerHTML"],["nz-icon","","nzType","edit","nzTheme","fill",1,"mr-sm"]],template:function(t,n){if(t&1){let r=N();d(0,"div",1),g(1,"nz-avatar",2),d(2,"span",3),S(3),p()(),d(4,"nz-dropdown-menu",null,0)(6,"div",4),y(7,Tm,2,1,"div",5),y(8,zm,2,0),y(9,Em,4,3,"div",6),d(10,"div",7),b("click",function(){return T(r),x(n.logout())}),g(11,"i",8),S(12),w(13,"translate"),p()()()}if(t&2){let r=R(5);u("nzDropdownMenu",r),l(),u("nzText",n.settings.user.name&&n.settings.user.name.substring(0,1))("nzSrc",n.settings.user.avatar||null),l(2),F(n.settings.user.name),l(4),C(n.settings.user.tenantName?7:-1),l(),C(n.userTools?8:-1),l(),C(n.resetPassword?9:-1),l(3),H("",z(13,8,"global.logout")," ")}},dependencies:[wt,Cn,yn,si,li,ms,re,ae,rt,Te],encapsulation:2})}return o})();var gr=(()=>{class o{settingSrv;confirmServ;messageServ;i18n;reuseTabService;constructor(e,t,n,r,a){this.settingSrv=e,this.confirmServ=t,this.messageServ=n,this.i18n=r,this.reuseTabService=a}ngOnInit(){}setLayout(e,t){this.settingSrv.setLayout(e,t)}get layout(){return this.settingSrv.layout}changeReuse(e){e?(this.reuseTabService.mode=0,this.reuseTabService.excludes=[],this.toggleColorWeak(!1)):(this.reuseTabService.mode=2,this.reuseTabService.excludes=[/\d*/]),this.settingSrv.setLayout("reuse",e)}toggleColorWeak(e){this.settingSrv.setLayout("colorWeak",e),e?(document.body.classList.add("color-weak"),this.changeReuse(!1)):document.body.classList.remove("color-weak")}toggleColorGray(e){this.settingSrv.setLayout("colorGray",e),e?document.body.classList.add("color-gray"):document.body.classList.remove("color-gray")}clear(){this.confirmServ.confirm({nzTitle:this.i18n.fanyi("setting.confirm"),nzOnOk:()=>{localStorage.clear(),this.messageServ.success(this.i18n.fanyi("finish"))}})}static \u0275fac=function(t){return new(t||o)(h(pe),h(de),h(be),h(Se),h(Ae))};static \u0275cmp=k({type:o,selectors:[["erupt-settings"]],standalone:!1,decls:30,vars:24,consts:[[1,"setting-item"],["nzSize","small",3,"ngModelChange","ngModel"]],template:function(t,n){t&1&&(d(0,"div",0)(1,"span"),S(2),w(3,"translate"),p(),d(4,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.fixed,a)||(n.layout.fixed=a),a}),b("ngModelChange",function(){return n.setLayout("fixed",n.layout.fixed)}),p()(),d(5,"div",0)(6,"span"),S(7),w(8,"translate"),p(),d(9,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.reuse,a)||(n.layout.reuse=a),a}),b("ngModelChange",function(){return n.changeReuse(n.layout.reuse)}),p()(),d(10,"div",0)(11,"span"),S(12),w(13,"translate"),p(),d(14,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.breadcrumbs,a)||(n.layout.breadcrumbs=a),a}),b("ngModelChange",function(){return n.setLayout("breadcrumbs",n.layout.breadcrumbs)}),p()(),d(15,"div",0)(16,"span"),S(17),w(18,"translate"),p(),d(19,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.bordered,a)||(n.layout.bordered=a),a}),b("ngModelChange",function(){return n.setLayout("bordered",n.layout.bordered)}),p()(),d(20,"div",0)(21,"span"),S(22),w(23,"translate"),p(),d(24,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.colorWeak,a)||(n.layout.colorWeak=a),a}),b("ngModelChange",function(){return n.toggleColorWeak(n.layout.colorWeak)}),p()(),d(25,"div",0)(26,"span"),S(27),w(28,"translate"),p(),d(29,"nz-switch",1),he("ngModelChange",function(a){return fe(n.layout.colorGray,a)||(n.layout.colorGray=a),a}),b("ngModelChange",function(){return n.toggleColorGray(n.layout.colorGray)}),p()()),t&2&&(l(2),F(z(3,12,"setting.fixed-header")),l(2),ue("ngModel",n.layout.fixed),l(3),F(z(8,14,"setting.tab-reuse")),l(2),ue("ngModel",n.layout.reuse),l(3),F(z(13,16,"setting.nav")),l(2),ue("ngModel",n.layout.breadcrumbs),l(3),F(z(18,18,"setting.table-border")),l(2),ue("ngModel",n.layout.bordered),l(3),F(z(23,20,"setting.color-weak")),l(2),ue("ngModel",n.layout.colorWeak),l(3),F(z(28,22,"setting.color-gray")),l(2),ue("ngModel",n.layout.colorGray))},dependencies:[ze,ut,_i,Te],styles:["[_nghost-%COMP%] .setting-item{display:flex;align-items:center;justify-content:space-between;height:40px}"]})}return o})();var _r=(()=>{class o{rtl;constructor(e){this.rtl=e}toggleDirection(){this.rtl.toggle()}static \u0275fac=function(t){return new(t||o)(h(es))};static \u0275cmp=k({type:o,selectors:[["header-rtl"]],hostVars:2,hostBindings:function(t,n){t&1&&b("click",function(){return n.toggleDirection()}),t&2&&ne("flex-1",!0)},standalone:!1,decls:1,vars:1,template:function(t,n){t&1&&S(0),t&2&&H(" ",n.rtl.nextDir=="ltr"?"LTR":"RTL"," ")},encapsulation:2,changeDetection:0})}return o})();var km=()=>({padding:"8px 24px"}),Pm=o=>[2,o];function Am(o,i){if(o&1&&g(0,"img",3),o&2){let e=f();u("src",e.logoPath,me)}}function Lm(o,i){if(o&1&&g(0,"img",3),o&2){let e=f();u("src",e.logoFoldPath,me)}}function Fm(o,i){if(o&1&&(d(0,"span",4),S(1),p()),o&2){let e=f();l(),F(e.logoText)}}function Om(o,i){o&1&&(d(0,"div",10)(1,"div",19),g(2,"erupt-nav"),p()())}function Rm(o,i){if(o&1&&(g(0,"div",21),w(1,"safeHtml")),o&2){let e=f(2);u("innerHTML",z(1,1,e.desc),se)}}function Vm(o,i){if(o&1&&(d(0,"li"),g(1,"span",20),O(2,Rm,2,3,"ng-template",null,0,j),p()),o&2){let e=R(3);l(),u("nzTooltipTitle",e)}}function Bm(o,i){if(o&1&&g(0,"i"),o&2){let e=f().$implicit;Pe(Ge("fa ",e.icon))}}function Hm(o,i){if(o&1&&(g(0,"div",21),w(1,"safeHtml")),o&2){let e=f().$implicit,t=f();u("innerHTML",z(1,1,t.renderTool(e)),se)}}function jm(o,i){if(o&1){let e=N();d(0,"li",22),b("click",function(n){let r=T(e).$implicit,a=f();return x(a.customToolsFun(n,r))}),d(1,"div",23),y(2,Bm,1,3,"i",24),y(3,Hm,2,3,"div",21),p()(),S(4,"\xA0 ")}if(o&2){let e=i.$implicit;u("ngClass",e.mobileHidden?"hidden-mobile":""),l(),u("title",e.text||""),l(),C(e.icon?2:-1),l(),C(e.render?3:-1)}}function Um(o,i){o&1&&g(0,"nz-divider",11)}function $m(o,i){if(o&1){let e=N();d(0,"li")(1,"div",8),b("click",function(){T(e);let n=f();return x(n.search())}),g(2,"i",25),p()()}}function Wm(o,i){o&1&&(Xt(0),g(1,"erupt-settings"),Jt())}function qm(o,i){if(o&1){let e=N();d(0,"li")(1,"div",8),b("click",function(){T(e);let n=f();return x(n.openEruptAi())}),g(2,"i",26),p()()}}function Km(o,i){if(o&1){let e=N();d(0,"li")(1,"div",8),b("click",function(){T(e);let n=f();return x(n.openEruptNotice())}),d(2,"nz-badge",27),g(3,"i",28),p()()()}if(o&2){let e=f();l(2),u("nzCount",e.unreadCount)("nzOffset",_e(2,Pm,-5))}}var yr=(()=>{class o{settings;router;appViewService;dataService;drawer;tokenService;modal;notification;menu;searchToggleStatus;isFullScreen=!1;collapse=!1;logoPath=V.logoPath;logoFoldPath=V.logoFoldPath;logoText=V.logoText;r_tools=V.r_tools;drawerVisible=!1;desc;showI18n=!0;tenantDomainInfo=Nt.get();unreadCount=0;get isEruptAi(){return ee.get().properties["erupt-ai"]}get isEruptNotice(){return ee.get().properties["erupt-notice"]}openDrawer(){this.drawerVisible=!0}closeDrawer(){this.drawerVisible=!1}constructor(e,t,n,r,a,s,c,m){this.settings=e,this.router=t,this.appViewService=n,this.dataService=r,this.drawer=a,this.tokenService=s,this.modal=c,this.notification=m,this.tenantDomainInfo&&this.tenantDomainInfo.logo&&(this.logoPath=X.previewAttachment(this.tenantDomainInfo.logo))}ngOnInit(){this.r_tools.forEach(e=>{e.load&&e.load()}),this.appViewService.routerViewDescSubject.subscribe(e=>{this.desc=e}),ee.get().locales.length<=1&&(this.showI18n=!1),this.isEruptNotice&&(this.getNoticeUnreadCount(),window.eruptNotice=this.eruptNotice.bind(this),this.dataService.announcementPopups().subscribe(e=>{if(e.data.length>0)for(let t of e.data){let n=this.modal.create({nzWrapClassName:"modal-lg",nzTitle:t.title,nzBodyStyle:{padding:"0"},nzFooter:null,nzContent:lo,nzKeyboard:!1,nzMaskClosable:!1,nzOnCancel:()=>{this.dataService.announcementMarkRead(t.id).subscribe(r=>{n.close()})}});n.componentInstance.announcement=t}}))}getNoticeUnreadCount(){this.dataService.noticeUnreadCount().subscribe(e=>{this.unreadCount=e.data})}eruptNotice(e,t,n){this.unreadCount++,this.notification.create("blank",t,n,{nzDuration:-1})}renderTool(e){return typeof e.render=="function"?e.render():e.render}openEruptAi(){let e=this.modal.create({nzWrapClassName:"modal-lg",nzMaskClosable:!1,nzKeyboard:!0,nzFooter:null,nzClosable:!0,nzTitle:"AI \u4EA4\u4E92",nzStyle:{top:"30px"},nzBodyStyle:{padding:"0"},nzContent:Si});e.getContentComponent().url="ai-chat.html?_token="+this.tokenService.get().token,e.getContentComponent().height="83vh"}openEruptNotice(){this.drawer.create({nzTitle:null,nzContent:dc,nzWidth:"360px",nzFooter:null,nzClosable:!1,nzMaskClosable:!0,nzKeyboard:!0,nzPlacement:"right",nzBodyStyle:{padding:"0"}}).afterClose.subscribe(e=>{this.getNoticeUnreadCount()})}toggleCollapsedSidebar(){this.settings.setLayout("collapsed",!this.settings.layout.collapsed)}searchToggleChange(){this.searchToggleStatus=!this.searchToggleStatus}toggleScreen(){let e=pr;e.isEnabled&&(this.isFullScreen=!e.isFullscreen,e.toggle())}customToolsFun(e,t){t.click&&t.click(e)}toIndex(){return this.router.navigateByUrl(this.settings.user.indexPath),!1}search(){let e=this.modal.create({nzWrapClassName:"modal-xs",nzMaskClosable:!0,nzKeyboard:!0,nzFooter:null,nzClosable:!1,nzBodyStyle:{padding:"12px"},nzContent:mr});e.getContentComponent().menu=this.menu}static \u0275fac=function(t){return new(t||o)(h(pe),h(oe),h(bi),h(X),h(Mt),h(Ve),h(de),h(gn))};static \u0275cmp=k({type:o,selectors:[["layout-header"]],inputs:{menu:"menu"},standalone:!1,decls:36,vars:22,consts:[["descTpl",""],["ripper","","color","#000",1,"alain-default__header-logo"],[1,"header-link",2,"user-select","none",3,"click","routerLink"],["alt","",1,"header-logo-img",3,"src"],[1,"header-logo-text","hidden-mobile"],[1,"alain-default__nav-wrap"],[1,"alain-default__nav"],[1,"hidden-pc"],[1,"alain-default__nav-item",3,"click"],["nz-icon","",3,"nzType"],[1,"hidden-mobile"],["nzType","vertical",1,"hidden-mobile"],[1,"hidden-mobile",3,"click"],[1,"alain-default__nav-item"],[3,"hidden"],[1,"alain-default__nav-item","hidden-mobile",3,"click"],["nz-icon","","nzType","setting","nzTheme","outline"],["nzPlacement","right",3,"nzOnClose","nzClosable","nzVisible","nzWidth","nzBodyStyle","nzTitle"],[4,"nzDrawerContent"],[2,"padding","0 10px 0 18px"],["nz-icon","","nzType","question-circle","nzTheme","outline","nz-tooltip","",3,"nzTooltipTitle"],[3,"innerHTML"],[3,"click","ngClass"],[1,"alain-default__nav-item","r_tool_item",3,"title"],[3,"class"],["nz-icon","","nzType","search"],["aria-hidden","true",1,"fa","fa-magic"],["nzSize","small",3,"nzCount","nzOffset"],["nz-icon","","nzType","bell"]],template:function(t,n){t&1&&(d(0,"div",1)(1,"a",2),b("click",function(){return n.toIndex()}),y(2,Am,1,1,"img",3),y(3,Lm,1,1,"img",3),y(4,Fm,2,1,"span",4),p()(),d(5,"div",5)(6,"ul",6)(7,"li",7)(8,"div",8),b("click",function(){return n.toggleCollapsedSidebar()}),g(9,"i",9),p()(),y(10,Om,3,0,"div",10),y(11,Vm,4,1,"li"),p(),d(12,"ul",6),le(13,jm,5,4,null,null,Ke),y(15,Um,1,0,"nz-divider",11),y(16,$m,3,0,"li"),d(17,"li",12),b("click",function(){return n.toggleScreen()}),d(18,"div",13),g(19,"i",9),p()(),d(20,"li",14)(21,"div",13),g(22,"i18n-choice"),p()(),d(23,"li")(24,"div",13),g(25,"header-rtl"),p()(),d(26,"li")(27,"div",15),b("click",function(){return n.openDrawer()}),g(28,"i",16),p(),d(29,"nz-drawer",17),w(30,"translate"),b("nzOnClose",function(){return n.closeDrawer()}),O(31,Wm,2,0,"ng-container",18),p()(),y(32,qm,3,0,"li"),y(33,Km,4,4,"li"),d(34,"li"),g(35,"header-user"),p()()()),t&2&&(l(),u("routerLink",n.settings.user.indexPath),l(),C(!n.settings.layout.collapsed&&n.logoPath?2:-1),l(),C(n.settings.layout.collapsed&&n.logoFoldPath?3:-1),l(),C(n.logoText?4:-1),l(5),u("nzType",Ge("menu-",n.settings.layout.collapsed?"unfold":"fold")),l(),C(n.settings.layout.breadcrumbs?10:-1),l(),C(n.desc?11:-1),l(2),ce(n.r_tools),l(2),C(n.r_tools.length>0?15:-1),l(),C(n.menu?16:-1),l(3),u("nzType",n.isFullScreen?"fullscreen-exit":"fullscreen"),l(),u("hidden",!n.showI18n),l(9),u("nzClosable",!0)("nzVisible",n.drawerVisible)("nzWidth",260)("nzBodyStyle",Oe(21,km))("nzTitle",z(30,19,"setting.config")),l(3),C(n.isEruptAi?32:-1),l(),C(n.isEruptNotice?33:-1))},dependencies:[wt,_a,kt,re,ae,mn,Oi,kn,je,ks,An,Ps,hr,gr,_r,rt,Te],styles:["[_nghost-%COMP%] .alain-default__nav[_ngcontent-%COMP%] .alain-default__nav-item[_ngcontent-%COMP%]{transition:all .3s}[_nghost-%COMP%] .alain-default__nav[_ngcontent-%COMP%] .alain-default__nav-item[_ngcontent-%COMP%]:hover{background:#5252521a}[_nghost-%COMP%] .header-logo{padding:0 12px}[_nghost-%COMP%] #erupt_logo_svg path{fill:#fff!important}[_nghost-%COMP%] .header-logo-img{box-sizing:border-box;vertical-align:top;height:44px;padding:4px 0}[_nghost-%COMP%] .alain-default__header{box-shadow:none!important}[_nghost-%COMP%] .alain-default__header-logo{min-width:200px;text-align:center;width:auto;padding:0 5px;border-right:1px solid #e5e5e5}[_nghost-%COMP%] .header-logo-text{color:#000;line-height:44px;font-size:1.8em;letter-spacing:2px;margin-left:6px;font-family:Courier New,Arial,Helvetica,sans-serif}@media (max-width: 767px){[_nghost-%COMP%] .alain-default__header-logo{min-width:48px;overflow:hidden;margin:0 6px;border-right:none!important;padding:0}[_nghost-%COMP%] .alain-default__header-logo img{width:auto}} .alain-default__collapsed .header-logo-text{display:none} .alain-default__collapsed .alain-default__aside{width:48px} .alain-default__collapsed .alain-default__header-logo{min-width:48px} .alain-default__collapsed .alain-default__header-logo img{width:36px}@media (max-width: 767px){ .alain-default__collapsed .alain-default__header-logo img{width:auto}}[data-theme=dark] [_nghost-%COMP%] .alain-default__header-logo{border-right:1px solid #303030}"]})}return o})();var Qm=o=>({"sidebar-nav__item-disabled":o}),Ji=o=>({$implicit:o}),Zm=()=>({rows:12});function Ym(o,i){if(o&1&&g(0,"i",4),o&2){let e=f(2).$implicit;u("nzType",e.value)("nzTheme",e.theme)("nzSpin",e.spin)("nzTwotoneColor",e.twoToneColor)("nzIconfont",e.iconfont)("nzRotate",e.rotate)}}function Xm(o,i){if(o&1&&g(0,"i",5),o&2){let e=f(2).$implicit;u("nzIconfont",e.iconfont)}}function Jm(o,i){if(o&1&&g(0,"img",6),o&2){let e=f(2).$implicit;u("src",e.value,me)}}function eu(o,i){if(o&1&&g(0,"span",7),o&2){let e=f(2).$implicit;u("innerHTML",e.value,se)}}function tu(o,i){if(o&1&&g(0,"i"),o&2){let e=f(2).$implicit;Pe(Ge("sidebar-nav__item-icon ",e.value))}}function iu(o,i){if(o&1&&y(0,Ym,1,6,"i",4)(1,Xm,1,1,"i",5)(2,Jm,1,1,"img",6)(3,eu,1,1,"span",7)(4,tu,1,3,"i",8),o&2){let e,t=f().$implicit;C((e=t.type)==="icon"?0:e==="iconfont"?1:e==="img"?2:e==="svg"?3:4)}}function nu(o,i){if(o&1&&y(0,iu,5,1),o&2){let e=i.$implicit;C(e?0:-1)}}function ou(o,i){}function ru(o,i){if(o&1&&O(0,ou,0,0,"ng-template",16),o&2){let e=f(4).$implicit;f(2);let t=R(1);u("ngTemplateOutlet",t)("ngTemplateOutletContext",_e(2,Ji,e.icon))}}function au(o,i){}function su(o,i){if(o&1&&(d(0,"span",17),O(1,au,0,0,"ng-template",16),p()),o&2){let e=f(4).$implicit;f(2);let t=R(1);u("nzTooltipTitle",e.text),l(),u("ngTemplateOutlet",t)("ngTemplateOutletContext",_e(3,Ji,e.icon))}}function lu(o,i){if(o&1&&(y(0,ru,1,4,null,16),y(1,su,2,5,"span",17)),o&2){let e=f(5);C(e.collapsed?-1:0),l(),C(e.collapsed?1:-1)}}function cu(o,i){if(o&1){let e=N();d(0,"a",14),b("click",function(){T(e);let n=f(2).$implicit,r=f(2);return x(r.to(n))})("mouseenter",function(){T(e);let n=f(4);return x(n.closeSubMenu())}),y(1,lu,2,2),g(2,"span",15),p()}if(o&2){let e=f(2).$implicit;u("ngClass",_e(6,Qm,e.disabled))("href","#"+e.link,me),Bt("data-id",e._id),l(),C(e._needIcon?1:-1),l(),u("innerHTML",e._text,se),Bt("title",e.text)}}function du(o,i){}function pu(o,i){if(o&1){let e=N();d(0,"a",18),b("click",function(){T(e);let n=f(2).$implicit,r=f(2);return x(r.toggleOpen(n))})("mouseenter",function(n){T(e);let r=f(2).$implicit,a=f(2);return x(a.showSubMenu(n,r))}),O(1,du,0,0,"ng-template",16),g(2,"span",15)(3,"i",19),p()}if(o&2){let e=f(2).$implicit;f(2);let t=R(1);l(),u("ngTemplateOutlet",t)("ngTemplateOutletContext",_e(4,Ji,e.icon)),l(),u("innerHTML",e._text,se),Bt("title",e.text)}}function mu(o,i){if(o&1&&g(0,"nz-badge",13),o&2){let e=f(2).$implicit;u("nzCount",e.badge)}}function uu(o,i){}function fu(o,i){if(o&1&&(d(0,"ul"),O(1,uu,0,0,"ng-template",16),p()),o&2){let e=f(2).$implicit;f(2);let t=R(3);Pe(Ge("sidebar-nav sidebar-nav__sub sidebar-nav__depth",e._depth)),l(),u("ngTemplateOutlet",t)("ngTemplateOutletContext",_e(5,Ji,e.children))}}function hu(o,i){if(o&1&&(d(0,"li",10),y(1,cu,3,8,"a",11),y(2,pu,4,6,"a",12),y(3,mu,1,1,"nz-badge",13),y(4,fu,2,7,"ul",8),p()),o&2){let e=f().$implicit;ne("sidebar-nav__selected",e._selected)("sidebar-nav__open",e.open),l(),C(e.children.length===0?1:-1),l(),C(e.children.length>0?2:-1),l(),C(e.badge?3:-1),l(),C(e.children.length>0?4:-1)}}function gu(o,i){if(o&1&&y(0,hu,5,8,"li",9),o&2){let e=i.$implicit;C(e._hidden!==!0?0:-1)}}function _u(o,i){if(o&1&&le(0,gu,1,1,null,null,Ke),o&2){let e=i.$implicit;ce(e)}}function yu(o,i){o&1&&g(0,"nz-skeleton",3),o&2&&u("nzParagraph",Oe(3,Zm))("nzTitle",!1)("nzActive",!0)}function Cu(o,i){if(o&1&&(d(0,"li",20),g(1,"span",21),p()),o&2){let e=f().$implicit;l(),u("innerHTML",e._text,se)}}function vu(o,i){}function Su(o,i){if(o&1&&(y(0,Cu,2,1,"li",20),O(1,vu,0,0,"ng-template",16)),o&2){let e=i.$implicit;f(2);let t=R(3);C(e.group?0:-1),l(),u("ngTemplateOutlet",t)("ngTemplateOutletContext",_e(3,Ji,e.children))}}function bu(o,i){if(o&1&&le(0,Su,2,5,null,null,Ke),o&2){let e=f();ce(e.list)}}var Cr="sidebar-nav__floating-show",vr="sidebar-nav__floating",Xi=class o{menuSrv;settings;router;render;cdr;ngZone;sanitizer;appViewService;doc;win;directionality;bodyEl;destroy$=new Zt;floatingEl;dir="ltr";list=[];loading=!0;disabledAcl=!1;autoCloseUnderPad=!0;recursivePath=!0;set openStrictly(i){this.menuSrv.openStrictly=i}maxLevelIcon=3;select=new Yt;get collapsed(){return this.settings.layout.collapsed}constructor(i,e,t,n,r,a,s,c,m,_,v){this.menuSrv=i,this.settings=e,this.router=t,this.render=n,this.cdr=r,this.ngZone=a,this.sanitizer=s,this.appViewService=c,this.doc=m,this.win=_,this.directionality=v}getLinkNode(i){return i=i.nodeName==="A"?i:i.parentNode,i.nodeName!=="A"?null:i}floatingClickHandle(i){i.stopPropagation();let e=this.getLinkNode(i.target);if(e==null)return!1;let t=+e.dataset.id;if(isNaN(t))return!1;let n;return this.menuSrv.visit(this.list,r=>{!n&&r._id===t&&(n=r)}),this.to(n),this.hideAll(),i.preventDefault(),!1}clearFloating(){this.floatingEl&&(this.floatingEl.removeEventListener("click",this.floatingClickHandle.bind(this)),this.floatingEl.hasOwnProperty("remove")?this.floatingEl.remove():this.floatingEl.parentNode&&this.floatingEl.parentNode.removeChild(this.floatingEl))}genFloating(){this.clearFloating(),this.floatingEl=this.render.createElement("div"),this.floatingEl.classList.add(`${vr}-container`),this.floatingEl.addEventListener("click",this.floatingClickHandle.bind(this),!1),this.bodyEl.appendChild(this.floatingEl)}genSubNode(i,e){let t=`_sidebar-nav-${e._id}`,r=(e.badge?i.nextElementSibling.nextElementSibling:i.nextElementSibling).cloneNode(!0);return r.id=t,r.classList.add(vr),r.addEventListener("mouseleave",()=>{r.classList.remove(Cr)},!1),this.floatingEl.appendChild(r),r}hideAll(){let i=this.floatingEl.querySelectorAll(`.${vr}`);for(let e=0;ethis.router.navigateByUrl(i.link))}}toggleOpen(i){this.menuSrv.toggleOpen(i)}_click(){this.isPad&&this.collapsed&&(this.openAside(!1),this.hideAll())}closeSubMenu(){this.collapsed&&this.hideAll()}openByUrl(i){let{menuSrv:e,recursivePath:t}=this;this.menuSrv.open(e.find({url:i,recursive:t}))}ngOnInit(){let{doc:i,router:e,destroy$:t,menuSrv:n,settings:r,cdr:a}=this;this.bodyEl=i.querySelector("body"),n.change.pipe(qe(t)).subscribe(s=>{n.visit(s,(c,m,_)=>{c._text=this.sanitizer.bypassSecurityTrustHtml(c.text),c._needIcon=_<=this.maxLevelIcon&&!!c.icon,c._aclResult||(this.disabledAcl?c.disabled=!0:c._hidden=!0);let v=c.icon;v&&v.type==="svg"&&typeof v.value=="string"&&(v.value=this.sanitizer.bypassSecurityTrustHtml(v.value))}),this.fixHide(s),this.loading=!1,this.list=s.filter(c=>c._hidden!==!0),a.detectChanges()}),e.events.pipe(qe(t)).subscribe(s=>{s instanceof Ut&&(this.openByUrl(s.urlAfterRedirects),this.underPad(),this.cdr.detectChanges())}),r.notify.pipe(qe(t),Hr(s=>s.type==="layout"&&s.name==="collapsed")).subscribe(()=>this.clearFloating()),this.underPad(),this.dir=this.directionality.value,this.directionality.change?.pipe(qe(t)).subscribe(s=>{this.dir=s}),this.openByUrl(e.url),this.ngZone.runOutsideAngular(()=>this.genFloating())}fixHide(i){let e=t=>{for(let n of t)n.children&&n.children.length>0&&(e(n.children),n._hidden||(n._hidden=n.children.every(r=>r._hidden)))};e(i)}ngOnDestroy(){this.destroy$.next(),this.destroy$.complete(),this.clearFloating()}get isPad(){return this.doc.defaultView.innerWidth<768}underPad(){this.autoCloseUnderPad&&this.isPad&&!this.collapsed&&setTimeout(()=>this.openAside(!0))}openAside(i){this.settings.setLayout("collapsed",i)}static \u0275fac=function(e){return new(e||o)(h(un),h(pe),h(oe),h(bt),h(Tt),h(St),h(ni),h(bi),h(we),h(xn),h(it,8))};static \u0275cmp=k({type:o,selectors:[["erupt-menu"]],hostVars:2,hostBindings:function(e,t){e&1&&b("click",function(){return t._click()})("click",function(){return t.closeSubMenu()},_o),e&2&&ne("d-block",!0)},inputs:{disabledAcl:"disabledAcl",autoCloseUnderPad:"autoCloseUnderPad",recursivePath:"recursivePath",openStrictly:"openStrictly",maxLevelIcon:"maxLevelIcon"},outputs:{select:"select"},standalone:!1,decls:7,vars:2,consts:[["icon",""],["tree",""],[1,"sidebar-nav"],[2,"padding","12px",3,"nzParagraph","nzTitle","nzActive"],["nz-icon","",1,"sidebar-nav__item-icon",3,"nzType","nzTheme","nzSpin","nzTwotoneColor","nzIconfont","nzRotate"],["nz-icon","",1,"sidebar-nav__item-icon",3,"nzIconfont"],[1,"sidebar-nav__item-icon","sidebar-nav__item-img",3,"src"],[1,"sidebar-nav__item-icon","sidebar-nav__item-svg",3,"innerHTML"],[3,"class"],[1,"sidebar-nav__item",3,"sidebar-nav__selected","sidebar-nav__open"],[1,"sidebar-nav__item"],[1,"sidebar-nav__item-link",3,"ngClass","href"],[1,"sidebar-nav__item-link"],[3,"nzCount"],[1,"sidebar-nav__item-link",3,"click","mouseenter","ngClass","href"],[1,"sidebar-nav__item-text",3,"innerHTML"],[3,"ngTemplateOutlet","ngTemplateOutletContext"],["nz-tooltip","","nzTooltipPlacement","right",3,"nzTooltipTitle"],[1,"sidebar-nav__item-link",3,"click","mouseenter"],[1,"sidebar-nav__sub-arrow"],[1,"sidebar-nav__item","sidebar-nav__group-title"],[3,"innerHTML"]],template:function(e,t){e&1&&(O(0,nu,1,1,"ng-template",null,0,j)(2,_u,2,0,"ng-template",null,1,j),d(4,"ul",2),y(5,yu,1,4,"nz-skeleton",3),y(6,bu,2,0),p()),e&2&&(l(5),C(t.loading?5:-1),l(),C(t.loading?-1:6))},dependencies:[wt,mt,kt,re,ae,je,ws],encapsulation:2,changeDetection:0})};Ii([Bi()],Xi.prototype,"showSubMenu",null);var Sr=(()=>{class o{settings;constructor(e){this.settings=e}ngOnInit(){}toggleCollapsedSidebar(){this.settings.setLayout("collapsed",!this.settings.layout.collapsed)}static \u0275fac=function(t){return new(t||o)(h(pe))};static \u0275cmp=k({type:o,selectors:[["layout-sidebar"]],standalone:!1,decls:5,vars:3,consts:[[1,"alain-default__aside-wrap"],[1,"alain-default__aside-inner",2,"overflow","scroll"],[1,"d-block",2,"padding-top","0 !important","padding-bottom","38px",3,"autoCloseUnderPad"],[1,"fold",2,"height","38px",3,"click"],["nz-icon","",2,"font-size","1.2em",3,"nzType"]],template:function(t,n){t&1&&(d(0,"div",0)(1,"div",1),g(2,"erupt-menu",2),d(3,"div",3),b("click",function(){return n.toggleCollapsedSidebar()}),g(4,"i",4),p()()()),t&2&&(l(2),u("autoCloseUnderPad",!0),l(2),u("nzType",Ge("menu-",n.settings.layout.collapsed?"unfold":"fold")))},dependencies:[re,ae,Xi],styles:["[_nghost-%COMP%] .fold[_ngcontent-%COMP%]{position:absolute;z-index:0;padding:8px;bottom:0;width:100%;color:#000000d9;background:var(--alain-default-aside-bg, #fff);text-align:center;cursor:pointer;transition:.4s all;box-shadow:0 -1px #dadfe6}[_nghost-%COMP%] .fold[_ngcontent-%COMP%]:hover{color:#1890ff} .alain-default__collapsed .sidebar-nav__item-link{padding:14px 0!important} .alain-default__collapsed .sidebar-nav__item-icon{font-size:18px!important}[data-theme=dark] [_nghost-%COMP%] .fold[_ngcontent-%COMP%]{color:#fff;background:#141414;box-shadow:0 -1px #303030}"]})}return o})();var wu=["backTop"];function zu(o,i){o&1&&(d(0,"div",5)(1,"div",6),g(2,"nz-icon",7),p()())}function Eu(o,i){}function Mu(o,i){if(o&1&&(d(0,"div",3,0),O(2,zu,3,0,"ng-template",null,1,j)(4,Eu,0,0,"ng-template",4),p()),o&2){let e=R(3),t=f();ne("ant-back-top-rtl",t.dir==="rtl"),u("@fadeMotion",void 0),l(4),u("ngTemplateOutlet",t.nzTemplate||e)}}var Nu="backTop",Du=ba({passive:!0}),Tr=(()=>{let o,i=[],e=[];return class br{static{let n=typeof Symbol=="function"&&Symbol.metadata?Object.create(null):void 0;o=[Ia()],Br(null,null,o,{kind:"field",name:"nzVisibilityHeight",static:!1,private:!1,access:{has:r=>"nzVisibilityHeight"in r,get:r=>r.nzVisibilityHeight,set:(r,a)=>{r.nzVisibilityHeight=a}},metadata:n},i,e),n&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:n})}nzConfigService=B(Da);scrollSrv=B(rs);platform=B(dn);zone=B(St);cdr=B(Tt);directionality=B(it);destroyRef=B(tn);_nzModuleName=Nu;scrollListenerDestroy$=new Zt;target=null;visible=!1;dir=this.directionality.value||"ltr";nzTemplate;nzVisibilityHeight=fo(this,i,400);nzTarget=fo(this,e);nzDuration=450;nzClick=new Yt;set backTop(n){n&&(this.backTopClickSubscription.unsubscribe(),this.backTopClickSubscription=wo(n.nativeElement,"click").pipe(xo(this.destroyRef)).subscribe(()=>{this.scrollSrv.scrollTo(this.getTarget(),0,{duration:this.nzDuration}),this.nzClick.observers.length&&this.zone.run(()=>this.nzClick.emit(!0))}))}backTopClickSubscription=Vr.EMPTY;doc=B(we);constructor(){this.destroyRef.onDestroy(()=>{this.scrollListenerDestroy$.next(!0),this.scrollListenerDestroy$.complete()})}ngOnInit(){this.registerScrollEvent(),this.directionality.change?.pipe(xo(this.destroyRef)).subscribe(n=>{this.dir=n,this.cdr.detectChanges()}),this.dir=this.directionality.value}getTarget(){return this.target||window}handleScroll(){let n=this.scrollSrv.getScroll(this.getTarget())>this.nzVisibilityHeight;this.visible!==n&&(this.visible=n,this.cdr.detectChanges())}registerScrollEvent(){this.platform.isBrowser&&(this.scrollListenerDestroy$.next(!0),this.handleScroll(),wo(this.getTarget(),"scroll",Du).pipe(jr(50),qe(this.scrollListenerDestroy$)).subscribe(()=>this.handleScroll()))}ngOnChanges(n){let{nzTarget:r}=n;r&&(this.target=typeof this.nzTarget=="string"?this.doc.querySelector(this.nzTarget):this.nzTarget,this.registerScrollEvent())}static \u0275fac=function(r){return new(r||br)};static \u0275cmp=k({type:br,selectors:[["nz-back-top"]],viewQuery:function(r,a){if(r&1&&ki(wu,5),r&2){let s;Pi(s=Ai())&&(a.backTop=s.first)}},inputs:{nzTemplate:"nzTemplate",nzVisibilityHeight:[2,"nzVisibilityHeight","nzVisibilityHeight",et],nzTarget:"nzTarget",nzDuration:[2,"nzDuration","nzDuration",et]},outputs:{nzClick:"nzClick"},exportAs:["nzBackTop"],features:[nn],decls:1,vars:1,consts:[["backTop",""],["defaultContent",""],[1,"ant-back-top",3,"ant-back-top-rtl"],[1,"ant-back-top"],[3,"ngTemplateOutlet"],[1,"ant-back-top-content"],[1,"ant-back-top-icon"],["nzType","vertical-align-top"]],template:function(r,a){r&1&&y(0,Mu,5,4,"div",2),r&2&&C(a.visible?0:-1)},dependencies:[mt,Et,re],encapsulation:2,data:{animation:[Xa]},changeDetection:0})}})(),_c=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[Tr]})}return o})();var ku=["*"];function yc(){return window.devicePixelRatio||1}function Pu(o){return o.replace(/([A-Z])/g,"-$1").toLowerCase()}function Au(o){return Object.keys(o).map(t=>`${Pu(t)}: ${o[t]};`).join(" ")}function Lu(o,i){let e=!1;return o.removedNodes.length&&(e=Array.from(o.removedNodes).some(t=>t===i)),o.type==="attributes"&&o.target===i&&(e=!0),e}function xr(o,i,e,t){o.translate(i,e),o.rotate(Math.PI/180*Number(t)),o.translate(-i,-e)}var wr=2,Cc=3,vc=(()=>{class o{nzWidth=120;nzHeight=64;nzRotate=-22;nzZIndex=9;nzImage="";nzContent="";nzFont={};nzGap=[100,100];nzOffset=[this.nzGap[0]/2,this.nzGap[1]/2];isServer=da(B(Kr));document=B(we);el=B(vt).nativeElement;cdr=B(Tt);waterMarkElement=this.document.createElement("div");stopObservation=!1;observer=null;constructor(){if(this.isServer)return;let e=this.observer=new MutationObserver(t=>{this.stopObservation||t.forEach(n=>{Lu(n,this.waterMarkElement)&&(this.destroyWatermark(),this.renderWatermark())})});Qr(()=>{this.renderWatermark()}),B(tn).onDestroy(()=>e.disconnect())}ngOnInit(){this.observer?.observe(this.el,{subtree:!0,childList:!0,attributeFilter:["style","class"]})}ngOnChanges(e){let{nzRotate:t,nzZIndex:n,nzWidth:r,nzHeight:a,nzImage:s,nzContent:c,nzFont:m,gapX:_,gapY:v,offsetLeft:D,offsetTop:I}=e;(t||n||r||a||s||c||m||_||v||D||I)&&this.renderWatermark()}getFont(){let e={color:"rgba(0,0,0,.15)",fontSize:16,fontWeight:"normal",fontFamily:"sans-serif",fontStyle:"normal"};this.nzFont=dt(dt({},e),this.nzFont),this.cdr.markForCheck()}getMarkStyle(){let e={zIndex:this.nzZIndex,position:"absolute",left:0,top:0,width:"100%",height:"100%",pointerEvents:"none",backgroundRepeat:"repeat",visibility:"visible"},t=(this.nzOffset?.[0]??this.nzGap[0]/2)-this.nzGap[0]/2,n=(this.nzOffset?.[1]??this.nzGap[1]/2)-this.nzGap[1]/2;return t>0&&(e.left=`${t}px`,e.width=`calc(100% - ${t}px)`,t=0),n>0&&(e.top=`${n}px`,e.height=`calc(100% - ${n}px)`,n=0),e.backgroundPosition=`${t}px ${n}px`,e}destroyWatermark(){this.waterMarkElement&&this.waterMarkElement.remove()}appendWatermark(e,t){this.stopObservation=!0,this.waterMarkElement.setAttribute("style",Au(Fr(dt({},this.getMarkStyle()),{backgroundImage:`url('${e}')`,backgroundSize:`${(this.nzGap[0]+t)*wr}px`}))),this.el.append(this.waterMarkElement),this.cdr.markForCheck(),setTimeout(()=>{this.stopObservation=!1,this.cdr.markForCheck()})}getMarkSize(e){let t=120,n=64;if(!this.nzImage&&e.measureText){e.font=`${Number(this.nzFont.fontSize)}px ${this.nzFont.fontFamily}`;let r=Array.isArray(this.nzContent)?this.nzContent:[this.nzContent],a=r.map(s=>e.measureText(s).width);t=Math.ceil(Math.max(...a)),n=Number(this.nzFont.fontSize)*r.length+(r.length-1)*Cc}return[this.nzWidth??t,this.nzHeight??n]}fillTexts(e,t,n,r,a){let s=yc(),c=Number(this.nzFont.fontSize)*s;e.font=`${this.nzFont.fontStyle} normal ${this.nzFont.fontWeight} ${c}px/${a}px ${this.nzFont.fontFamily}`,this.nzFont.color&&(e.fillStyle=this.nzFont.color),e.textAlign="center",e.textBaseline="top",e.translate(r/2,0),(Array.isArray(this.nzContent)?this.nzContent:[this.nzContent])?.forEach((_,v)=>{e.fillText(_??"",t,n+v*(c+Cc*s))})}drawText(e,t,n,r,a,s,c,m,_,v,D){this.fillTexts(t,n,r,a,s),t.restore(),xr(t,c,m,this.nzRotate),this.fillTexts(t,_,v,a,s),this.appendWatermark(e.toDataURL(),D)}renderWatermark(){if(this.isServer||!this.nzContent&&!this.nzImage)return;let e=this.document.createElement("canvas"),t=e.getContext("2d");if(t){this.waterMarkElement||(this.waterMarkElement=this.document.createElement("div")),this.getFont();let n=yc(),[r,a]=this.getMarkSize(t),s=(this.nzGap[0]+r)*n,c=(this.nzGap[1]+a)*n;e.setAttribute("width",`${s*wr}px`),e.setAttribute("height",`${c*wr}px`);let m=this.nzGap[0]*n/2,_=this.nzGap[1]*n/2,v=r*n,D=a*n,I=(v+this.nzGap[0]*n)/2,M=(D+this.nzGap[1]*n)/2,A=m+s,Q=_+c,J=I+s,te=M+c;if(t.save(),xr(t,I,M,this.nzRotate),this.nzImage){let Z=new Image,Y=()=>{Ie(),t.drawImage(Z,m,_,v,D),t.restore(),xr(t,J,te,this.nzRotate),t.drawImage(Z,A,Q,v,D),this.appendWatermark(e.toDataURL(),r)},ct=()=>{Ie(),this.drawText(e,t,m,_,v,D,J,te,A,Q,r)},Ie=()=>{Z.removeEventListener("load",Y),Z.removeEventListener("error",ct)};Z.addEventListener("load",Y),Z.addEventListener("error",ct),Z.crossOrigin="anonymous",Z.referrerPolicy="no-referrer",Z.src=this.nzImage}else this.drawText(e,t,m,_,v,D,J,te,A,Q,r)}}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=k({type:o,selectors:[["nz-water-mark"]],hostAttrs:[1,"ant-water-mark"],inputs:{nzWidth:[2,"nzWidth","nzWidth",et],nzHeight:[2,"nzHeight","nzHeight",et],nzRotate:[2,"nzRotate","nzRotate",et],nzZIndex:[2,"nzZIndex","nzZIndex",et],nzImage:"nzImage",nzContent:"nzContent",nzFont:"nzFont",nzGap:"nzGap",nzOffset:"nzOffset"},exportAs:["nzWaterMark"],features:[nn],ngContentSelectors:ku,decls:1,vars:0,template:function(t,n){t&1&&(ei(),ti(0))},encapsulation:2,changeDetection:0})}return o})(),Sc=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({})}return o})();var Ou=["settingHost"],Ru=()=>({fontSize:13});function Vu(o,i){o&1&&g(0,"div",1)}function Bu(o,i){o&1&&g(0,"div",2)}function Hu(o,i){o&1&&g(0,"reuse-tab",7),o&2&&u("max",30)("tabBarGutter",0)("tabMaxWidth",180)}function ju(o,i){if(o&1&&g(0,"theme-btn",8),o&2){let e=f();u("devTips",null)("types",e.themes)}}function Uu(o,i){}var $u=[Ua,ja,Wa,qa,Oa,Ra,La,Ha,$a,Ka,Ba,Fa,Va,Aa],zr=(()=>{class o{router;menuSrv;settings;el;renderer;settingSrv;data;settingsService;modal;socketService;i18n;utilsService;reuseTabService;doc;notify$;isFetching=!1;nowYear=new Date().getFullYear();menu;settingHost;themes=[];nickName;constructor(e,t,n,r,a,s,c,m,_,v,D,I,M,A,Q,J,te){this.router=t,this.menuSrv=a,this.settings=s,this.el=c,this.renderer=m,this.settingSrv=_,this.data=v,this.settingsService=D,this.modal=I,this.socketService=M,this.i18n=A,this.utilsService=Q,this.reuseTabService=J,this.doc=te,e.addIcon(...$u);let Z=!1;t.events.subscribe(Y=>{if(!this.isFetching&&Y instanceof Fi&&(this.isFetching=!0),Z||(this.reuseTabService.clear(),Z=!0),Y instanceof oi||Y instanceof To){this.isFetching=!1,Y instanceof oi&&r.error(`\u65E0\u6CD5\u52A0\u8F7D${Y.url}\u8DEF\u7531\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u6216\u6E05\u7406\u7F13\u5B58\u540E\u91CD\u8BD5\uFF01`,{nzDuration:1e3*3});return}Y instanceof Ut&&setTimeout(()=>{n.scrollToTop(),this.isFetching=!1},1e3)})}setClass(){let{el:e,renderer:t,settings:n}=this,r=n.layout;wa(e.nativeElement,t,{"alain-default":!0,"alain-default__fixed":r.fixed,"alain-default__boxed":r.boxed,"alain-default__collapsed":r.collapsed},!0),this.doc.body.classList[r.colorGray?"add":"remove"]("color-gray"),this.doc.body.classList[r.colorWeak?"add":"remove"]("color-weak")}ngAfterViewInit(){setTimeout(()=>{this.reuseTabService.clear(!0)},500),Be.production}ngOnInit(){ee.get().properties["erupt-websocket"]&&this.socketService.initWebSocket(),this.notify$=this.settings.notify.subscribe(()=>this.setClass()),this.setClass(),this.data.getMenu().subscribe(t=>{this.menu=t;function n(a,s){let c=[];return a.forEach(m=>{if(!(m.type===At.button||m.type===At.api)&&m.pid==s){let _={text:m.name,key:m.name,i18n:m.name,linkExact:!0,icon:m.icon||(m.pid?null:"fa fa-list-ul"),link:Hi(m.type,m.value),children:n(a,m.id)};m.type==At.newWindow?(_.target="_blank",_.externalLink=m.value):m.type==At.selfWindow&&(_.target="_self",_.externalLink=m.value),c.push(_)}}),c}this.menuSrv.add([{group:!1,hideInBreadcrumb:!0,hide:!0,text:this.i18n.fanyi("global.home"),link:"/"}]),this.menuSrv.add([{group:!1,hideInBreadcrumb:!0,text:"~",children:n(t,null)}]),this.router.navigateByUrl(this.router.url).then();let r=this.el.nativeElement.getElementsByClassName("sidebar-nav__item");for(let a=0;a{c.stopPropagation();let m=document.createElement("span");m.className="ripple",m.style.left=c.offsetX+"px",m.style.top=c.offsetY+"px",s.appendChild(m),setTimeout(()=>{s.removeChild(m)},800)})}});let e;this.utilsService.isTenantToken()?e=this.data.tenantUserinfo():e=this.data.userinfo(),e.subscribe(t=>{let n=Hi(t.indexMenuType,t.indexMenuValue);ee.get().waterMark&&(this.nickName=t.nickname),this.settingsService.setUser({avatar:t.avatar,name:t.nickname,tenantName:t.tenantName||null,indexPath:n}),this.router.url==="/"&&n&&this.router.navigateByUrl(n).then(),t.resetPwd&&ee.get().resetPwd&&this.modal.create({nzTitle:this.i18n.fanyi("global.reset_pwd"),nzMaskClosable:!1,nzClosable:!0,nzKeyboard:!0,nzContent:Yi,nzFooter:null,nzBodyStyle:{paddingBottom:"1px"}})})}ngOnDestroy(){this.notify$.unsubscribe()}static \u0275fac=function(t){return new(t||o)(h(Ga),h(oe),h(xa),h(be),h(un),h(pe),h(vt),h(bt),h(pe),h(X),h(pe),h(de),h(Fn),h(Se),h(Ti),h(Ae,8),h(we))};static \u0275cmp=k({type:o,selectors:[["layout-erupt"]],viewQuery:function(t,n){if(t&1&&ki(Ou,5,Yr),t&2){let r;Pi(r=Ai())&&(n.settingHost=r.first)}},hostVars:2,hostBindings:function(t,n){t&2&&ne("alain-default",!0)},standalone:!1,decls:14,vars:11,consts:[["settingHost",""],[1,"alain-default__progress-bar","erupt-global__progress"],[1,"erupt-global__progress"],[2,"position","static",3,"nzContent","nzZIndex","nzFont"],[1,"erupt-header",3,"ngClass","menu"],[1,"erupt-side","alain-default__aside"],[1,"erupt_content"],["tabType","card",3,"max","tabBarGutter","tabMaxWidth"],["cdkDrag","",3,"devTips","types"],[1,"licence"]],template:function(t,n){t&1&&(y(0,Vu,1,0,"div",1),y(1,Bu,1,0,"div",2),d(2,"nz-water-mark",3),g(3,"layout-header",4)(4,"layout-sidebar",5),d(5,"section",6),y(6,Hu,1,3,"reuse-tab",7),g(7,"router-outlet"),p()(),y(8,ju,1,2,"theme-btn",8),g(9,"nz-back-top"),O(10,Uu,0,0,"ng-template",null,0,j),d(12,"footer",9),S(13),p()),t&2&&(C(n.isFetching?0:-1),l(),C(n.isFetching?1:-1),l(),u("nzContent",n.nickName)("nzZIndex",999999)("nzFont",Oe(10,Ru)),l(),u("ngClass",n.settings.layout.fixed?"erupt-header_fixed":"")("menu",n.menu),l(3),C(n.settingSrv.layout.reuse?6:-1),l(2),C(n.themes.length?8:-1),l(5),H("Powered by Erupt \xA9 2018 - ",n.nowYear))},dependencies:[wt,zt,cr,Tr,ss,vc,ka,yr,Sr],styles:[".erupt-side:after{border-right:1px solid rgba(0,0,0,.1)} .alain-default__aside{min-height:calc(100vh - 44px)} .alain-default__aside:after{border-right:1px solid #e5e5e5} .erupt_content{transition:all .3s}@media (min-width: 768px){ .alain-default__fixed .reuse-tab+router-outlet{display:block;height:38px!important}} .reuse-tab{margin-left:0} .alain-default__fixed .reuse-tab{margin-left:-40px} .ltr .erupt_content{margin-top:44px;margin-left:200px} .ltr .alain-default__collapsed .erupt_content{margin-left:48px}@media (max-width: 767px){ .ltr .erupt_content{margin-top:44px;margin-left:0;transform:translate3d(200px,0,0)} .ltr .alain-default__collapsed .erupt_content{margin-top:44px;margin-left:0;transform:translateZ(0)}} .rtl .erupt_content{margin-top:44px;margin-right:200px} .rtl .alain-default__collapsed .erupt_content{margin-right:48px}@media (max-width: 767px){ .rtl .erupt_content{margin-top:44px;margin-right:0;transform:translate3d(-200px,0,0)} .rtl .alain-default__collapsed .erupt_content{margin-right:0;transform:translateZ(0)}}[_nghost-%COMP%] .erupt-header[_ngcontent-%COMP%]{position:absolute;top:0;left:0;right:0;z-index:19;display:flex;align-items:center;width:100%;height:44px;padding:0 16px;background:#fff;border-bottom:1px solid rgba(0,0,0,.1)}[_nghost-%COMP%] .erupt-header_fixed[_ngcontent-%COMP%]{position:fixed}[_nghost-%COMP%] footer.licence[_ngcontent-%COMP%]{position:fixed;bottom:-55px;left:0;right:0;z-index:-1;height:55px;padding-top:3px;line-height:25px;text-align:center;color:#000}[_nghost-%COMP%] .ant-back-top{bottom:30px;right:30px}[_nghost-%COMP%] .ant-back-top .ant-back-top-content{border-radius:4px}[_nghost-%COMP%] .theme-btn{right:36px;bottom:90px}[_nghost-%COMP%] .alain-default__nav-item, [_nghost-%COMP%] .alain-default__nav nz-badge{color:#000}[_nghost-%COMP%] .alain-default__header{box-shadow:none;border-bottom:1px solid #efe3e5}[_nghost-%COMP%] .reuse-tab{margin-top:0!important}[_nghost-%COMP%] .reuse-tab .ant-tabs-nav .ant-tabs-tab .reuse-tab__name-width{display:block}[_nghost-%COMP%] .ant-tabs-card.ant-tabs-top>.ant-tabs-nav .ant-tabs-tab+.ant-tabs-tab{margin-left:0}[_nghost-%COMP%] .reuse-tab__card{padding-top:0;padding-left:0;padding-right:0}[_nghost-%COMP%] .reuse-tab__card .ant-tabs-bar{margin:0}[_nghost-%COMP%] .reuse-tab__card .ant-tabs-tab{border-radius:0!important;border-left:0!important;border-top:0!important;min-width:130px!important;justify-content:center}[_nghost-%COMP%] .reuse-tab__card .ant-tabs-tab-active{border-bottom:1px dashed #e8e8e8!important}[_nghost-%COMP%] .reuse-tab__card .ant-tabs-nav-container{padding:0!important}[data-theme=dark] [_nghost-%COMP%] .erupt-header{background:#141414;border-bottom:1px solid #434343;box-shadow:0 6px 16px -8px #00000052,0 9px 28px #0003,0 12px 48px 16px #0000001f}[data-theme=dark] [_nghost-%COMP%] .alain-default__nav-item, [data-theme=dark] [_nghost-%COMP%] .alain-default__nav nz-badge{color:#fff}[data-theme=dark] [_nghost-%COMP%] .header-logo-text{color:#fff}[data-theme=dark] [_nghost-%COMP%] .reuse-tab__card .ant-tabs-tab-active{border-bottom:1px dashed #2e2e2e!important}"]})}return o})();var po=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[tt,Vi,Re,fn.forChild(),nc,ic,ec,Jl,Zl,ql,Dt,_s,xs,us,Es,zn,gi,wn,Et,Ya,zs,Ri,Pn,vs,Fs,xi,_c,Tn,Is,Sc,Ds,Pa]})}return o})();var Ce=class o{constructor(){this._dataLength=0,this._bufferLength=0,this._state=new Int32Array(4),this._buffer=new ArrayBuffer(68),this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}static hashStr(i,e=!1){return this.onePassHasher.start().appendStr(i).end(e)}static hashAsciiStr(i,e=!1){return this.onePassHasher.start().appendAsciiStr(i).end(e)}static _hex(i){let e=o.hexChars,t=o.hexOut,n,r,a,s;for(s=0;s<4;s+=1)for(r=s*8,n=i[s],a=0;a<8;a+=2)t[r+1+a]=e.charAt(n&15),n>>>=4,t[r+0+a]=e.charAt(n&15),n>>>=4;return t.join("")}static _md5cycle(i,e){let t=i[0],n=i[1],r=i[2],a=i[3];t+=(n&r|~n&a)+e[0]-680876936|0,t=(t<<7|t>>>25)+n|0,a+=(t&n|~t&r)+e[1]-389564586|0,a=(a<<12|a>>>20)+t|0,r+=(a&t|~a&n)+e[2]+606105819|0,r=(r<<17|r>>>15)+a|0,n+=(r&a|~r&t)+e[3]-1044525330|0,n=(n<<22|n>>>10)+r|0,t+=(n&r|~n&a)+e[4]-176418897|0,t=(t<<7|t>>>25)+n|0,a+=(t&n|~t&r)+e[5]+1200080426|0,a=(a<<12|a>>>20)+t|0,r+=(a&t|~a&n)+e[6]-1473231341|0,r=(r<<17|r>>>15)+a|0,n+=(r&a|~r&t)+e[7]-45705983|0,n=(n<<22|n>>>10)+r|0,t+=(n&r|~n&a)+e[8]+1770035416|0,t=(t<<7|t>>>25)+n|0,a+=(t&n|~t&r)+e[9]-1958414417|0,a=(a<<12|a>>>20)+t|0,r+=(a&t|~a&n)+e[10]-42063|0,r=(r<<17|r>>>15)+a|0,n+=(r&a|~r&t)+e[11]-1990404162|0,n=(n<<22|n>>>10)+r|0,t+=(n&r|~n&a)+e[12]+1804603682|0,t=(t<<7|t>>>25)+n|0,a+=(t&n|~t&r)+e[13]-40341101|0,a=(a<<12|a>>>20)+t|0,r+=(a&t|~a&n)+e[14]-1502002290|0,r=(r<<17|r>>>15)+a|0,n+=(r&a|~r&t)+e[15]+1236535329|0,n=(n<<22|n>>>10)+r|0,t+=(n&a|r&~a)+e[1]-165796510|0,t=(t<<5|t>>>27)+n|0,a+=(t&r|n&~r)+e[6]-1069501632|0,a=(a<<9|a>>>23)+t|0,r+=(a&n|t&~n)+e[11]+643717713|0,r=(r<<14|r>>>18)+a|0,n+=(r&t|a&~t)+e[0]-373897302|0,n=(n<<20|n>>>12)+r|0,t+=(n&a|r&~a)+e[5]-701558691|0,t=(t<<5|t>>>27)+n|0,a+=(t&r|n&~r)+e[10]+38016083|0,a=(a<<9|a>>>23)+t|0,r+=(a&n|t&~n)+e[15]-660478335|0,r=(r<<14|r>>>18)+a|0,n+=(r&t|a&~t)+e[4]-405537848|0,n=(n<<20|n>>>12)+r|0,t+=(n&a|r&~a)+e[9]+568446438|0,t=(t<<5|t>>>27)+n|0,a+=(t&r|n&~r)+e[14]-1019803690|0,a=(a<<9|a>>>23)+t|0,r+=(a&n|t&~n)+e[3]-187363961|0,r=(r<<14|r>>>18)+a|0,n+=(r&t|a&~t)+e[8]+1163531501|0,n=(n<<20|n>>>12)+r|0,t+=(n&a|r&~a)+e[13]-1444681467|0,t=(t<<5|t>>>27)+n|0,a+=(t&r|n&~r)+e[2]-51403784|0,a=(a<<9|a>>>23)+t|0,r+=(a&n|t&~n)+e[7]+1735328473|0,r=(r<<14|r>>>18)+a|0,n+=(r&t|a&~t)+e[12]-1926607734|0,n=(n<<20|n>>>12)+r|0,t+=(n^r^a)+e[5]-378558|0,t=(t<<4|t>>>28)+n|0,a+=(t^n^r)+e[8]-2022574463|0,a=(a<<11|a>>>21)+t|0,r+=(a^t^n)+e[11]+1839030562|0,r=(r<<16|r>>>16)+a|0,n+=(r^a^t)+e[14]-35309556|0,n=(n<<23|n>>>9)+r|0,t+=(n^r^a)+e[1]-1530992060|0,t=(t<<4|t>>>28)+n|0,a+=(t^n^r)+e[4]+1272893353|0,a=(a<<11|a>>>21)+t|0,r+=(a^t^n)+e[7]-155497632|0,r=(r<<16|r>>>16)+a|0,n+=(r^a^t)+e[10]-1094730640|0,n=(n<<23|n>>>9)+r|0,t+=(n^r^a)+e[13]+681279174|0,t=(t<<4|t>>>28)+n|0,a+=(t^n^r)+e[0]-358537222|0,a=(a<<11|a>>>21)+t|0,r+=(a^t^n)+e[3]-722521979|0,r=(r<<16|r>>>16)+a|0,n+=(r^a^t)+e[6]+76029189|0,n=(n<<23|n>>>9)+r|0,t+=(n^r^a)+e[9]-640364487|0,t=(t<<4|t>>>28)+n|0,a+=(t^n^r)+e[12]-421815835|0,a=(a<<11|a>>>21)+t|0,r+=(a^t^n)+e[15]+530742520|0,r=(r<<16|r>>>16)+a|0,n+=(r^a^t)+e[2]-995338651|0,n=(n<<23|n>>>9)+r|0,t+=(r^(n|~a))+e[0]-198630844|0,t=(t<<6|t>>>26)+n|0,a+=(n^(t|~r))+e[7]+1126891415|0,a=(a<<10|a>>>22)+t|0,r+=(t^(a|~n))+e[14]-1416354905|0,r=(r<<15|r>>>17)+a|0,n+=(a^(r|~t))+e[5]-57434055|0,n=(n<<21|n>>>11)+r|0,t+=(r^(n|~a))+e[12]+1700485571|0,t=(t<<6|t>>>26)+n|0,a+=(n^(t|~r))+e[3]-1894986606|0,a=(a<<10|a>>>22)+t|0,r+=(t^(a|~n))+e[10]-1051523|0,r=(r<<15|r>>>17)+a|0,n+=(a^(r|~t))+e[1]-2054922799|0,n=(n<<21|n>>>11)+r|0,t+=(r^(n|~a))+e[8]+1873313359|0,t=(t<<6|t>>>26)+n|0,a+=(n^(t|~r))+e[15]-30611744|0,a=(a<<10|a>>>22)+t|0,r+=(t^(a|~n))+e[6]-1560198380|0,r=(r<<15|r>>>17)+a|0,n+=(a^(r|~t))+e[13]+1309151649|0,n=(n<<21|n>>>11)+r|0,t+=(r^(n|~a))+e[4]-145523070|0,t=(t<<6|t>>>26)+n|0,a+=(n^(t|~r))+e[11]-1120210379|0,a=(a<<10|a>>>22)+t|0,r+=(t^(a|~n))+e[2]+718787259|0,r=(r<<15|r>>>17)+a|0,n+=(a^(r|~t))+e[9]-343485551|0,n=(n<<21|n>>>11)+r|0,i[0]=t+i[0]|0,i[1]=n+i[1]|0,i[2]=r+i[2]|0,i[3]=a+i[3]|0}start(){return this._dataLength=0,this._bufferLength=0,this._state.set(o.stateIdentity),this}appendStr(i){let e=this._buffer8,t=this._buffer32,n=this._bufferLength,r,a;for(a=0;a>>6)+192,e[n++]=r&63|128;else if(r<55296||r>56319)e[n++]=(r>>>12)+224,e[n++]=r>>>6&63|128,e[n++]=r&63|128;else{if(r=(r-55296)*1024+(i.charCodeAt(++a)-56320)+65536,r>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");e[n++]=(r>>>18)+240,e[n++]=r>>>12&63|128,e[n++]=r>>>6&63|128,e[n++]=r&63|128}n>=64&&(this._dataLength+=64,o._md5cycle(this._state,t),n-=64,t[0]=t[16])}return this._bufferLength=n,this}appendAsciiStr(i){let e=this._buffer8,t=this._buffer32,n=this._bufferLength,r,a=0;for(;;){for(r=Math.min(i.length-a,64-n);r--;)e[n++]=i.charCodeAt(a++);if(n<64)break;this._dataLength+=64,o._md5cycle(this._state,t),n=0}return this._bufferLength=n,this}appendByteArray(i){let e=this._buffer8,t=this._buffer32,n=this._bufferLength,r,a=0;for(;;){for(r=Math.min(i.length-a,64-n);r--;)e[n++]=i[a++];if(n<64)break;this._dataLength+=64,o._md5cycle(this._state,t),n=0}return this._bufferLength=n,this}getState(){let i=this._state;return{buffer:String.fromCharCode.apply(null,Array.from(this._buffer8)),buflen:this._bufferLength,length:this._dataLength,state:[i[0],i[1],i[2],i[3]]}}setState(i){let e=i.buffer,t=i.state,n=this._state,r;for(this._dataLength=i.length,this._bufferLength=i.buflen,n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],r=0;r>2)+1;this._dataLength+=e;let a=this._dataLength*8;if(t[e]=128,t[e+1]=t[e+2]=t[e+3]=0,n.set(o.buffer32Identity.subarray(r),r),e>55&&(o._md5cycle(this._state,n),n.set(o.buffer32Identity)),a<=4294967295)n[14]=a;else{let s=a.toString(16).match(/(.*?)(.{0,8})$/);if(s===null)return;let c=parseInt(s[2],16),m=parseInt(s[1],16)||0;n[14]=c,n[15]=m}return o._md5cycle(this._state,n),i?this._state:o._hex(this._state)}};Ce.stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]);Ce.buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);Ce.hexChars="0123456789abcdef";Ce.hexOut=[];Ce.onePassHasher=new Ce;if(Ce.hashStr("hello")!=="5d41402abc4b2a76b9719d911017c592")throw new Error("Md5 self test failed.");function qu(o,i){if(o&1&&g(0,"nz-alert",5),o&2){let e=f();u("nzType","error")("nzMessage",e.error)("nzShowIcon",!0)}}function Ku(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"login.validate.account")," ")}function Gu(o,i){if(o&1&&y(0,Ku,2,3),o&2){let e=f();C(e.userName.dirty&&e.userName.errors?0:-1)}}function Qu(o,i){if(o&1){let e=N();d(0,"i",18),b("click",function(){T(e);let n=f();return x(n.passwordType="text")}),p(),d(1,"i",19),b("click",function(){T(e);let n=f();return x(n.passwordType="password")}),p()}if(o&2){let e=f();u("hidden",e.passwordType=="text"),l(),u("hidden",e.passwordType=="password")}}function Zu(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"login.validate.pwd")," ")}function Yu(o,i){if(o&1&&y(0,Zu,2,3),o&2){let e=f();C(e.password.dirty&&e.password.errors?0:-1)}}function Xu(o,i){if(o&1){let e=N();d(0,"nz-form-item")(1,"nz-form-control")(2,"nz-input-group",20),g(3,"input",21),w(4,"translate"),d(5,"img",22),w(6,"translate"),b("click",function(){T(e);let n=f();return x(n.changeVerifyCode())}),p()()()()}if(o&2){let e=f();l(3),u("maxLength",10)("placeholder",z(4,4,"login.validate_code")),l(2),u("src",e.verifyCodeUrl,me)("alt",z(6,6,"login.validate_code"))}}function Ju(o,i){if(o&1&&(d(0,"a",12),S(1),w(2,"translate"),p()),o&2){let e=f();u("href",e.registerPage,me),l(),F(z(2,2,"login.register"))}}function ef(o,i){if(o&1){let e=N();d(0,"a",23),b("click",function(){T(e);let n=f();return x(n.toTenant())}),S(1),w(2,"translate"),p()}o&2&&(l(),F(z(2,1,"tenant.login")))}var Er=(()=>{class o{data;router;msg;modal;drawer;i18n;reuseTabService;tokenService;cacheService;form;error="";type=0;loading=!1;passwordType="password";modelFun;useVerifyCode=!1;verifyCodeUrl;registerPage=V.registerPage;verifyCodeMark;tenantLogin;tenantDomainInfo=Nt.get();constructor(e,t,n,r,a,s,c,m,_,v){this.data=t,this.router=n,this.msg=r,this.modal=a,this.drawer=s,this.i18n=c,this.reuseTabService=m,this.tokenService=_,this.cacheService=v,this.tenantLogin=!!(ee.get().properties&&ee.get().properties["erupt-tenant"]),this.form=e.group({userName:[null,[ye.required,ye.minLength(1)]],password:[null,ye.required],verifyCode:[null],mobile:[null,[ye.required,ye.pattern(/^1\d{10}$/)]],remember:[!0]}),this.tenantDomainInfo&&this.router.navigateByUrl("/passport/tenant").then(D=>!0)}ngOnInit(){ee.get().loginPagePath&&(window.location.href=ee.get().loginPagePath)}ngAfterViewInit(){this.modal.closeAll(),ee.get().verifyCodeCount<=0&&(this.changeVerifyCode(),Promise.resolve(null).then(()=>this.useVerifyCode=!0))}get userName(){return this.form.controls.userName}get password(){return this.form.controls.password}get verifyCode(){return this.form.controls.verifyCode}switch(e){this.type=e.index}submit(){if(this.error="",this.type===0&&(this.userName.markAsDirty(),this.userName.updateValueAndValidity(),this.password.markAsDirty(),this.password.updateValueAndValidity(),this.useVerifyCode&&(this.verifyCode.markAsDirty(),this.userName.updateValueAndValidity()),this.userName.invalid||this.password.invalid))return;this.loading=!0;let e=this.password.value;ee.get().pwdTransferEncrypt&&(e=Ce.hashStr(Ce.hashStr(this.password.value)+this.userName.value)),this.data.login(this.userName.value,e,this.verifyCode.value,this.verifyCodeMark).subscribe(t=>{if(t.useVerifyCode&&this.changeVerifyCode(),this.useVerifyCode=t.useVerifyCode,t.pass)if(this.tokenService.set({token:t.token,account:this.userName.value}),V.eruptEvent&&V.eruptEvent.login&&V.eruptEvent.login({token:t.token,account:this.userName.value}),this.loading=!1,this.modelFun)this.modelFun();else{let n=this.cacheService.getNone(ai.loginBackPath);n?(this.cacheService.remove(ai.loginBackPath),this.router.navigateByUrl(n).then()):this.router.navigateByUrl("/").then()}else this.loading=!1,this.error=t.reason,this.verifyCode.setValue(null),t.useVerifyCode&&this.changeVerifyCode();this.reuseTabService.clear()},()=>{this.loading=!1})}changeVerifyCode(){this.verifyCodeMark=Math.ceil(Math.random()*new Date().getTime()),this.verifyCodeUrl=X.getVerifyCodeUrl(this.verifyCodeMark)}forgot(){this.msg.error(this.i18n.fanyi("login.forget_pwd_hint"))}toTenant(){this.router.navigateByUrl("/passport/tenant").then(e=>!0)}ngOnDestroy(){}static \u0275fac=function(t){return new(t||o)(h(ui),h(X),h(oe),h(be),h(de),h(Mt),h(Se),h(Ae,8),h(Ve),h(_n))};static \u0275cmp=k({type:o,selectors:[["passport-login"]],inputs:{modelFun:"modelFun"},standalone:!1,features:[an([pn])],decls:35,vars:27,consts:[["accountTip",""],["controlPwd",""],["pwdTip",""],[2,"margin-bottom","26px","text-align","center"],["nz-form","","role","form",3,"ngSubmit","formGroup"],[1,"mb-lg",3,"nzType","nzMessage","nzShowIcon"],[3,"nzErrorTip"],["nzSize","large","nzPrefixIcon","user"],["nz-input","","formControlName","userName",3,"placeholder"],["nzSize","large","nzPrefixIcon","lock",3,"nzAddOnAfter"],["nz-input","","formControlName","password",3,"type","placeholder"],[1,"text-left",3,"nzSpan"],[1,"forgot",3,"href"],[1,"text-right",3,"nzSpan"],[1,"forgot",3,"click"],[2,"margin-bottom","0"],["nz-button","","type","submit","nzType","primary","nzSize","large",2,"display","block","width","100%",3,"nzLoading"],[2,"text-align","center","margin-top","16px"],[1,"fa","fa-eye-slash","point",3,"click","hidden"],[1,"fa","fa-eye","point",3,"click","hidden"],["nzSize","large"],["nz-input","","type","text","formControlName","verifyCode",3,"maxLength","placeholder"],[2,"position","absolute","z-index","9","right","1px","top","1px",3,"click","src","alt"],[3,"click"]],template:function(t,n){if(t&1){let r=N();d(0,"h3",3),S(1),w(2,"translate"),p(),d(3,"form",4),b("ngSubmit",function(){return T(r),x(n.submit())}),y(4,qu,1,3,"nz-alert",5),d(5,"nz-form-item")(6,"nz-form-control",6)(7,"nz-input-group",7),g(8,"input",8),w(9,"translate"),p(),O(10,Gu,1,1,"ng-template",null,0,j),p()(),d(12,"nz-form-item")(13,"nz-form-control",6)(14,"nz-input-group",9),g(15,"input",10),w(16,"translate"),p(),O(17,Qu,2,2,"ng-template",null,1,j)(19,Yu,1,1,"ng-template",null,2,j),p()(),y(21,Xu,7,8,"nz-form-item"),d(22,"nz-form-item")(23,"nz-col",11),y(24,Ju,3,4,"a",12),p(),d(25,"nz-col",13)(26,"a",14),b("click",function(){return T(r),x(n.forgot())}),S(27),w(28,"translate"),p()()(),d(29,"nz-form-item",15)(30,"button",16),S(31),w(32,"translate"),p()(),d(33,"p",17),y(34,ef,3,3,"a"),p()()}if(t&2){let r=R(11),a=R(18),s=R(20);l(),F(z(2,17,"login.account_pwd_login")),l(2),u("formGroup",n.form),l(),C(n.error?4:-1),l(2),u("nzErrorTip",r),l(2),u("placeholder",z(9,19,"login.account")),l(5),u("nzErrorTip",s),l(),u("nzAddOnAfter",a),l(),u("type",n.passwordType)("placeholder",z(16,21,"login.pwd")),l(6),C(n.useVerifyCode?21:-1),l(2),u("nzSpan",12),l(),C(n.registerPage?24:-1),l(),u("nzSpan",12),l(2),F(z(28,23,"login.forget_pwd")),l(3),u("nzLoading",n.loading),l(),H("",z(32,25,"login.button")," "),l(3),C(n.tenantLogin?34:-1)}},dependencies:[di,He,ze,ci,pi,mi,nt,ae,ri,hi,fi,Pt,Ue,ot,Ci,yi,vi,Te],styles:["[_nghost-%COMP%]{display:block;max-width:368px;margin:0 auto}[_nghost-%COMP%] .ant-input-affix-wrapper .ant-input:not(:first-child){padding-left:8px}[_nghost-%COMP%] .icon{font-size:24px;color:#0003;margin-left:16px;vertical-align:middle;cursor:pointer;transition:color .3s}[_nghost-%COMP%] .icon:hover{color:#1890ff}"]})}return o})();function nf(o,i){if(o&1){let e=N();d(0,"iframe",3),w(1,"safeUrl"),b("load",function(){T(e);let n=f();return x(n.iframeLoad())}),p()}if(o&2){let e=f();u("src",z(1,1,e.url),on)}}var Mr=(()=>{class o{settingsService;router;url;spin=!0;constructor(e,t){this.settingsService=e,this.router=t}ngOnInit(){let e=this.settingsService.user.indexPath;e?this.router.navigateByUrl(e).then():this.url="home.html?v="+ee.get().hash,setTimeout(()=>{this.spin=!1},3e3)}iframeLoad(){this.spin=!1}static \u0275fac=function(t){return new(t||o)(h(pe),h(oe))};static \u0275cmp=k({type:o,selectors:[["ng-component"]],standalone:!1,decls:3,vars:2,consts:[[1,"page-container"],[2,"height","100%","width","100%",3,"nzSpinning"],["frameborder","0","height","100%","width","100%",2,"vertical-align","bottom",3,"src"],["frameborder","0","height","100%","width","100%",2,"vertical-align","bottom",3,"load","src"]],template:function(t,n){t&1&&(d(0,"div",0)(1,"nz-spin",1),y(2,nf,2,3,"iframe",2),p()()),t&2&&(l(),u("nzSpinning",n.spin),l(),C(n.url?2:-1))},dependencies:[It,Ln],encapsulation:2})}return o})();var bc=(()=>{class o{isFillLayout=!1;menus=[];constructor(){}static \u0275fac=function(t){return new(t||o)};static \u0275prov=pt({token:o,factory:o.\u0275fac,providedIn:"root"})}return o})();var Nr=(()=>{class o{statusService;constructor(e){this.statusService=e}ngOnInit(){this.statusService.isFillLayout=!0}ngOnDestroy(){this.statusService.isFillLayout=!1}static \u0275fac=function(t){return new(t||o)(h(bc))};static \u0275cmp=k({type:o,selectors:[["erupt-fill"]],standalone:!1,decls:2,vars:0,consts:[[1,"alain-default"]],template:function(t,n){t&1&&(d(0,"div",0),g(1,"router-outlet"),p())},dependencies:[zt],encapsulation:2})}return o})();function rf(o,i){if(o&1&&(d(0,"p",1)(1,"a",3),S(2),p()()),o&2){let e=f();l(),u("href",e.targetUrl,me),l(),F(e.targetUrl)}}function af(o,i){if(o&1){let e=N();d(0,"nz-spin",2)(1,"iframe",4),w(2,"safeUrl"),b("load",function(){T(e);let n=f();return x(n.iframeLoad())}),p()()}if(o&2){let e=f();u("nzSpinning",e.spin),l(),u("src",z(2,2,e.url),on)}}var Dr=(()=>{class o{tokenService;reuseTabService;route;dataService;url;targetUrl;spin=!1;router$;constructor(e,t,n,r){this.tokenService=e,this.reuseTabService=t,this.route=n,this.dataService=r}ngOnInit(){this.router$=this.route.params.subscribe(e=>{this.spin=!0;let t=decodeURIComponent(atob(decodeURIComponent(e.url)));t+=(t.indexOf("?")===-1?"?":"&")+"_token="+this.tokenService.get().token,this.url=t}),setTimeout(()=>{this.spin=!1},3e3)}iframeLoad(){this.spin=!1}ngOnDestroy(){this.router$.unsubscribe()}static \u0275fac=function(t){return new(t||o)(h(Ve),h(Ae),h(ha),h(X))};static \u0275cmp=k({type:o,selectors:[["app-site"]],standalone:!1,decls:3,vars:2,consts:[[1,"page-container"],[1,"text-center",2,"font-size","2.6em","position","relative","top","30%"],[2,"height","100%","width","100%",3,"nzSpinning"],["target","_blank",3,"href"],["frameborder","0","height","100%","width","100%",2,"vertical-align","bottom",3,"load","src"]],template:function(t,n){t&1&&(d(0,"div",0),y(1,rf,3,2,"p",1),y(2,af,3,4,"nz-spin",2),p()),t&2&&(l(),C(n.targetUrl?1:-1),l(),C(n.url?2:-1))},dependencies:[It,Ln],encapsulation:2})}return o})();function sf(o,i){if(o&1&&g(0,"nz-alert",5),o&2){let e=f();u("nzType","error")("nzMessage",e.error)("nzShowIcon",!0)}}function lf(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"login.validate.account")," ")}function cf(o,i){if(o&1&&y(0,lf,2,3),o&2){let e=f();C(e.userName.dirty&&e.userName.errors?0:-1)}}function df(o,i){if(o&1){let e=N();d(0,"i",21),b("click",function(){T(e);let n=f();return x(n.passwordType="text")}),p(),d(1,"i",22),b("click",function(){T(e);let n=f();return x(n.passwordType="password")}),p()}if(o&2){let e=f();u("hidden",e.passwordType=="text"),l(),u("hidden",e.passwordType=="password")}}function pf(o,i){o&1&&(S(0),w(1,"translate")),o&2&&H(" ",z(1,1,"login.validate.pwd")," ")}function mf(o,i){if(o&1&&y(0,pf,2,3),o&2){let e=f();C(e.password.dirty&&e.password.errors?0:-1)}}function uf(o,i){if(o&1){let e=N();d(0,"nz-form-item")(1,"nz-form-control")(2,"nz-input-group",23),g(3,"input",24),w(4,"translate"),d(5,"img",25),w(6,"translate"),b("click",function(){T(e);let n=f();return x(n.changeVerifyCode())}),p()()()()}if(o&2){let e=f();l(3),u("maxLength",10)("placeholder",z(4,4,"login.validate_code")),l(2),u("src",e.verifyCodeUrl,me)("alt",z(6,6,"login.validate_code"))}}function ff(o,i){if(o&1&&(d(0,"a",15),S(1),w(2,"translate"),p()),o&2){let e=f();u("href",e.registerPage,me),l(),F(z(2,2,"login.register"))}}function hf(o,i){if(o&1){let e=N();d(0,"a",26),b("click",function(){T(e);let n=f(2);return x(n.toLogin())}),S(1),p()}o&2&&(l(),F("\u5E73\u53F0\u767B\u5F55"))}function gf(o,i){if(o&1&&(d(0,"p",20),y(1,hf,2,1,"a"),p()),o&2){let e=f();l(),C(e.tenantLogin?1:-1)}}var Ir=(()=>{class o{data;router;msg;i18n;reuseTabService;tokenService;cacheService;form;error="";loading=!1;passwordType="password";modelFun;useVerifyCode=!1;verifyCodeUrl;registerPage=V.registerPage;verifyCodeMark;tenantLogin;tenantDomainInfo=Nt.get();constructor(e,t,n,r,a,s,c,m){this.data=t,this.router=n,this.msg=r,this.i18n=a,this.reuseTabService=s,this.tokenService=c,this.cacheService=m,this.tenantLogin=!!ee.get().properties["erupt-tenant"],this.form=e.group({tenantCode:[null,ye.required],userName:[null,[ye.required,ye.minLength(1)]],password:[null,ye.required],verifyCode:[null],mobile:[null,[ye.required,ye.pattern(/^1\d{10}$/)]],remember:[!0]}),this.tenantDomainInfo&&this.tenantCode.setValue(this.tenantDomainInfo.code)}ngOnInit(){ee.get().loginPagePath&&(window.location.href=ee.get().loginPagePath)}ngAfterViewInit(){ee.get().verifyCodeCount<=0&&(this.changeVerifyCode(),Promise.resolve(null).then(()=>this.useVerifyCode=!0))}get tenantCode(){return this.form.controls.tenantCode}get userName(){return this.form.controls.userName}get password(){return this.form.controls.password}get verifyCode(){return this.form.controls.verifyCode}submit(){if(this.error="",this.tenantCode.markAsDirty(),this.tenantCode.updateValueAndValidity(),this.userName.markAsDirty(),this.userName.updateValueAndValidity(),this.password.markAsDirty(),this.password.updateValueAndValidity(),this.useVerifyCode&&(this.verifyCode.markAsDirty(),this.userName.updateValueAndValidity()),this.userName.invalid||this.password.invalid)return;this.loading=!0;let e=this.password.value;ee.get().pwdTransferEncrypt&&(e=Ce.hashStr(Ce.hashStr(this.password.value)+this.userName.value)),this.data.tenantLogin(this.tenantCode.value,this.userName.value,e,this.verifyCode.value,this.verifyCodeMark).subscribe(t=>{if(t.useVerifyCode&&this.changeVerifyCode(),this.useVerifyCode=t.useVerifyCode,t.pass)if(this.tokenService.set({token:t.token,account:this.userName.value}),V.eruptEvent&&V.eruptEvent.login&&V.eruptEvent.login({token:t.token,account:this.userName.value}),this.loading=!1,this.modelFun)this.modelFun();else{let n=this.cacheService.getNone(ai.loginBackPath);n?(this.cacheService.remove(ai.loginBackPath),this.router.navigateByUrl(n).then()):this.router.navigateByUrl("/").then()}else this.loading=!1,this.error=t.reason,this.verifyCode.setValue(null),t.useVerifyCode&&this.changeVerifyCode();this.reuseTabService.clear()},()=>{this.loading=!1})}changeVerifyCode(){this.verifyCodeMark=Math.ceil(Math.random()*new Date().getTime()),this.verifyCodeUrl=X.getVerifyCodeUrl(this.verifyCodeMark)}forgot(){this.msg.error(this.i18n.fanyi("login.forget_pwd_hint"))}toLogin(){this.router.navigateByUrl("/passport/login").then(e=>!0)}ngOnDestroy(){}static \u0275fac=function(t){return new(t||o)(h(ui),h(X),h(oe),h(be),h(Se),h(Ae,8),h(Ve),h(_n))};static \u0275cmp=k({type:o,selectors:[["passport-login"]],inputs:{modelFun:"modelFun"},standalone:!1,features:[an([pn])],decls:38,vars:29,consts:[["accountTip",""],["controlPwd",""],["pwdTip",""],[2,"margin-bottom","26px","text-align","center"],["nz-form","","role","form",3,"ngSubmit","formGroup"],[1,"mb-lg",3,"nzType","nzMessage","nzShowIcon"],[3,"hidden"],["nzSize","large","nzPrefixIcon","apartment"],["nz-input","","formControlName","tenantCode",3,"placeholder"],[3,"nzErrorTip"],["nzSize","large","nzPrefixIcon","user"],["nz-input","","formControlName","userName",3,"placeholder"],["nzSize","large","nzPrefixIcon","lock",3,"nzAddOnAfter"],["nz-input","","formControlName","password",3,"type","placeholder"],[1,"text-left",3,"nzSpan"],[1,"forgot",3,"href"],[1,"text-right",3,"nzSpan"],[1,"forgot",3,"click"],[2,"margin-bottom","0"],["nz-button","","type","submit","nzType","primary","nzSize","large",2,"display","block","width","100%",3,"nzLoading"],[2,"text-align","center","margin-top","16px"],[1,"fa","fa-eye-slash","point",3,"click","hidden"],[1,"fa","fa-eye","point",3,"click","hidden"],["nzSize","large"],["nz-input","","type","text","formControlName","verifyCode",3,"maxLength","placeholder"],[2,"position","absolute","z-index","9","right","1px","top","1px",3,"click","src","alt"],[3,"click"]],template:function(t,n){if(t&1){let r=N();d(0,"h3",3),S(1),w(2,"translate"),p(),d(3,"form",4),b("ngSubmit",function(){return T(r),x(n.submit())}),y(4,sf,1,3,"nz-alert",5),d(5,"nz-form-item",6)(6,"nz-form-control")(7,"nz-input-group",7),g(8,"input",8),p()()(),d(9,"nz-form-item")(10,"nz-form-control",9)(11,"nz-input-group",10),g(12,"input",11),w(13,"translate"),p(),O(14,cf,1,1,"ng-template",null,0,j),p()(),d(16,"nz-form-item")(17,"nz-form-control",9)(18,"nz-input-group",12),g(19,"input",13),w(20,"translate"),p(),O(21,df,2,2,"ng-template",null,1,j)(23,mf,1,1,"ng-template",null,2,j),p()(),y(25,uf,7,8,"nz-form-item"),d(26,"nz-form-item")(27,"nz-col",14),y(28,ff,3,4,"a",15),p(),d(29,"nz-col",16)(30,"a",17),b("click",function(){return T(r),x(n.forgot())}),S(31),w(32,"translate"),p()()(),d(33,"nz-form-item",18)(34,"button",19),S(35),w(36,"translate"),p()(),y(37,gf,2,1,"p",20),p()}if(t&2){let r=R(15),a=R(22),s=R(24);l(),F(z(2,19,n.tenantDomainInfo?"login.account_pwd_login":"tenant.login")),l(2),u("formGroup",n.form),l(),C(n.error?4:-1),l(),u("hidden",n.tenantDomainInfo),l(3),u("placeholder","\u4F01\u4E1AID"),l(2),u("nzErrorTip",r),l(2),u("placeholder",z(13,21,"login.account")),l(5),u("nzErrorTip",s),l(),u("nzAddOnAfter",a),l(),u("type",n.passwordType)("placeholder",z(20,23,"login.pwd")),l(6),C(n.useVerifyCode?25:-1),l(2),u("nzSpan",12),l(),C(n.registerPage?28:-1),l(),u("nzSpan",12),l(2),F(z(32,25,"login.forget_pwd")),l(3),u("nzLoading",n.loading),l(),H("",z(36,27,"login.button")," "),l(2),C(n.tenantDomainInfo?-1:37)}},dependencies:[di,He,ze,ci,pi,mi,nt,ae,ri,hi,fi,Pt,Ue,ot,Ci,yi,vi,Te],styles:["[_nghost-%COMP%]{display:block;max-width:368px;margin:0 auto}[_nghost-%COMP%] .ant-input-affix-wrapper .ant-input:not(:first-child){padding-left:8px}[_nghost-%COMP%] .icon{font-size:24px;color:#0003;margin-left:16px;vertical-align:middle;cursor:pointer;transition:color .3s}[_nghost-%COMP%] .icon:hover{color:#1890ff}"]})}return o})();var lt=import("./chunk-EC3LSKDA.js"),Tc=[{path:"",component:Mr,data:{title:"\u9996\u9875"}},{path:"exception",loadChildren:()=>import("./chunk-H4RCLKSS.js").then(o=>o.ExceptionModule)},{path:"site/:url",component:Dr},{path:"flow",loadChildren:()=>import("./chunk-PFSSA5PL.js").then(o=>o.FlowModule)},{path:"cube",loadChildren:()=>import("./chunk-KHD4RDEA.js").then(o=>o.CubeModule)},{path:"build",loadChildren:()=>import("./chunk-3XRUS2OX.js").then(o=>o.EruptModule)},{path:"bi/:name",loadChildren:()=>import("./chunk-SM3KFG5B.js").then(o=>o.BiModule),pathMatch:"full"},{path:"tpl/:name",pathMatch:"full",loadChildren:()=>lt.then(o=>o.TplModule)},{path:"tpl/:name/:name2",pathMatch:"full",loadChildren:()=>lt.then(o=>o.TplModule)},{path:"tpl/:name/:name2/:name3",pathMatch:"full",loadChildren:()=>lt.then(o=>o.TplModule)},{path:"tpl/:name/:name2/:name3/:name4",pathMatch:"full",loadChildren:()=>lt.then(o=>o.TplModule)},{path:"tpl/:name/:name2/:name3/:name4/:name5",pathMatch:"full",loadChildren:()=>lt.then(o=>o.TplModule)},{path:"mtpl/:name",pathMatch:"full",data:{micro:!0},loadChildren:()=>lt.then(o=>o.TplModule)},{path:"mtpl/:name/:name2",pathMatch:"full",data:{micro:!0},loadChildren:()=>lt.then(o=>o.TplModule)},{path:"mtpl/:name/:name2/:name3",pathMatch:"full",data:{micro:!0},loadChildren:()=>lt.then(o=>o.TplModule)},{path:"mtpl/:name/:name2/:name3/:name4",pathMatch:"full",data:{micro:!0},loadChildren:()=>lt.then(o=>o.TplModule)},{path:"mtpl/:name/:name2/:name3/:name4/:name5",pathMatch:"full",data:{micro:!0},loadChildren:()=>lt.then(o=>o.TplModule)}],_f=[{path:"",component:zr,children:Tc},{path:"passport",component:dr,children:[{path:"login",component:Er,data:{title:"Login"}},{path:"tenant",component:Ir,data:{title:"Login"}}]},{path:"fill",component:Nr,children:Tc},{path:"403",component:Os,data:{title:"403"}},{path:"404",component:Vs,data:{title:"404"}},{path:"500",component:Rs,data:{title:"500"}},{path:"**",redirectTo:""}],xc=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({providers:[zo],imports:[Re.forRoot(_f,{useHash:Be.useHash,scrollPositionRestoration:"top",preloadingStrategy:zo}),Re]})}return o})();var wc=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[xi,xc,po]})}return o})();var yf=[],zc=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o});static \u0275inj=K({imports:[Re.forRoot(yf,{useHash:Be.useHash,onSameUrlNavigation:"reload"}),Re]})}return o})();var Cf=[Ma],vf=(()=>{class o{intercept(e,t){return za(e,n=>t.handle(n))}static \u0275fac=function(t){return new(t||o)};static \u0275prov=pt({token:o,factory:o.\u0275fac})}return o})(),Sf=[{provide:So,useClass:vf,multi:!0},{provide:So,useClass:as,multi:!0}];function bf(o){return()=>o.load()}var Tf=[Mo,{provide:Jr,useFactory:bf,deps:[Mo],multi:!0}],Ec=(()=>{class o{static \u0275fac=function(t){return new(t||o)};static \u0275mod=G({type:o,bootstrap:[Bl]});static \u0275inj=K({providers:[...Sf,...Tf,Se,bi],imports:[ln,Ol,ua,jl.forRoot(),Hl,xi,po,wc,Cf,zc]})}return o})();function Mc(){let o=document.querySelector("body"),i=document.querySelector(".preloader");if(i&&o){let e=window;e.SW&&(e.SW.stop(),e.SW=null),i.addEventListener("transitionend",()=>{i.className="preloader-hidden",o.style.overflow=""}),i.className+=" preloader-hidden-add preloader-hidden-add-active",setTimeout(()=>{i.className="preloader-hidden",o.style.overflow=""},1e3)}}Be.production&&void 0;ma().bootstrapModule(Ec,{defaultEncapsulation:Gr.Emulated}).then(o=>{let i=window;return i&&i.appBootstrap&&i.appBootstrap(),Mc(),o}).catch(o=>{console.error(o),Mc()}); diff --git a/erupt-web/src/main/resources/public/main.0a93e21184cdba22.js b/erupt-web/src/main/resources/public/main.0a93e21184cdba22.js deleted file mode 100644 index d45657f42..000000000 --- a/erupt-web/src/main/resources/public/main.0a93e21184cdba22.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkerupt=self.webpackChunkerupt||[]).push([[792],{4709:($t,Be,s)=>{s.d(Be,{H:()=>G,K6:()=>a,Me:()=>K,N8:()=>Z,Ob:()=>V,YL:()=>u,_:()=>e,fW:()=>O,g8:()=>De,n6:()=>q,oS:()=>_e,wE:()=>ae});var n=s(9785);function e(re,Ie,Te){return{r:255*(0,n.Cg)(re,255),g:255*(0,n.Cg)(Ie,255),b:255*(0,n.Cg)(Te,255)}}function a(re,Ie,Te){re=(0,n.Cg)(re,255),Ie=(0,n.Cg)(Ie,255),Te=(0,n.Cg)(Te,255);const Fe=Math.max(re,Ie,Te),$=Math.min(re,Ie,Te);let X=0,w=0;const R=(Fe+$)/2;if(Fe===$)w=0,X=0;else{const F=Fe-$;switch(w=R>.5?F/(2-Fe-$):F/(Fe+$),Fe){case re:X=(Ie-Te)/F+(Ie1&&(Te-=1),Te<1/6?re+6*Te*(Ie-re):Te<.5?Ie:Te<2/3?re+(Ie-re)*(2/3-Te)*6:re}function u(re,Ie,Te){let Fe,$,X;if(re=(0,n.Cg)(re,360),Ie=(0,n.Cg)(Ie,100),Te=(0,n.Cg)(Te,100),0===Ie)$=Te,X=Te,Fe=Te;else{const w=Te<.5?Te*(1+Ie):Te+Ie-Te*Ie,R=2*Te-w;Fe=o(R,w,re+1/3),$=o(R,w,re),X=o(R,w,re-1/3)}return{r:255*Fe,g:255*$,b:255*X}}function ae(re,Ie,Te){re=(0,n.Cg)(re,255),Ie=(0,n.Cg)(Ie,255),Te=(0,n.Cg)(Te,255);const Fe=Math.max(re,Ie,Te),$=Math.min(re,Ie,Te);let X=0;const w=Fe,R=Fe-$,F=0===Fe?0:R/Fe;if(Fe===$)X=0;else{switch(Fe){case re:X=(Ie-Te)/R+(Ie>16,g:(65280&re)>>8,b:255&re}}},6681:($t,Be,s)=>{s.d(Be,{D:()=>n});const n={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}},4215:($t,Be,s)=>{s.d(Be,{RO:()=>o});var n=s(4709),e=s(6681),a=s(9785);function o(j){let q={r:0,g:0,b:0},De=1,_e=null,re=null,Ie=null,Te=!1,Fe=!1;return"string"==typeof j&&(j=function O(j){if(0===(j=j.trim().toLowerCase()).length)return!1;let q=!1;if(e.D[j])j=e.D[j],q=!0;else if("transparent"===j)return{r:0,g:0,b:0,a:0,format:"name"};let De=U.rgb.exec(j);return De?{r:De[1],g:De[2],b:De[3]}:(De=U.rgba.exec(j),De?{r:De[1],g:De[2],b:De[3],a:De[4]}:(De=U.hsl.exec(j),De?{h:De[1],s:De[2],l:De[3]}:(De=U.hsla.exec(j),De?{h:De[1],s:De[2],l:De[3],a:De[4]}:(De=U.hsv.exec(j),De?{h:De[1],s:De[2],v:De[3]}:(De=U.hsva.exec(j),De?{h:De[1],s:De[2],v:De[3],a:De[4]}:(De=U.cmyk.exec(j),De?{c:De[1],m:De[2],y:De[3],k:De[4]}:(De=U.hex8.exec(j),De?{r:(0,n.g8)(De[1]),g:(0,n.g8)(De[2]),b:(0,n.g8)(De[3]),a:(0,n.n6)(De[4]),format:q?"name":"hex8"}:(De=U.hex6.exec(j),De?{r:(0,n.g8)(De[1]),g:(0,n.g8)(De[2]),b:(0,n.g8)(De[3]),format:q?"name":"hex"}:(De=U.hex4.exec(j),De?{r:(0,n.g8)(De[1]+De[1]),g:(0,n.g8)(De[2]+De[2]),b:(0,n.g8)(De[3]+De[3]),a:(0,n.n6)(De[4]+De[4]),format:q?"name":"hex8"}:(De=U.hex3.exec(j),!!De&&{r:(0,n.g8)(De[1]+De[1]),g:(0,n.g8)(De[2]+De[2]),b:(0,n.g8)(De[3]+De[3]),format:q?"name":"hex"}))))))))))}(j)),"object"==typeof j&&(Z(j.r)&&Z(j.g)&&Z(j.b)?(q=(0,n._)(j.r,j.g,j.b),Te=!0,Fe="%"===String(j.r).substr(-1)?"prgb":"rgb"):Z(j.h)&&Z(j.s)&&Z(j.v)?(_e=(0,a.Px)(j.s),re=(0,a.Px)(j.v),q=(0,n.Me)(j.h,_e,re),Te=!0,Fe="hsv"):Z(j.h)&&Z(j.s)&&Z(j.l)?(_e=(0,a.Px)(j.s),Ie=(0,a.Px)(j.l),q=(0,n.YL)(j.h,_e,Ie),Te=!0,Fe="hsl"):Z(j.c)&&Z(j.m)&&Z(j.y)&&Z(j.k)&&(q=(0,n.fW)(j.c,j.m,j.y,j.k),Te=!0,Fe="cmyk"),Object.prototype.hasOwnProperty.call(j,"a")&&(De=j.a)),De=(0,a.TV)(De),{ok:Te,format:j.format||Fe,r:Math.min(255,Math.max(q.r,0)),g:Math.min(255,Math.max(q.g,0)),b:Math.min(255,Math.max(q.b,0)),a:De}}const K="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)",V="[\\s|\\(]+("+K+")[,|\\s]+("+K+")[,|\\s]+("+K+")\\s*\\)?",G="[\\s|\\(]+("+K+")[,|\\s]+("+K+")[,|\\s]+("+K+")[,|\\s]+("+K+")\\s*\\)?",U={CSS_UNIT:new RegExp(K),rgb:new RegExp("rgb"+V),rgba:new RegExp("rgba"+G),hsl:new RegExp("hsl"+V),hsla:new RegExp("hsla"+G),hsv:new RegExp("hsv"+V),hsva:new RegExp("hsva"+G),cmyk:new RegExp("cmyk"+G),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Z(j){return"number"==typeof j?!Number.isNaN(j):U.CSS_UNIT.test(j)}},9785:($t,Be,s)=>{function n(V,G){(function a(V){return"string"==typeof V&&-1!==V.indexOf(".")&&1===parseFloat(V)})(V)&&(V="100%");const U=function o(V){return"string"==typeof V&&-1!==V.indexOf("%")}(V);return V=360===G?V:Math.min(G,Math.max(0,parseFloat(V))),U&&(V=parseInt(String(V*G),10)/100),Math.abs(V-G)<1e-6?1:V=360===G?(V<0?V%G+G:V%G)/parseFloat(String(G)):V%G/parseFloat(String(G))}function e(V){return Math.min(1,Math.max(0,V))}function u(V){return V=parseFloat(V),(isNaN(V)||V<0||V>1)&&(V=1),V}function ae(V){return Number(V)<=1?100*Number(V)+"%":V}function K(V){return 1===V.length?"0"+V:String(V)}s.d(Be,{Cg:()=>n,J$:()=>e,Px:()=>ae,TV:()=>u,wl:()=>K})},8926:($t,Be,s)=>{s.d(Be,{M:()=>n,n:()=>e});var n=function(a){return a.DIALOG="DIALOG",a.MESSAGE="MESSAGE",a.NOTIFY="NOTIFY",a.NONE="NONE",a}(n||{}),e=function(a){return a.INFO="INFO",a.SUCCESS="SUCCESS",a.WARNING="WARNING",a.ERROR="ERROR",a}(e||{})},3497:($t,Be,s)=>{s.d(Be,{Z:()=>e});let n=window.eruptTenantDomainInfo||null;class e{static get(){return n}static put(o){n=o}}},309:($t,Be,s)=>{s.d(Be,{G6:()=>V,RM:()=>U,S5:()=>De,SB:()=>j,T3:()=>q,UN:()=>G,Z5:()=>o,bp:()=>ae,c8:()=>re,eY:()=>e,k$:()=>Z,lV:()=>O,nf:()=>Ie,qi:()=>K,s3:()=>_e,zl:()=>a});var n=s(5957);class e{static{this.erupt=n.y.domain+"erupt-api"}static{this.eruptApp=e.erupt+"/erupt-app"}static{this.domainInfo=e.erupt+"/tenant/domain-info"}static{this.tpl=e.erupt+"/tpl"}static{this.build=e.erupt+"/build"}static{this.data=e.erupt+"/data"}static{this.component=e.erupt+"/comp"}static{this.dataModify=e.data+"/modify"}static{this.comp=e.erupt+"/comp"}static{this.excel=e.erupt+"/excel"}static{this.file=e.erupt+"/file"}static{this.eruptAttachment=n.y.domain+"erupt-attachment"}static{this.bi=e.erupt+"/bi"}}var a=function(Te){return Te.INPUT="INPUT",Te.NUMBER="NUMBER",Te.COLOR="COLOR",Te.TEXTAREA="TEXTAREA",Te.CHOICE="CHOICE",Te.MULTI_CHOICE="MULTI_CHOICE",Te.TAGS="TAGS",Te.DATE="DATE",Te.COMBINE="COMBINE",Te.REFERENCE_TABLE="REFERENCE_TABLE",Te.REFERENCE_TREE="REFERENCE_TREE",Te.BOOLEAN="BOOLEAN",Te.ATTACHMENT="ATTACHMENT",Te.AUTO_COMPLETE="AUTO_COMPLETE",Te.TAB_TREE="TAB_TREE",Te.TAB_TABLE_ADD="TAB_TABLE_ADD",Te.TAB_TABLE_REFER="TAB_TABLE_REFER",Te.DIVIDE="DIVIDE",Te.SLIDER="SLIDER",Te.RATE="RATE",Te.CHECKBOX="CHECKBOX",Te.EMPTY="EMPTY",Te.TPL="TPL",Te.MARKDOWN="MARKDOWN",Te.HTML_EDITOR="HTML_EDITOR",Te.MAP="MAP",Te.CODE_EDITOR="CODE_EDITOR",Te.SIGNATURE="SIGNATURE",Te}(a||{}),o=function(Te){return Te.ADD="add",Te.EDIT="edit",Te.VIEW="view",Te}(o||{}),ae=function(Te){return Te.CKEDITOR="CKEDITOR",Te.UEDITOR="UEDITOR",Te}(ae||{}),K=function(Te){return Te.TEXT="TEXT",Te.COLOR="COLOR",Te.SAFE_TEXT="SAFE_TEXT",Te.LINK="LINK",Te.TAB_VIEW="TAB_VIEW",Te.LINK_DIALOG="LINK_DIALOG",Te.IMAGE="IMAGE",Te.IMAGE_BASE64="IMAGE_BASE64",Te.SWF="SWF",Te.DOWNLOAD="DOWNLOAD",Te.ATTACHMENT_DIALOG="ATTACHMENT_DIALOG",Te.ATTACHMENT="ATTACHMENT",Te.MOBILE_HTML="MOBILE_HTML",Te.QR_CODE="QR_CODE",Te.MAP="MAP",Te.CODE="CODE",Te.HTML="HTML",Te.DATE="DATE",Te.DATE_TIME="DATE_TIME",Te.BOOLEAN="BOOLEAN",Te.NUMBER="NUMBER",Te.MARKDOWN="MARKDOWN",Te.HIDDEN="HIDDEN",Te}(K||{}),V=function(Te){return Te.DATE="DATE",Te.TIME="TIME",Te.DATE_TIME="DATE_TIME",Te.WEEK="WEEK",Te.MONTH="MONTH",Te.YEAR="YEAR",Te}(V||{}),G=function(Te){return Te.ALL="ALL",Te.FUTURE="FUTURE",Te.HISTORY="HISTORY",Te}(G||{}),U=function(Te){return Te.IMAGE="IMAGE",Te.BASE="BASE",Te}(U||{}),O=function(Te){return Te.RADIO="RADIO",Te.SELECT="SELECT",Te}(O||{}),Z=function(Te){return Te.SELECT="SELECT",Te.CHECKBOX="CHECKBOX",Te}(Z||{}),j=function(Te){return Te.checkbox="checkbox",Te.radio="radio",Te}(j||{}),q=function(Te){return Te.SINGLE="SINGLE",Te.MULTI="MULTI",Te.BUTTON="BUTTON",Te.MULTI_ONLY="MULTI_ONLY",Te}(q||{}),De=function(Te){return Te.ERUPT="ERUPT",Te.TPL="TPL",Te}(De||{}),_e=function(Te){return Te.HIDE="HIDE",Te.DISABLE="DISABLE",Te}(_e||{}),re=function(Te){return Te.DEFAULT="DEFAULT",Te.FULL_LINE="FULL_LINE",Te}(re||{}),Ie=function(Te){return Te.BACKEND="BACKEND",Te.FRONT="FRONT",Te.NONE="NONE",Te}(Ie||{})},6619:($t,Be,s)=>{s.d(Be,{S:()=>ic});var n=s(177);const e=void 0,o=["en",[["a","p"],["AM","PM"],e],[["AM","PM"],e,e],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],e,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],e,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",e,"{1} 'at' {0}",e],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function a(Pn){const wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length;return 1===wn&&0===Mn?1:5}],u=void 0,K=["zh",[["\u4e0a\u5348","\u4e0b\u5348"],u,u],u,[["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"]],u,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"]],u,[["\u516c\u5143\u524d","\u516c\u5143"],u,u],0,[6,0],["y/M/d","y\u5e74M\u6708d\u65e5",u,"y\u5e74M\u6708d\u65e5EEEE"],["HH:mm","HH:mm:ss","z HH:mm:ss","zzzz HH:mm:ss"],["{1} {0}",u,u,u],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"CNY","\xa5","\u4eba\u6c11\u5e01",{AUD:["AU$","$"],BYN:[u,"\u0440."],CNY:["\xa5"],ILR:["ILS"],JPY:["JP\xa5","\xa5"],KRW:["\uffe6","\u20a9"],PHP:[u,"\u20b1"],RUR:[u,"\u0440."],TWD:["NT$"],USD:["US$","$"],XXX:[]},"ltr",function ae(Pn){return 5}],V=void 0,U=["fr",[["AM","PM"],V,V],V,[["D","L","M","M","J","V","S"],["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],["di","lu","ma","me","je","ve","sa"]],V,[["J","F","M","A","M","J","J","A","S","O","N","D"],["janv.","f\xe9vr.","mars","avr.","mai","juin","juil.","ao\xfbt","sept.","oct.","nov.","d\xe9c."],["janvier","f\xe9vrier","mars","avril","mai","juin","juillet","ao\xfbt","septembre","octobre","novembre","d\xe9cembre"]],V,[["av. J.-C.","ap. J.-C."],V,["avant J\xe9sus-Christ","apr\xe8s J\xe9sus-Christ"]],1,[6,0],["dd/MM/y","d MMM y","d MMMM y","EEEE d MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}","{1}, {0}","{1} '\xe0' {0}",V],[",","\u202f",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"EUR","\u20ac","euro",{ARS:["$AR","$"],AUD:["$AU","$"],BEF:["FB"],BMD:["$BM","$"],BND:["$BN","$"],BYN:[V,"\u0440."],BZD:["$BZ","$"],CAD:["$CA","$"],CLP:["$CL","$"],CNY:[V,"\xa5"],COP:["$CO","$"],CYP:["\xa3CY"],EGP:[V,"\xa3E"],FJD:["$FJ","$"],FKP:["\xa3FK","\xa3"],FRF:["F"],GBP:["\xa3GB","\xa3"],GIP:["\xa3GI","\xa3"],HKD:[V,"$"],IEP:["\xa3IE"],ILP:["\xa3IL"],ITL:["\u20a4IT"],JPY:[V,"\xa5"],KMF:[V,"FC"],LBP:["\xa3LB","\xa3L"],MTP:["\xa3MT"],MXN:["$MX","$"],NAD:["$NA","$"],NIO:[V,"$C"],NZD:["$NZ","$"],PHP:[V,"\u20b1"],RHD:["$RH"],RON:[V,"L"],RWF:[V,"FR"],SBD:["$SB","$"],SGD:["$SG","$"],SRD:["$SR","$"],TOP:[V,"$T"],TTD:["$TT","$"],TWD:[V,"NT$"],USD:["$US","$"],UYU:["$UY","$"],WST:["$WS"],XCD:[V,"$"],XPF:["FCFP"],ZMW:[V,"Kw"]},"ltr",function G(Pn){const wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length,kn=parseInt(Pn.toString().replace(/^[^e]*(e([-+]?\d+))?/,"$2"))||0;return 0===wn||1===wn?1:0===kn&&0!==wn&&wn%1e6==0&&0===Mn||!(kn>=0&&kn<=5)?4:5}],O=void 0,j=["es",[["a.\xa0m.","p.\xa0m."],O,O],O,[["D","L","M","X","J","V","S"],["dom","lun","mar","mi\xe9","jue","vie","s\xe1b"],["domingo","lunes","martes","mi\xe9rcoles","jueves","viernes","s\xe1bado"],["DO","LU","MA","MI","JU","VI","SA"]],O,[["E","F","M","A","M","J","J","A","S","O","N","D"],["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]],O,[["a. C.","d. C."],O,["antes de Cristo","despu\xe9s de Cristo"]],1,[6,0],["d/M/yy","d MMM y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["H:mm","H:mm:ss","H:mm:ss z","H:mm:ss (zzzz)"],["{1}, {0}",O,O,O],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"EUR","\u20ac","euro",{AUD:[O,"$"],BRL:[O,"R$"],BYN:[O,"\u0440."],CAD:[O,"$"],CNY:[O,"\xa5"],EGP:[],ESP:["\u20a7"],GBP:[O,"\xa3"],HKD:[O,"$"],ILS:[O,"\u20aa"],INR:[O,"\u20b9"],JPY:[O,"\xa5"],KRW:[O,"\u20a9"],MXN:[O,"$"],NZD:[O,"$"],PHP:[O,"\u20b1"],RON:[O,"L"],THB:["\u0e3f"],TWD:[O,"NT$"],USD:["US$","$"],XAF:[],XCD:[O,"$"],XOF:[]},"ltr",function Z(Pn){const cn=Pn,wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length,kn=parseInt(Pn.toString().replace(/^[^e]*(e([-+]?\d+))?/,"$2"))||0;return 1===cn?1:0===kn&&0!==wn&&wn%1e6==0&&0===Mn||!(kn>=0&&kn<=5)?4:5}],q=void 0,_e=["ru",[["AM","PM"],q,q],q,[["\u0412","\u041f","\u0412","\u0421","\u0427","\u041f","\u0421"],["\u0432\u0441","\u043f\u043d","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043f\u0442","\u0441\u0431"],["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0432\u0442\u043e\u0440\u043d\u0438\u043a","\u0441\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043f\u044f\u0442\u043d\u0438\u0446\u0430","\u0441\u0443\u0431\u0431\u043e\u0442\u0430"],["\u0432\u0441","\u043f\u043d","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043f\u0442","\u0441\u0431"]],q,[["\u042f","\u0424","\u041c","\u0410","\u041c","\u0418","\u0418","\u0410","\u0421","\u041e","\u041d","\u0414"],["\u044f\u043d\u0432.","\u0444\u0435\u0432\u0440.","\u043c\u0430\u0440.","\u0430\u043f\u0440.","\u043c\u0430\u044f","\u0438\u044e\u043d.","\u0438\u044e\u043b.","\u0430\u0432\u0433.","\u0441\u0435\u043d\u0442.","\u043e\u043a\u0442.","\u043d\u043e\u044f\u0431.","\u0434\u0435\u043a."],["\u044f\u043d\u0432\u0430\u0440\u044f","\u0444\u0435\u0432\u0440\u0430\u043b\u044f","\u043c\u0430\u0440\u0442\u0430","\u0430\u043f\u0440\u0435\u043b\u044f","\u043c\u0430\u044f","\u0438\u044e\u043d\u044f","\u0438\u044e\u043b\u044f","\u0430\u0432\u0433\u0443\u0441\u0442\u0430","\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f","\u043e\u043a\u0442\u044f\u0431\u0440\u044f","\u043d\u043e\u044f\u0431\u0440\u044f","\u0434\u0435\u043a\u0430\u0431\u0440\u044f"]],[["\u042f","\u0424","\u041c","\u0410","\u041c","\u0418","\u0418","\u0410","\u0421","\u041e","\u041d","\u0414"],["\u044f\u043d\u0432.","\u0444\u0435\u0432\u0440.","\u043c\u0430\u0440\u0442","\u0430\u043f\u0440.","\u043c\u0430\u0439","\u0438\u044e\u043d\u044c","\u0438\u044e\u043b\u044c","\u0430\u0432\u0433.","\u0441\u0435\u043d\u0442.","\u043e\u043a\u0442.","\u043d\u043e\u044f\u0431.","\u0434\u0435\u043a."],["\u044f\u043d\u0432\u0430\u0440\u044c","\u0444\u0435\u0432\u0440\u0430\u043b\u044c","\u043c\u0430\u0440\u0442","\u0430\u043f\u0440\u0435\u043b\u044c","\u043c\u0430\u0439","\u0438\u044e\u043d\u044c","\u0438\u044e\u043b\u044c","\u0430\u0432\u0433\u0443\u0441\u0442","\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u043e\u043a\u0442\u044f\u0431\u0440\u044c","\u043d\u043e\u044f\u0431\u0440\u044c","\u0434\u0435\u043a\u0430\u0431\u0440\u044c"]],[["\u0434\u043e \u043d.\u044d.","\u043d.\u044d."],["\u0434\u043e \u043d. \u044d.","\u043d. \u044d."],["\u0434\u043e \u0420\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0430 \u0425\u0440\u0438\u0441\u0442\u043e\u0432\u0430","\u043e\u0442 \u0420\u043e\u0436\u0434\u0435\u0441\u0442\u0432\u0430 \u0425\u0440\u0438\u0441\u0442\u043e\u0432\u0430"]],1,[6,0],["dd.MM.y","d MMM y '\u0433'.","d MMMM y '\u0433'.","EEEE, d MMMM y '\u0433'."],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",q,q,q],[",","\xa0",";","%","+","-","E","\xd7","\u2030","\u221e","\u043d\u0435\xa0\u0447\u0438\u0441\u043b\u043e",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"RUB","\u20bd","\u0440\u043e\u0441\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u0440\u0443\u0431\u043b\u044c",{BYN:[q,"\u0440."],GEL:[q,"\u10da"],PHP:[q,"\u20b1"],RON:[q,"L"],RUB:["\u20bd"],RUR:["\u0440."],THB:["\u0e3f"],TMT:["\u0422\u041c\u0422"],TWD:["NT$"],UAH:["\u20b4"],XXX:["XXXX"]},"ltr",function De(Pn){const wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length;return 0===Mn&&wn%10==1&&wn%100!=11?1:0===Mn&&wn%10===Math.floor(wn%10)&&wn%10>=2&&wn%10<=4&&!(wn%100>=12&&wn%100<=14)?3:0===Mn&&wn%10==0||0===Mn&&wn%10===Math.floor(wn%10)&&wn%10>=5&&wn%10<=9||0===Mn&&wn%100===Math.floor(wn%100)&&wn%100>=11&&wn%100<=14?4:5}],re=void 0,Te=["zh-Hant",[["\u4e0a\u5348","\u4e0b\u5348"],re,re],re,[["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],["\u9031\u65e5","\u9031\u4e00","\u9031\u4e8c","\u9031\u4e09","\u9031\u56db","\u9031\u4e94","\u9031\u516d"],["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]],re,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],re],re,[["\u897f\u5143\u524d","\u897f\u5143"],re,re],0,[6,0],["y/M/d","y\u5e74M\u6708d\u65e5",re,"y\u5e74M\u6708d\u65e5 EEEE"],["Bh:mm","Bh:mm:ss","Bh:mm:ss [z]","Bh:mm:ss [zzzz]"],["{1} {0}",re,re,re],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","\u975e\u6578\u503c",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"TWD","$","\u65b0\u53f0\u5e63",{AUD:["AU$","$"],BYN:[re,"\u0440."],KRW:["\uffe6","\u20a9"],PHP:[re,"\u20b1"],RON:[re,"L"],RUR:[re,"\u0440."],TWD:["$"],USD:["US$","$"],XXX:[]},"ltr",function Ie(Pn){return 5}],Fe=void 0,X=["ko",[["AM","PM"],Fe,["\uc624\uc804","\uc624\ud6c4"]],Fe,[["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],Fe,["\uc77c\uc694\uc77c","\uc6d4\uc694\uc77c","\ud654\uc694\uc77c","\uc218\uc694\uc77c","\ubaa9\uc694\uc77c","\uae08\uc694\uc77c","\ud1a0\uc694\uc77c"],["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"]],Fe,[["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"],Fe,Fe],Fe,[["BC","AD"],Fe,["\uae30\uc6d0\uc804","\uc11c\uae30"]],0,[6,0],["yy. M. d.","y. M. d.","y\ub144 M\uc6d4 d\uc77c","y\ub144 M\uc6d4 d\uc77c EEEE"],["a h:mm","a h:mm:ss","a h\uc2dc m\ubd84 s\ucd08 z","a h\uc2dc m\ubd84 s\ucd08 zzzz"],["{1} {0}",Fe,Fe,Fe],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"KRW","\u20a9","\ub300\ud55c\ubbfc\uad6d \uc6d0",{AUD:["AU$","$"],BYN:[Fe,"\u0440."],JPY:["JP\xa5","\xa5"],PHP:[Fe,"\u20b1"],RON:[Fe,"L"],TWD:["NT$"],USD:["US$","$"]},"ltr",function $(Pn){return 5}],w=void 0,F=["ja",[["\u5348\u524d","\u5348\u5f8c"],w,w],w,[["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],w,["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"],["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"]],w,[["1","2","3","4","5","6","7","8","9","10","11","12"],["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],w],w,[["BC","AD"],["\u7d00\u5143\u524d","\u897f\u66a6"],w],0,[6,0],["y/MM/dd",w,"y\u5e74M\u6708d\u65e5","y\u5e74M\u6708d\u65e5EEEE"],["H:mm","H:mm:ss","H:mm:ss z","H\u6642mm\u5206ss\u79d2 zzzz"],["{1} {0}",w,w,w],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"JPY","\uffe5","\u65e5\u672c\u5186",{BYN:[w,"\u0440."],CNY:["\u5143","\uffe5"],JPY:["\uffe5"],PHP:[w,"\u20b1"],RON:[w,"\u30ec\u30a4"],XXX:[]},"ltr",function R(Pn){return 5}],ve=void 0,nt=["de",[["AM","PM"],ve,ve],ve,[["S","M","D","M","D","F","S"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["S","M","D","M","D","F","S"],["So","Mo","Di","Mi","Do","Fr","Sa"],["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan.","Feb.","M\xe4rz","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]],[["v. Chr.","n. Chr."],ve,ve],1,[6,0],["dd.MM.yy","dd.MM.y","d. MMMM y","EEEE, d. MMMM y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1}, {0}",ve,"{1} 'um' {0}",ve],[",",".",";","%","+","-","E","\xb7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0\xa0%","#,##0.00\xa0\xa4","#E0"],"EUR","\u20ac","Euro",{ATS:["\xf6S"],AUD:["AU$","$"],BGM:["BGK"],BGO:["BGJ"],BYN:[ve,"\u0440."],CUC:[ve,"Cub$"],DEM:["DM"],FKP:[ve,"Fl\xa3"],GHS:[ve,"\u20b5"],GNF:[ve,"F.G."],KMF:[ve,"FC"],PHP:[ve,"\u20b1"],RON:[ve,"L"],RUR:[ve,"\u0440."],RWF:[ve,"F.Rw"],SYP:[],THB:["\u0e3f"],TWD:["NT$"],XXX:[],ZMW:[ve,"K"]},"ltr",function at(Pn){const wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length;return 1===wn&&0===Mn?1:5}],Mt=void 0,et=["pt",[["AM","PM"],Mt,Mt],Mt,[["D","S","T","Q","Q","S","S"],["dom.","seg.","ter.","qua.","qui.","sex.","s\xe1b."],["domingo","segunda-feira","ter\xe7a-feira","quarta-feira","quinta-feira","sexta-feira","s\xe1bado"],["dom.","seg.","ter.","qua.","qui.","sex.","s\xe1b."]],Mt,[["J","F","M","A","M","J","J","A","S","O","N","D"],["jan.","fev.","mar.","abr.","mai.","jun.","jul.","ago.","set.","out.","nov.","dez."],["janeiro","fevereiro","mar\xe7o","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]],Mt,[["a.C.","d.C."],Mt,["antes de Cristo","depois de Cristo"]],0,[6,0],["dd/MM/y","d 'de' MMM 'de' y","d 'de' MMMM 'de' y","EEEE, d 'de' MMMM 'de' y"],["HH:mm","HH:mm:ss","HH:mm:ss z","HH:mm:ss zzzz"],["{1} {0}",Mt,Mt,Mt],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4\xa0#,##0.00","#E0"],"BRL","R$","Real brasileiro",{AUD:["AU$","$"],BYN:[Mt,"\u0440."],JPY:["JP\xa5","\xa5"],PHP:[Mt,"\u20b1"],PTE:["Esc."],RON:[Mt,"L"],SYP:[Mt,"S\xa3"],THB:["\u0e3f"],TWD:["NT$"],USD:["US$","$"]},"ltr",function qe(Pn){const wn=Math.floor(Math.abs(Pn)),Mn=Pn.toString().replace(/^[^.]*\.?/,"").length,kn=parseInt(Pn.toString().replace(/^[^e]*(e([-+]?\d+))?/,"$2"))||0;return wn===Math.floor(wn)&&wn>=0&&wn<=1?1:0===kn&&0!==wn&&wn%1e6==0&&0===Mn||!(kn>=0&&kn<=5)?4:5}],rt=void 0,$e=["id",[["AM","PM"],rt,rt],rt,[["M","S","S","R","K","J","S"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"],["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],["Min","Sen","Sel","Rab","Kam","Jum","Sab"]],rt,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]],rt,[["SM","M"],rt,["Sebelum Masehi","Masehi"]],0,[6,0],["dd/MM/yy","d MMM y","d MMMM y","EEEE, dd MMMM y"],["HH.mm","HH.mm.ss","HH.mm.ss z","HH.mm.ss zzzz"],["{1} {0}",rt,rt,rt],[",",".",";","%","+","-","E","\xd7","\u2030","\u221e","NaN","."],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"IDR","Rp","Rupiah Indonesia",{AUD:["AU$","$"],BYN:[rt,"\u0440."],IDR:["Rp"],INR:["Rs","\u20b9"],JPY:["JP\xa5","\xa5"],PHP:[rt,"\u20b1"],THB:["\u0e3f"],TWD:["NT$"],USD:["US$","$"],XXX:[]},"ltr",function Me(Pn){return 5}],ye=void 0,ht=["ar",[["\u0635","\u0645"],ye,ye],[["\u0635","\u0645"],ye,["\u0635\u0628\u0627\u062d\u064b\u0627","\u0645\u0633\u0627\u0621\u064b"]],[["\u062d","\u0646","\u062b","\u0631","\u062e","\u062c","\u0633"],["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"],ye,["\u0623\u062d\u062f","\u0625\u062b\u0646\u064a\u0646","\u062b\u0644\u0627\u062b\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639\u0629","\u0633\u0628\u062a"]],ye,[["\u064a","\u0641","\u0645","\u0623","\u0648","\u0646","\u0644","\u063a","\u0633","\u0643","\u0628","\u062f"],["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],ye],ye,[["\u0642.\u0645","\u0645"],ye,["\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f","\u0645\u064a\u0644\u0627\u062f\u064a"]],6,[5,6],["d\u200f/M\u200f/y","dd\u200f/MM\u200f/y","d MMMM y","EEEE\u060c d MMMM y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",ye,"{1} \u0641\u064a {0}",ye],[".",",",";","\u200e%\u200e","\u200e+","\u200e-","E","\xd7","\u2030","\u221e","\u0644\u064a\u0633\xa0\u0631\u0642\u0645\u064b\u0627",":"],["#,##0.###","#,##0%","\xa4\xa0#,##0.00","#E0"],"EGP","\u062c.\u0645.\u200f","\u062c\u0646\u064a\u0647 \u0645\u0635\u0631\u064a",{AED:["\u062f.\u0625.\u200f"],ARS:[ye,"AR$"],AUD:["AU$"],BBD:[ye,"BB$"],BHD:["\u062f.\u0628.\u200f"],BMD:[ye,"BM$"],BND:[ye,"BN$"],BSD:[ye,"BS$"],BYN:[ye,"\u0440."],BZD:[ye,"BZ$"],CAD:["CA$"],CLP:[ye,"CL$"],CNY:["CN\xa5"],COP:[ye,"CO$"],CUP:[ye,"CU$"],DOP:[ye,"DO$"],DZD:["\u062f.\u062c.\u200f"],EGP:["\u062c.\u0645.\u200f","E\xa3"],FJD:[ye,"FJ$"],GBP:["UK\xa3"],GYD:[ye,"GY$"],HKD:["HK$"],IQD:["\u062f.\u0639.\u200f"],IRR:["\u0631.\u0625."],JMD:[ye,"JM$"],JOD:["\u062f.\u0623.\u200f"],JPY:["JP\xa5"],KWD:["\u062f.\u0643.\u200f"],KYD:[ye,"KY$"],LBP:["\u0644.\u0644.\u200f","L\xa3"],LRD:[ye,"$LR"],LYD:["\u062f.\u0644.\u200f"],MAD:["\u062f.\u0645.\u200f"],MRU:["\u0623.\u0645."],MXN:["MX$"],NZD:["NZ$"],OMR:["\u0631.\u0639.\u200f"],PHP:[ye,"\u20b1"],QAR:["\u0631.\u0642.\u200f"],SAR:["\u0631.\u0633.\u200f"],SBD:[ye,"SB$"],SDD:["\u062f.\u0633.\u200f"],SDG:["\u062c.\u0633."],SRD:[ye,"SR$"],SYP:["\u0644.\u0633.\u200f","\xa3"],THB:["\u0e3f"],TND:["\u062f.\u062a.\u200f"],TTD:[ye,"TT$"],TWD:["NT$"],USD:["US$"],UYU:[ye,"UY$"],YER:["\u0631.\u064a.\u200f"]},"rtl",function vt(Pn){const cn=Pn;return 0===cn?0:1===cn?1:2===cn?2:cn%100===Math.floor(cn%100)&&cn%100>=3&&cn%100<=10?3:cn%100===Math.floor(cn%100)&&cn%100>=11&&cn%100<=99?4:5}];var Ke=s(4275),it=s(2435),Ge={lessThanXSeconds:{one:"\u4e0d\u5230 1 \u79d2",other:"\u4e0d\u5230 {{count}} \u79d2"},xSeconds:{one:"1 \u79d2",other:"{{count}} \u79d2"},halfAMinute:"\u534a\u5206\u949f",lessThanXMinutes:{one:"\u4e0d\u5230 1 \u5206\u949f",other:"\u4e0d\u5230 {{count}} \u5206\u949f"},xMinutes:{one:"1 \u5206\u949f",other:"{{count}} \u5206\u949f"},xHours:{one:"1 \u5c0f\u65f6",other:"{{count}} \u5c0f\u65f6"},aboutXHours:{one:"\u5927\u7ea6 1 \u5c0f\u65f6",other:"\u5927\u7ea6 {{count}} \u5c0f\u65f6"},xDays:{one:"1 \u5929",other:"{{count}} \u5929"},aboutXWeeks:{one:"\u5927\u7ea6 1 \u4e2a\u661f\u671f",other:"\u5927\u7ea6 {{count}} \u4e2a\u661f\u671f"},xWeeks:{one:"1 \u4e2a\u661f\u671f",other:"{{count}} \u4e2a\u661f\u671f"},aboutXMonths:{one:"\u5927\u7ea6 1 \u4e2a\u6708",other:"\u5927\u7ea6 {{count}} \u4e2a\u6708"},xMonths:{one:"1 \u4e2a\u6708",other:"{{count}} \u4e2a\u6708"},aboutXYears:{one:"\u5927\u7ea6 1 \u5e74",other:"\u5927\u7ea6 {{count}} \u5e74"},xYears:{one:"1 \u5e74",other:"{{count}} \u5e74"},overXYears:{one:"\u8d85\u8fc7 1 \u5e74",other:"\u8d85\u8fc7 {{count}} \u5e74"},almostXYears:{one:"\u5c06\u8fd1 1 \u5e74",other:"\u5c06\u8fd1 {{count}} \u5e74"}};var Q=s(1002);const Xe={date:(0,Q.A)({formats:{full:"y'\u5e74'M'\u6708'd'\u65e5' EEEE",long:"y'\u5e74'M'\u6708'd'\u65e5'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})};var ee=s(738),He=s(1511);function ue(Pn,cn,wn){(0,ee.A)(2,arguments);var Mn=(0,He.A)(Pn,wn),kn=(0,He.A)(cn,wn);return Mn.getTime()===kn.getTime()}function te(Pn,cn,wn){var Mn="eeee p";return ue(Pn,cn,wn)?Mn:Pn.getTime()>cn.getTime()?"'\u4e0b\u4e2a'"+Mn:"'\u4e0a\u4e2a'"+Mn}var Pe={lastWeek:te,yesterday:"'\u6628\u5929' p",today:"'\u4eca\u5929' p",tomorrow:"'\u660e\u5929' p",nextWeek:te,other:"PP p"};var mt=s(2816);const Qt={ordinalNumber:function(cn,wn){var Mn=Number(cn);switch(wn?.unit){case"date":return Mn.toString()+"\u65e5";case"hour":return Mn.toString()+"\u65f6";case"minute":return Mn.toString()+"\u5206";case"second":return Mn.toString()+"\u79d2";default:return"\u7b2c "+Mn.toString()}},era:(0,mt.A)({values:{narrow:["\u524d","\u516c\u5143"],abbreviated:["\u524d","\u516c\u5143"],wide:["\u516c\u5143\u524d","\u516c\u5143"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["\u7b2c\u4e00\u5b63","\u7b2c\u4e8c\u5b63","\u7b2c\u4e09\u5b63","\u7b2c\u56db\u5b63"],wide:["\u7b2c\u4e00\u5b63\u5ea6","\u7b2c\u4e8c\u5b63\u5ea6","\u7b2c\u4e09\u5b63\u5ea6","\u7b2c\u56db\u5b63\u5ea6"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],abbreviated:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],wide:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],short:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],abbreviated:["\u5468\u65e5","\u5468\u4e00","\u5468\u4e8c","\u5468\u4e09","\u5468\u56db","\u5468\u4e94","\u5468\u516d"],wide:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\u4e0a",pm:"\u4e0b",midnight:"\u51cc\u6668",noon:"\u5348",morning:"\u65e9",afternoon:"\u4e0b\u5348",evening:"\u665a",night:"\u591c"},abbreviated:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u95f4"},wide:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u95f4"}},defaultWidth:"wide",formattingValues:{narrow:{am:"\u4e0a",pm:"\u4e0b",midnight:"\u51cc\u6668",noon:"\u5348",morning:"\u65e9",afternoon:"\u4e0b\u5348",evening:"\u665a",night:"\u591c"},abbreviated:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u95f4"},wide:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u95f4"}},defaultFormattingWidth:"wide"})};var Ct=s(2528),Wt=s(4382);const Ee={code:"zh-CN",formatDistance:function(cn,wn,Mn){var kn,si=Ge[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?kn+"\u5185":kn+"\u524d":kn},formatLong:Xe,formatRelative:function(cn,wn,Mn,kn){var si=Pe[cn];return"function"==typeof si?si(wn,Mn,kn):si},localize:Qt,match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\u7b2c\s*)?\d+(\u65e5|\u65f6|\u5206|\u79d2)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(\u524d)/i,abbreviated:/^(\u524d)/i,wide:/^(\u516c\u5143\u524d|\u516c\u5143)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(\u524d)/i,/^(\u516c\u5143)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^\u7b2c[\u4e00\u4e8c\u4e09\u56db]\u523b/i,wide:/^\u7b2c[\u4e00\u4e8c\u4e09\u56db]\u523b\u949f/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|\u4e00)/i,/(2|\u4e8c)/i,/(3|\u4e09)/i,/(4|\u56db)/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00])/i,abbreviated:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00]|\d|1[12])\u6708/i,wide:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00])\u6708/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u4e00/i,/^\u4e8c/i,/^\u4e09/i,/^\u56db/i,/^\u4e94/i,/^\u516d/i,/^\u4e03/i,/^\u516b/i,/^\u4e5d/i,/^\u5341(?!(\u4e00|\u4e8c))/i,/^\u5341\u4e00/i,/^\u5341\u4e8c/i],any:[/^\u4e00|1/i,/^\u4e8c|2/i,/^\u4e09|3/i,/^\u56db|4/i,/^\u4e94|5/i,/^\u516d|6/i,/^\u4e03|7/i,/^\u516b|8/i,/^\u4e5d|9/i,/^\u5341(?!(\u4e00|\u4e8c))|10/i,/^\u5341\u4e00|11/i,/^\u5341\u4e8c|12/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,short:/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,abbreviated:/^\u5468[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,wide:/^\u661f\u671f[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/\u65e5/i,/\u4e00/i,/\u4e8c/i,/\u4e09/i,/\u56db/i,/\u4e94/i,/\u516d/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{any:/^(\u4e0a\u5348?|\u4e0b\u5348?|\u5348\u591c|[\u4e2d\u6b63]\u5348|\u65e9\u4e0a?|\u4e0b\u5348|\u665a\u4e0a?|\u51cc\u6668|)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^\u4e0a\u5348?/i,pm:/^\u4e0b\u5348?/i,midnight:/^\u5348\u591c/i,noon:/^[\u4e2d\u6b63]\u5348/i,morning:/^\u65e9\u4e0a/i,afternoon:/^\u4e0b\u5348/i,evening:/^\u665a\u4e0a?/i,night:/^\u51cc\u6668/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};var We={lessThanXSeconds:{one:"\u5c11\u65bc 1 \u79d2",other:"\u5c11\u65bc {{count}} \u79d2"},xSeconds:{one:"1 \u79d2",other:"{{count}} \u79d2"},halfAMinute:"\u534a\u5206\u9418",lessThanXMinutes:{one:"\u5c11\u65bc 1 \u5206\u9418",other:"\u5c11\u65bc {{count}} \u5206\u9418"},xMinutes:{one:"1 \u5206\u9418",other:"{{count}} \u5206\u9418"},xHours:{one:"1 \u5c0f\u6642",other:"{{count}} \u5c0f\u6642"},aboutXHours:{one:"\u5927\u7d04 1 \u5c0f\u6642",other:"\u5927\u7d04 {{count}} \u5c0f\u6642"},xDays:{one:"1 \u5929",other:"{{count}} \u5929"},aboutXWeeks:{one:"\u5927\u7d04 1 \u500b\u661f\u671f",other:"\u5927\u7d04 {{count}} \u500b\u661f\u671f"},xWeeks:{one:"1 \u500b\u661f\u671f",other:"{{count}} \u500b\u661f\u671f"},aboutXMonths:{one:"\u5927\u7d04 1 \u500b\u6708",other:"\u5927\u7d04 {{count}} \u500b\u6708"},xMonths:{one:"1 \u500b\u6708",other:"{{count}} \u500b\u6708"},aboutXYears:{one:"\u5927\u7d04 1 \u5e74",other:"\u5927\u7d04 {{count}} \u5e74"},xYears:{one:"1 \u5e74",other:"{{count}} \u5e74"},overXYears:{one:"\u8d85\u904e 1 \u5e74",other:"\u8d85\u904e {{count}} \u5e74"},almostXYears:{one:"\u5c07\u8fd1 1 \u5e74",other:"\u5c07\u8fd1 {{count}} \u5e74"}};var zt={date:(0,Q.A)({formats:{full:"y'\u5e74'M'\u6708'd'\u65e5' EEEE",long:"y'\u5e74'M'\u6708'd'\u65e5'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},hn={lastWeek:"'\u4e0a\u500b'eeee p",yesterday:"'\u6628\u5929' p",today:"'\u4eca\u5929' p",tomorrow:"'\u660e\u5929' p",nextWeek:"'\u4e0b\u500b'eeee p",other:"P"};const Pi={code:"zh-TW",formatDistance:function(cn,wn,Mn){var kn,si=We[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?kn+"\u5167":kn+"\u524d":kn},formatLong:zt,formatRelative:function(cn,wn,Mn,kn){return hn[cn]},localize:{ordinalNumber:function(cn,wn){var Mn=Number(cn);switch(wn?.unit){case"date":return Mn+"\u65e5";case"hour":return Mn+"\u6642";case"minute":return Mn+"\u5206";case"second":return Mn+"\u79d2";default:return"\u7b2c "+Mn}},era:(0,mt.A)({values:{narrow:["\u524d","\u516c\u5143"],abbreviated:["\u524d","\u516c\u5143"],wide:["\u516c\u5143\u524d","\u516c\u5143"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["\u7b2c\u4e00\u523b","\u7b2c\u4e8c\u523b","\u7b2c\u4e09\u523b","\u7b2c\u56db\u523b"],wide:["\u7b2c\u4e00\u523b\u9418","\u7b2c\u4e8c\u523b\u9418","\u7b2c\u4e09\u523b\u9418","\u7b2c\u56db\u523b\u9418"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u5341\u4e00","\u5341\u4e8c"],abbreviated:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],wide:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],short:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"],abbreviated:["\u9031\u65e5","\u9031\u4e00","\u9031\u4e8c","\u9031\u4e09","\u9031\u56db","\u9031\u4e94","\u9031\u516d"],wide:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\u4e0a",pm:"\u4e0b",midnight:"\u51cc\u6668",noon:"\u5348",morning:"\u65e9",afternoon:"\u4e0b\u5348",evening:"\u665a",night:"\u591c"},abbreviated:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u9593"},wide:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u9593"}},defaultWidth:"wide",formattingValues:{narrow:{am:"\u4e0a",pm:"\u4e0b",midnight:"\u51cc\u6668",noon:"\u5348",morning:"\u65e9",afternoon:"\u4e0b\u5348",evening:"\u665a",night:"\u591c"},abbreviated:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u9593"},wide:{am:"\u4e0a\u5348",pm:"\u4e0b\u5348",midnight:"\u51cc\u6668",noon:"\u4e2d\u5348",morning:"\u65e9\u6668",afternoon:"\u4e2d\u5348",evening:"\u665a\u4e0a",night:"\u591c\u9593"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\u7b2c\s*)?\d+(\u65e5|\u6642|\u5206|\u79d2)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(\u524d)/i,abbreviated:/^(\u524d)/i,wide:/^(\u516c\u5143\u524d|\u516c\u5143)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(\u524d)/i,/^(\u516c\u5143)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^\u7b2c[\u4e00\u4e8c\u4e09\u56db]\u523b/i,wide:/^\u7b2c[\u4e00\u4e8c\u4e09\u56db]\u523b\u9418/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|\u4e00)/i,/(2|\u4e8c)/i,/(3|\u4e09)/i,/(4|\u56db)/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00])/i,abbreviated:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00]|\d|1[12])\u6708/i,wide:/^(\u4e00|\u4e8c|\u4e09|\u56db|\u4e94|\u516d|\u4e03|\u516b|\u4e5d|\u5341[\u4e8c\u4e00])\u6708/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u4e00/i,/^\u4e8c/i,/^\u4e09/i,/^\u56db/i,/^\u4e94/i,/^\u516d/i,/^\u4e03/i,/^\u516b/i,/^\u4e5d/i,/^\u5341(?!(\u4e00|\u4e8c))/i,/^\u5341\u4e00/i,/^\u5341\u4e8c/i],any:[/^\u4e00|1/i,/^\u4e8c|2/i,/^\u4e09|3/i,/^\u56db|4/i,/^\u4e94|5/i,/^\u516d|6/i,/^\u4e03|7/i,/^\u516b|8/i,/^\u4e5d|9/i,/^\u5341(?!(\u4e00|\u4e8c))|10/i,/^\u5341\u4e00|11/i,/^\u5341\u4e8c|12/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,short:/^[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,abbreviated:/^\u9031[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i,wide:/^\u661f\u671f[\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u65e5]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/\u65e5/i,/\u4e00/i,/\u4e8c/i,/\u4e09/i,/\u56db/i,/\u4e94/i,/\u516d/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{any:/^(\u4e0a\u5348?|\u4e0b\u5348?|\u5348\u591c|[\u4e2d\u6b63]\u5348|\u65e9\u4e0a?|\u4e0b\u5348|\u665a\u4e0a?|\u51cc\u6668)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^\u4e0a\u5348?/i,pm:/^\u4e0b\u5348?/i,midnight:/^\u5348\u591c/i,noon:/^[\u4e2d\u6b63]\u5348/i,morning:/^\u65e9\u4e0a/i,afternoon:/^\u4e0b\u5348/i,evening:/^\u665a\u4e0a?/i,night:/^\u51cc\u6668/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};var Oi={lessThanXSeconds:{one:"1\u79d2\u672a\u6e80",other:"{{count}}\u79d2\u672a\u6e80",oneWithSuffix:"\u7d041\u79d2",otherWithSuffix:"\u7d04{{count}}\u79d2"},xSeconds:{one:"1\u79d2",other:"{{count}}\u79d2"},halfAMinute:"30\u79d2",lessThanXMinutes:{one:"1\u5206\u672a\u6e80",other:"{{count}}\u5206\u672a\u6e80",oneWithSuffix:"\u7d041\u5206",otherWithSuffix:"\u7d04{{count}}\u5206"},xMinutes:{one:"1\u5206",other:"{{count}}\u5206"},aboutXHours:{one:"\u7d041\u6642\u9593",other:"\u7d04{{count}}\u6642\u9593"},xHours:{one:"1\u6642\u9593",other:"{{count}}\u6642\u9593"},xDays:{one:"1\u65e5",other:"{{count}}\u65e5"},aboutXWeeks:{one:"\u7d041\u9031\u9593",other:"\u7d04{{count}}\u9031\u9593"},xWeeks:{one:"1\u9031\u9593",other:"{{count}}\u9031\u9593"},aboutXMonths:{one:"\u7d041\u304b\u6708",other:"\u7d04{{count}}\u304b\u6708"},xMonths:{one:"1\u304b\u6708",other:"{{count}}\u304b\u6708"},aboutXYears:{one:"\u7d041\u5e74",other:"\u7d04{{count}}\u5e74"},xYears:{one:"1\u5e74",other:"{{count}}\u5e74"},overXYears:{one:"1\u5e74\u4ee5\u4e0a",other:"{{count}}\u5e74\u4ee5\u4e0a"},almostXYears:{one:"1\u5e74\u8fd1\u304f",other:"{{count}}\u5e74\u8fd1\u304f"}};var En={date:(0,Q.A)({formats:{full:"y\u5e74M\u6708d\u65e5EEEE",long:"y\u5e74M\u6708d\u65e5",medium:"y/MM/dd",short:"y/MM/dd"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"H\u6642mm\u5206ss\u79d2 zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Zn={lastWeek:"\u5148\u9031\u306eeeee\u306ep",yesterday:"\u6628\u65e5\u306ep",today:"\u4eca\u65e5\u306ep",tomorrow:"\u660e\u65e5\u306ep",nextWeek:"\u7fcc\u9031\u306eeeee\u306ep",other:"P"};const Ci={code:"ja",formatDistance:function(cn,wn,Mn){Mn=Mn||{};var kn,si=Oi[cn];return kn="string"==typeof si?si:1===wn?Mn.addSuffix&&si.oneWithSuffix?si.oneWithSuffix:si.one:Mn.addSuffix&&si.otherWithSuffix?si.otherWithSuffix.replace("{{count}}",String(wn)):si.other.replace("{{count}}",String(wn)),Mn.addSuffix?Mn.comparison&&Mn.comparison>0?kn+"\u5f8c":kn+"\u524d":kn},formatLong:En,formatRelative:function(cn,wn,Mn,kn){return Zn[cn]},localize:{ordinalNumber:function(cn,wn){var Mn=Number(cn);switch(String(wn?.unit)){case"year":return"".concat(Mn,"\u5e74");case"quarter":return"\u7b2c".concat(Mn,"\u56db\u534a\u671f");case"month":return"".concat(Mn,"\u6708");case"week":return"\u7b2c".concat(Mn,"\u9031");case"date":return"".concat(Mn,"\u65e5");case"hour":return"".concat(Mn,"\u6642");case"minute":return"".concat(Mn,"\u5206");case"second":return"".concat(Mn,"\u79d2");default:return"".concat(Mn)}},era:(0,mt.A)({values:{narrow:["BC","AC"],abbreviated:["\u7d00\u5143\u524d","\u897f\u66a6"],wide:["\u7d00\u5143\u524d","\u897f\u66a6"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["\u7b2c1\u56db\u534a\u671f","\u7b2c2\u56db\u534a\u671f","\u7b2c3\u56db\u534a\u671f","\u7b2c4\u56db\u534a\u671f"]},defaultWidth:"wide",argumentCallback:function(cn){return Number(cn)-1}}),month:(0,mt.A)({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],wide:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],short:["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],abbreviated:["\u65e5","\u6708","\u706b","\u6c34","\u6728","\u91d1","\u571f"],wide:["\u65e5\u66dc\u65e5","\u6708\u66dc\u65e5","\u706b\u66dc\u65e5","\u6c34\u66dc\u65e5","\u6728\u66dc\u65e5","\u91d1\u66dc\u65e5","\u571f\u66dc\u65e5"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"},abbreviated:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"},wide:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"}},defaultWidth:"wide",formattingValues:{narrow:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"},abbreviated:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"},wide:{am:"\u5348\u524d",pm:"\u5348\u5f8c",midnight:"\u6df1\u591c",noon:"\u6b63\u5348",morning:"\u671d",afternoon:"\u5348\u5f8c",evening:"\u591c",night:"\u6df1\u591c"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^\u7b2c?\d+(\u5e74|\u56db\u534a\u671f|\u6708|\u9031|\u65e5|\u6642|\u5206|\u79d2)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(B\.?C\.?|A\.?D\.?)/i,abbreviated:/^(\u7d00\u5143[\u524d\u5f8c]|\u897f\u66a6)/i,wide:/^(\u7d00\u5143[\u524d\u5f8c]|\u897f\u66a6)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^B/i,/^A/i],any:[/^(\u7d00\u5143\u524d)/i,/^(\u897f\u66a6|\u7d00\u5143\u5f8c)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^Q[1234]/i,wide:/^\u7b2c[1234\u4e00\u4e8c\u4e09\u56db\uff11\uff12\uff13\uff14]\u56db\u534a\u671f/i},defaultMatchWidth:"wide",parsePatterns:{any:[/(1|\u4e00|\uff11)/i,/(2|\u4e8c|\uff12)/i,/(3|\u4e09|\uff13)/i,/(4|\u56db|\uff14)/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^([123456789]|1[012])/,abbreviated:/^([123456789]|1[012])\u6708/i,wide:/^([123456789]|1[012])\u6708/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1\D/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f]/,short:/^[\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f]/,abbreviated:/^[\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f]/,wide:/^[\u65e5\u6708\u706b\u6c34\u6728\u91d1\u571f]\u66dc\u65e5/},defaultMatchWidth:"wide",parsePatterns:{any:[/^\u65e5/,/^\u6708/,/^\u706b/,/^\u6c34/,/^\u6728/,/^\u91d1/,/^\u571f/]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{any:/^(AM|PM|\u5348\u524d|\u5348\u5f8c|\u6b63\u5348|\u6df1\u591c|\u771f\u591c\u4e2d|\u591c|\u671d)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(A|\u5348\u524d)/i,pm:/^(P|\u5348\u5f8c)/i,midnight:/^\u6df1\u591c|\u771f\u591c\u4e2d/i,noon:/^\u6b63\u5348/i,morning:/^\u671d/i,afternoon:/^\u5348\u5f8c/i,evening:/^\u591c/i,night:/^\u6df1\u591c/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};var Xi={lessThanXSeconds:{one:"1\ucd08 \ubbf8\ub9cc",other:"{{count}}\ucd08 \ubbf8\ub9cc"},xSeconds:{one:"1\ucd08",other:"{{count}}\ucd08"},halfAMinute:"30\ucd08",lessThanXMinutes:{one:"1\ubd84 \ubbf8\ub9cc",other:"{{count}}\ubd84 \ubbf8\ub9cc"},xMinutes:{one:"1\ubd84",other:"{{count}}\ubd84"},aboutXHours:{one:"\uc57d 1\uc2dc\uac04",other:"\uc57d {{count}}\uc2dc\uac04"},xHours:{one:"1\uc2dc\uac04",other:"{{count}}\uc2dc\uac04"},xDays:{one:"1\uc77c",other:"{{count}}\uc77c"},aboutXWeeks:{one:"\uc57d 1\uc8fc",other:"\uc57d {{count}}\uc8fc"},xWeeks:{one:"1\uc8fc",other:"{{count}}\uc8fc"},aboutXMonths:{one:"\uc57d 1\uac1c\uc6d4",other:"\uc57d {{count}}\uac1c\uc6d4"},xMonths:{one:"1\uac1c\uc6d4",other:"{{count}}\uac1c\uc6d4"},aboutXYears:{one:"\uc57d 1\ub144",other:"\uc57d {{count}}\ub144"},xYears:{one:"1\ub144",other:"{{count}}\ub144"},overXYears:{one:"1\ub144 \uc774\uc0c1",other:"{{count}}\ub144 \uc774\uc0c1"},almostXYears:{one:"\uac70\uc758 1\ub144",other:"\uac70\uc758 {{count}}\ub144"}};var So={date:(0,Q.A)({formats:{full:"y\ub144 M\uc6d4 d\uc77c EEEE",long:"y\ub144 M\uc6d4 d\uc77c",medium:"y.MM.dd",short:"y.MM.dd"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"a H\uc2dc mm\ubd84 ss\ucd08 zzzz",long:"a H:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},gi={lastWeek:"'\uc9c0\ub09c' eeee p",yesterday:"'\uc5b4\uc81c' p",today:"'\uc624\ub298' p",tomorrow:"'\ub0b4\uc77c' p",nextWeek:"'\ub2e4\uc74c' eeee p",other:"P"};const dt={code:"ko",formatDistance:function(cn,wn,Mn){var kn,si=Xi[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",wn.toString()),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?kn+" \ud6c4":kn+" \uc804":kn},formatLong:So,formatRelative:function(cn,wn,Mn,kn){return gi[cn]},localize:{ordinalNumber:function(cn,wn){var Mn=Number(cn);switch(String(wn?.unit)){case"minute":case"second":return String(Mn);case"date":return Mn+"\uc77c";default:return Mn+"\ubc88\uc9f8"}},era:(0,mt.A)({values:{narrow:["BC","AD"],abbreviated:["BC","AD"],wide:["\uae30\uc6d0\uc804","\uc11c\uae30"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1\ubd84\uae30","2\ubd84\uae30","3\ubd84\uae30","4\ubd84\uae30"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["1","2","3","4","5","6","7","8","9","10","11","12"],abbreviated:["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"],wide:["1\uc6d4","2\uc6d4","3\uc6d4","4\uc6d4","5\uc6d4","6\uc6d4","7\uc6d4","8\uc6d4","9\uc6d4","10\uc6d4","11\uc6d4","12\uc6d4"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],short:["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],abbreviated:["\uc77c","\uc6d4","\ud654","\uc218","\ubaa9","\uae08","\ud1a0"],wide:["\uc77c\uc694\uc77c","\uc6d4\uc694\uc77c","\ud654\uc694\uc77c","\uc218\uc694\uc77c","\ubaa9\uc694\uc77c","\uae08\uc694\uc77c","\ud1a0\uc694\uc77c"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"},abbreviated:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"},wide:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"}},defaultWidth:"wide",formattingValues:{narrow:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"},abbreviated:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"},wide:{am:"\uc624\uc804",pm:"\uc624\ud6c4",midnight:"\uc790\uc815",noon:"\uc815\uc624",morning:"\uc544\uce68",afternoon:"\uc624\ud6c4",evening:"\uc800\ub141",night:"\ubc24"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(\uc77c|\ubc88\uc9f8)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(\uae30\uc6d0\uc804|\uc11c\uae30)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^(bc|\uae30\uc6d0\uc804)/i,/^(ad|\uc11c\uae30)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234]\uc0ac?\ubd84\uae30/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^(1[012]|[123456789])/,abbreviated:/^(1[012]|[123456789])\uc6d4/i,wide:/^(1[012]|[123456789])\uc6d4/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^1\uc6d4?$/,/^2/,/^3/,/^4/,/^5/,/^6/,/^7/,/^8/,/^9/,/^10/,/^11/,/^12/]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\uc77c\uc6d4\ud654\uc218\ubaa9\uae08\ud1a0]/,short:/^[\uc77c\uc6d4\ud654\uc218\ubaa9\uae08\ud1a0]/,abbreviated:/^[\uc77c\uc6d4\ud654\uc218\ubaa9\uae08\ud1a0]/,wide:/^[\uc77c\uc6d4\ud654\uc218\ubaa9\uae08\ud1a0]\uc694\uc77c/},defaultMatchWidth:"wide",parsePatterns:{any:[/^\uc77c/,/^\uc6d4/,/^\ud654/,/^\uc218/,/^\ubaa9/,/^\uae08/,/^\ud1a0/]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{any:/^(am|pm|\uc624\uc804|\uc624\ud6c4|\uc790\uc815|\uc815\uc624|\uc544\uce68|\uc800\ub141|\ubc24)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^(am|\uc624\uc804)/i,pm:/^(pm|\uc624\ud6c4)/i,midnight:/^\uc790\uc815/i,noon:/^\uc815\uc624/i,morning:/^\uc544\uce68/i,afternoon:/^\uc624\ud6c4/i,evening:/^\uc800\ub141/i,night:/^\ubc24/i}},defaultParseWidth:"any"})},options:{weekStartsOn:0,firstWeekContainsDate:1}};var ot={lessThanXSeconds:{one:"moins d\u2019une seconde",other:"moins de {{count}} secondes"},xSeconds:{one:"1 seconde",other:"{{count}} secondes"},halfAMinute:"30 secondes",lessThanXMinutes:{one:"moins d\u2019une minute",other:"moins de {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"environ 1 heure",other:"environ {{count}} heures"},xHours:{one:"1 heure",other:"{{count}} heures"},xDays:{one:"1 jour",other:"{{count}} jours"},aboutXWeeks:{one:"environ 1 semaine",other:"environ {{count}} semaines"},xWeeks:{one:"1 semaine",other:"{{count}} semaines"},aboutXMonths:{one:"environ 1 mois",other:"environ {{count}} mois"},xMonths:{one:"1 mois",other:"{{count}} mois"},aboutXYears:{one:"environ 1 an",other:"environ {{count}} ans"},xYears:{one:"1 an",other:"{{count}} ans"},overXYears:{one:"plus d\u2019un an",other:"plus de {{count}} ans"},almostXYears:{one:"presqu\u2019un an",other:"presque {{count}} ans"}};var Xo={date:(0,Q.A)({formats:{full:"EEEE d MMMM y",long:"d MMMM y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} '\xe0' {{time}}",long:"{{date}} '\xe0' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Uo={lastWeek:"eeee 'dernier \xe0' p",yesterday:"'hier \xe0' p",today:"'aujourd\u2019hui \xe0' p",tomorrow:"'demain \xe0' p'",nextWeek:"eeee 'prochain \xe0' p",other:"P"};const ss={code:"fr",formatDistance:function(cn,wn,Mn){var kn,si=ot[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"dans "+kn:"il y a "+kn:kn},formatLong:Xo,formatRelative:function(cn,wn,Mn,kn){return Uo[cn]},localize:{ordinalNumber:function(cn,wn){var Mn=Number(cn),kn=wn?.unit;return 0===Mn?"0":Mn+(1===Mn?kn&&["year","week","hour","minute","second"].includes(kn)?"\xe8re":"er":"\xe8me")},era:(0,mt.A)({values:{narrow:["av. J.-C","ap. J.-C"],abbreviated:["av. J.-C","ap. J.-C"],wide:["avant J\xe9sus-Christ","apr\xe8s J\xe9sus-Christ"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["T1","T2","T3","T4"],abbreviated:["1er trim.","2\xe8me trim.","3\xe8me trim.","4\xe8me trim."],wide:["1er trimestre","2\xe8me trimestre","3\xe8me trimestre","4\xe8me trimestre"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["janv.","f\xe9vr.","mars","avr.","mai","juin","juil.","ao\xfbt","sept.","oct.","nov.","d\xe9c."],wide:["janvier","f\xe9vrier","mars","avril","mai","juin","juillet","ao\xfbt","septembre","octobre","novembre","d\xe9cembre"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["D","L","M","M","J","V","S"],short:["di","lu","ma","me","je","ve","sa"],abbreviated:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],wide:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"mat.",afternoon:"ap.m.",evening:"soir",night:"mat."},abbreviated:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"matin",afternoon:"apr\xe8s-midi",evening:"soir",night:"matin"},wide:{am:"AM",pm:"PM",midnight:"minuit",noon:"midi",morning:"du matin",afternoon:"de l\u2019apr\xe8s-midi",evening:"du soir",night:"du matin"}},defaultWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(i\xe8me|\xe8re|\xe8me|er|e)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(av\.J\.C|ap\.J\.C|ap\.J\.-C)/i,abbreviated:/^(av\.J\.-C|av\.J-C|apr\.J\.-C|apr\.J-C|ap\.J-C)/i,wide:/^(avant J\xe9sus-Christ|apr\xe8s J\xe9sus-Christ)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^av/i,/^ap/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^T?[1234]/i,abbreviated:/^[1234](er|\xe8me|e)? trim\.?/i,wide:/^[1234](er|\xe8me|e)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(janv|f\xe9vr|mars|avr|mai|juin|juill|juil|ao\xfbt|sept|oct|nov|d\xe9c)\.?/i,wide:/^(janvier|f\xe9vrier|mars|avril|mai|juin|juillet|ao\xfbt|septembre|octobre|novembre|d\xe9cembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^av/i,/^ma/i,/^juin/i,/^juil/i,/^ao/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[lmjvsd]/i,short:/^(di|lu|ma|me|je|ve|sa)/i,abbreviated:/^(dim|lun|mar|mer|jeu|ven|sam)\.?/i,wide:/^(dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^di/i,/^lu/i,/^ma/i,/^me/i,/^je/i,/^ve/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(a|p|minuit|midi|mat\.?|ap\.?m\.?|soir|nuit)/i,any:/^([ap]\.?\s?m\.?|du matin|de l'apr\xe8s[-\s]midi|du soir|de la nuit)/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^min/i,noon:/^mid/i,morning:/mat/i,afternoon:/ap/i,evening:/soir/i,night:/nuit/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};function nr(Pn,cn){if(void 0!==Pn.one&&1===cn)return Pn.one;var wn=cn%10,Mn=cn%100;return 1===wn&&11!==Mn?Pn.singularNominative.replace("{{count}}",String(cn)):wn>=2&&wn<=4&&(Mn<10||Mn>20)?Pn.singularGenitive.replace("{{count}}",String(cn)):Pn.pluralGenitive.replace("{{count}}",String(cn))}function Mo(Pn){return function(cn,wn){return null!=wn&&wn.addSuffix?wn.comparison&&wn.comparison>0?Pn.future?nr(Pn.future,cn):"\u0447\u0435\u0440\u0435\u0437 "+nr(Pn.regular,cn):Pn.past?nr(Pn.past,cn):nr(Pn.regular,cn)+" \u043d\u0430\u0437\u0430\u0434":nr(Pn.regular,cn)}}var xr={lessThanXSeconds:Mo({regular:{one:"\u043c\u0435\u043d\u044c\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434\u044b",singularNominative:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u044b",singularGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434",pluralGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434"},future:{one:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u0441\u0435\u043a\u0443\u043d\u0434\u0443",singularNominative:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u0443",singularGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u044b",pluralGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434"}}),xSeconds:Mo({regular:{singularNominative:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u0430",singularGenitive:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u044b",pluralGenitive:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434"},past:{singularNominative:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043d\u0430\u0437\u0430\u0434",singularGenitive:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u043d\u0430\u0437\u0430\u0434",pluralGenitive:"{{count}} \u0441\u0435\u043a\u0443\u043d\u0434 \u043d\u0430\u0437\u0430\u0434"},future:{singularNominative:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u0443",singularGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434\u044b",pluralGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u0441\u0435\u043a\u0443\u043d\u0434"}}),halfAMinute:function(cn,wn){return null!=wn&&wn.addSuffix?wn.comparison&&wn.comparison>0?"\u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u043c\u0438\u043d\u0443\u0442\u044b":"\u043f\u043e\u043b\u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430\u0437\u0430\u0434":"\u043f\u043e\u043b\u043c\u0438\u043d\u0443\u0442\u044b"},lessThanXMinutes:Mo({regular:{one:"\u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0442\u044b",singularNominative:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u043c\u0438\u043d\u0443\u0442\u044b",singularGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u043c\u0438\u043d\u0443\u0442",pluralGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435 {{count}} \u043c\u0438\u043d\u0443\u0442"},future:{one:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 \u043c\u0438\u043d\u0443\u0442\u0443",singularNominative:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442\u0443",singularGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442\u044b",pluralGenitive:"\u043c\u0435\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442"}}),xMinutes:Mo({regular:{singularNominative:"{{count}} \u043c\u0438\u043d\u0443\u0442\u0430",singularGenitive:"{{count}} \u043c\u0438\u043d\u0443\u0442\u044b",pluralGenitive:"{{count}} \u043c\u0438\u043d\u0443\u0442"},past:{singularNominative:"{{count}} \u043c\u0438\u043d\u0443\u0442\u0443 \u043d\u0430\u0437\u0430\u0434",singularGenitive:"{{count}} \u043c\u0438\u043d\u0443\u0442\u044b \u043d\u0430\u0437\u0430\u0434",pluralGenitive:"{{count}} \u043c\u0438\u043d\u0443\u0442 \u043d\u0430\u0437\u0430\u0434"},future:{singularNominative:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442\u0443",singularGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442\u044b",pluralGenitive:"\u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0438\u043d\u0443\u0442"}}),aboutXHours:Mo({regular:{singularNominative:"\u043e\u043a\u043e\u043b\u043e {{count}} \u0447\u0430\u0441\u0430",singularGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u0447\u0430\u0441\u043e\u0432",pluralGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u0447\u0430\u0441\u043e\u0432"},future:{singularNominative:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441",singularGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441\u0430",pluralGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u0447\u0430\u0441\u043e\u0432"}}),xHours:Mo({regular:{singularNominative:"{{count}} \u0447\u0430\u0441",singularGenitive:"{{count}} \u0447\u0430\u0441\u0430",pluralGenitive:"{{count}} \u0447\u0430\u0441\u043e\u0432"}}),xDays:Mo({regular:{singularNominative:"{{count}} \u0434\u0435\u043d\u044c",singularGenitive:"{{count}} \u0434\u043d\u044f",pluralGenitive:"{{count}} \u0434\u043d\u0435\u0439"}}),aboutXWeeks:Mo({regular:{singularNominative:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043d\u0435\u0434\u0435\u043b\u0438",singularGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043d\u0435\u0434\u0435\u043b\u044c",pluralGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043d\u0435\u0434\u0435\u043b\u044c"},future:{singularNominative:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043d\u0435\u0434\u0435\u043b\u044e",singularGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043d\u0435\u0434\u0435\u043b\u0438",pluralGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043d\u0435\u0434\u0435\u043b\u044c"}}),xWeeks:Mo({regular:{singularNominative:"{{count}} \u043d\u0435\u0434\u0435\u043b\u044f",singularGenitive:"{{count}} \u043d\u0435\u0434\u0435\u043b\u0438",pluralGenitive:"{{count}} \u043d\u0435\u0434\u0435\u043b\u044c"}}),aboutXMonths:Mo({regular:{singularNominative:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043c\u0435\u0441\u044f\u0446\u0430",singularGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043c\u0435\u0441\u044f\u0446\u0435\u0432",pluralGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043c\u0435\u0441\u044f\u0446\u0435\u0432"},future:{singularNominative:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0435\u0441\u044f\u0446",singularGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0435\u0441\u044f\u0446\u0430",pluralGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043c\u0435\u0441\u044f\u0446\u0435\u0432"}}),xMonths:Mo({regular:{singularNominative:"{{count}} \u043c\u0435\u0441\u044f\u0446",singularGenitive:"{{count}} \u043c\u0435\u0441\u044f\u0446\u0430",pluralGenitive:"{{count}} \u043c\u0435\u0441\u044f\u0446\u0435\u0432"}}),aboutXYears:Mo({regular:{singularNominative:"\u043e\u043a\u043e\u043b\u043e {{count}} \u0433\u043e\u0434\u0430",singularGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043b\u0435\u0442",pluralGenitive:"\u043e\u043a\u043e\u043b\u043e {{count}} \u043b\u0435\u0442"},future:{singularNominative:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434",singularGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434\u0430",pluralGenitive:"\u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0447\u0435\u0440\u0435\u0437 {{count}} \u043b\u0435\u0442"}}),xYears:Mo({regular:{singularNominative:"{{count}} \u0433\u043e\u0434",singularGenitive:"{{count}} \u0433\u043e\u0434\u0430",pluralGenitive:"{{count}} \u043b\u0435\u0442"}}),overXYears:Mo({regular:{singularNominative:"\u0431\u043e\u043b\u044c\u0448\u0435 {{count}} \u0433\u043e\u0434\u0430",singularGenitive:"\u0431\u043e\u043b\u044c\u0448\u0435 {{count}} \u043b\u0435\u0442",pluralGenitive:"\u0431\u043e\u043b\u044c\u0448\u0435 {{count}} \u043b\u0435\u0442"},future:{singularNominative:"\u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434",singularGenitive:"\u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434\u0430",pluralGenitive:"\u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 {{count}} \u043b\u0435\u0442"}}),almostXYears:Mo({regular:{singularNominative:"\u043f\u043e\u0447\u0442\u0438 {{count}} \u0433\u043e\u0434",singularGenitive:"\u043f\u043e\u0447\u0442\u0438 {{count}} \u0433\u043e\u0434\u0430",pluralGenitive:"\u043f\u043e\u0447\u0442\u0438 {{count}} \u043b\u0435\u0442"},future:{singularNominative:"\u043f\u043e\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434",singularGenitive:"\u043f\u043e\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u0433\u043e\u0434\u0430",pluralGenitive:"\u043f\u043e\u0447\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 {{count}} \u043b\u0435\u0442"}})};var Ss={date:(0,Q.A)({formats:{full:"EEEE, d MMMM y '\u0433.'",long:"d MMMM y '\u0433.'",medium:"d MMM y '\u0433.'",short:"dd.MM.y"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"H:mm:ss zzzz",long:"H:mm:ss z",medium:"H:mm:ss",short:"H:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{any:"{{date}}, {{time}}"},defaultWidth:"any"})},Di=["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0432\u0442\u043e\u0440\u043d\u0438\u043a","\u0441\u0440\u0435\u0434\u0443","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043f\u044f\u0442\u043d\u0438\u0446\u0443","\u0441\u0443\u0431\u0431\u043e\u0442\u0443"];function Gr(Pn){var cn=Di[Pn];return 2===Pn?"'\u0432\u043e "+cn+" \u0432' p":"'\u0432 "+cn+" \u0432' p"}var ko={lastWeek:function(cn,wn,Mn){var kn=cn.getUTCDay();return ue(cn,wn,Mn)?Gr(kn):function qo(Pn){var cn=Di[Pn];switch(Pn){case 0:return"'\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u0435 "+cn+" \u0432' p";case 1:case 2:case 4:return"'\u0432 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 "+cn+" \u0432' p";case 3:case 5:case 6:return"'\u0432 \u043f\u0440\u043e\u0448\u043b\u0443\u044e "+cn+" \u0432' p"}}(kn)},yesterday:"'\u0432\u0447\u0435\u0440\u0430 \u0432' p",today:"'\u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0432' p",tomorrow:"'\u0437\u0430\u0432\u0442\u0440\u0430 \u0432' p",nextWeek:function(cn,wn,Mn){var kn=cn.getUTCDay();return ue(cn,wn,Mn)?Gr(kn):function Eo(Pn){var cn=Di[Pn];switch(Pn){case 0:return"'\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435 "+cn+" \u0432' p";case 1:case 2:case 4:return"'\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 "+cn+" \u0432' p";case 3:case 5:case 6:return"'\u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e "+cn+" \u0432' p"}}(kn)},other:"P"};const er={code:"ru",formatDistance:function(cn,wn,Mn){return xr[cn](wn,Mn)},formatLong:Ss,formatRelative:function(cn,wn,Mn,kn){var si=ko[cn];return"function"==typeof si?si(wn,Mn,kn):si},localize:{ordinalNumber:function(cn,wn){var Mn=Number(cn),kn=wn?.unit;return Mn+("date"===kn?"-\u0435":"week"===kn||"minute"===kn||"second"===kn?"-\u044f":"-\u0439")},era:(0,mt.A)({values:{narrow:["\u0434\u043e \u043d.\u044d.","\u043d.\u044d."],abbreviated:["\u0434\u043e \u043d. \u044d.","\u043d. \u044d."],wide:["\u0434\u043e \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b","\u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["1-\u0439 \u043a\u0432.","2-\u0439 \u043a\u0432.","3-\u0439 \u043a\u0432.","4-\u0439 \u043a\u0432."],wide:["1-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","2-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","3-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b","4-\u0439 \u043a\u0432\u0430\u0440\u0442\u0430\u043b"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["\u042f","\u0424","\u041c","\u0410","\u041c","\u0418","\u0418","\u0410","\u0421","\u041e","\u041d","\u0414"],abbreviated:["\u044f\u043d\u0432.","\u0444\u0435\u0432.","\u043c\u0430\u0440\u0442","\u0430\u043f\u0440.","\u043c\u0430\u0439","\u0438\u044e\u043d\u044c","\u0438\u044e\u043b\u044c","\u0430\u0432\u0433.","\u0441\u0435\u043d\u0442.","\u043e\u043a\u0442.","\u043d\u043e\u044f\u0431.","\u0434\u0435\u043a."],wide:["\u044f\u043d\u0432\u0430\u0440\u044c","\u0444\u0435\u0432\u0440\u0430\u043b\u044c","\u043c\u0430\u0440\u0442","\u0430\u043f\u0440\u0435\u043b\u044c","\u043c\u0430\u0439","\u0438\u044e\u043d\u044c","\u0438\u044e\u043b\u044c","\u0430\u0432\u0433\u0443\u0441\u0442","\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c","\u043e\u043a\u0442\u044f\u0431\u0440\u044c","\u043d\u043e\u044f\u0431\u0440\u044c","\u0434\u0435\u043a\u0430\u0431\u0440\u044c"]},defaultWidth:"wide",formattingValues:{narrow:["\u042f","\u0424","\u041c","\u0410","\u041c","\u0418","\u0418","\u0410","\u0421","\u041e","\u041d","\u0414"],abbreviated:["\u044f\u043d\u0432.","\u0444\u0435\u0432.","\u043c\u0430\u0440.","\u0430\u043f\u0440.","\u043c\u0430\u044f","\u0438\u044e\u043d.","\u0438\u044e\u043b.","\u0430\u0432\u0433.","\u0441\u0435\u043d\u0442.","\u043e\u043a\u0442.","\u043d\u043e\u044f\u0431.","\u0434\u0435\u043a."],wide:["\u044f\u043d\u0432\u0430\u0440\u044f","\u0444\u0435\u0432\u0440\u0430\u043b\u044f","\u043c\u0430\u0440\u0442\u0430","\u0430\u043f\u0440\u0435\u043b\u044f","\u043c\u0430\u044f","\u0438\u044e\u043d\u044f","\u0438\u044e\u043b\u044f","\u0430\u0432\u0433\u0443\u0441\u0442\u0430","\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f","\u043e\u043a\u0442\u044f\u0431\u0440\u044f","\u043d\u043e\u044f\u0431\u0440\u044f","\u0434\u0435\u043a\u0430\u0431\u0440\u044f"]},defaultFormattingWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\u0412","\u041f","\u0412","\u0421","\u0427","\u041f","\u0421"],short:["\u0432\u0441","\u043f\u043d","\u0432\u0442","\u0441\u0440","\u0447\u0442","\u043f\u0442","\u0441\u0431"],abbreviated:["\u0432\u0441\u043a","\u043f\u043d\u0434","\u0432\u0442\u0440","\u0441\u0440\u0434","\u0447\u0442\u0432","\u043f\u0442\u043d","\u0441\u0443\u0431"],wide:["\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435","\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a","\u0432\u0442\u043e\u0440\u043d\u0438\u043a","\u0441\u0440\u0435\u0434\u0430","\u0447\u0435\u0442\u0432\u0435\u0440\u0433","\u043f\u044f\u0442\u043d\u0438\u0446\u0430","\u0441\u0443\u0431\u0431\u043e\u0442\u0430"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d.",noon:"\u043f\u043e\u043b\u0434.",morning:"\u0443\u0442\u0440\u043e",afternoon:"\u0434\u0435\u043d\u044c",evening:"\u0432\u0435\u0447.",night:"\u043d\u043e\u0447\u044c"},abbreviated:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d.",noon:"\u043f\u043e\u043b\u0434.",morning:"\u0443\u0442\u0440\u043e",afternoon:"\u0434\u0435\u043d\u044c",evening:"\u0432\u0435\u0447.",night:"\u043d\u043e\u0447\u044c"},wide:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d\u043e\u0447\u044c",noon:"\u043f\u043e\u043b\u0434\u0435\u043d\u044c",morning:"\u0443\u0442\u0440\u043e",afternoon:"\u0434\u0435\u043d\u044c",evening:"\u0432\u0435\u0447\u0435\u0440",night:"\u043d\u043e\u0447\u044c"}},defaultWidth:"any",formattingValues:{narrow:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d.",noon:"\u043f\u043e\u043b\u0434.",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043d\u044f",evening:"\u0432\u0435\u0447.",night:"\u043d\u043e\u0447\u0438"},abbreviated:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d.",noon:"\u043f\u043e\u043b\u0434.",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043d\u044f",evening:"\u0432\u0435\u0447.",night:"\u043d\u043e\u0447\u0438"},wide:{am:"\u0414\u041f",pm:"\u041f\u041f",midnight:"\u043f\u043e\u043b\u043d\u043e\u0447\u044c",noon:"\u043f\u043e\u043b\u0434\u0435\u043d\u044c",morning:"\u0443\u0442\u0440\u0430",afternoon:"\u0434\u043d\u044f",evening:"\u0432\u0435\u0447\u0435\u0440\u0430",night:"\u043d\u043e\u0447\u0438"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(-?(\u0435|\u044f|\u0439|\u043e\u0435|\u044c\u0435|\u0430\u044f|\u044c\u044f|\u044b\u0439|\u043e\u0439|\u0438\u0439|\u044b\u0439))?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^((\u0434\u043e )?\u043d\.?\s?\u044d\.?)/i,abbreviated:/^((\u0434\u043e )?\u043d\.?\s?\u044d\.?)/i,wide:/^(\u0434\u043e \u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b|\u043d\u0430\u0448\u0435\u0439 \u044d\u0440\u044b|\u043d\u0430\u0448\u0430 \u044d\u0440\u0430)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^\u0434/i,/^\u043d/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^[1234](-?[\u044b\u043e\u0438]?\u0439?)? \u043a\u0432.?/i,wide:/^[1234](-?[\u044b\u043e\u0438]?\u0439?)? \u043a\u0432\u0430\u0440\u0442\u0430\u043b/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[\u044f\u0444\u043c\u0430\u0438\u0441\u043e\u043d\u0434]/i,abbreviated:/^(\u044f\u043d\u0432|\u0444\u0435\u0432|\u043c\u0430\u0440\u0442?|\u0430\u043f\u0440|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]?|\u0438\u044e\u043b[\u044c\u044f]?|\u0430\u0432\u0433|\u0441\u0435\u043d\u0442?|\u043e\u043a\u0442|\u043d\u043e\u044f\u0431?|\u0434\u0435\u043a)\.?/i,wide:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043b[\u044c\u044f]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u044f/i,/^\u0444/i,/^\u043c/i,/^\u0430/i,/^\u043c/i,/^\u0438/i,/^\u0438/i,/^\u0430/i,/^\u0441/i,/^\u043e/i,/^\u043d/i,/^\u044f/i],any:[/^\u044f/i,/^\u0444/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432/i,/^\u0441/i,/^\u043e/i,/^\u043d/i,/^\u0434/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\u0432\u043f\u0441\u0447]/i,short:/^(\u0432\u0441|\u0432\u043e|\u043f\u043d|\u043f\u043e|\u0432\u0442|\u0441\u0440|\u0447\u0442|\u0447\u0435|\u043f\u0442|\u043f\u044f|\u0441\u0431|\u0441\u0443)\.?/i,abbreviated:/^(\u0432\u0441\u043a|\u0432\u043e\u0441|\u043f\u043d\u0434|\u043f\u043e\u043d|\u0432\u0442\u0440|\u0432\u0442\u043e|\u0441\u0440\u0434|\u0441\u0440\u0435|\u0447\u0442\u0432|\u0447\u0435\u0442|\u043f\u0442\u043d|\u043f\u044f\u0442|\u0441\u0443\u0431).?/i,wide:/^(\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c[\u0435\u044f]|\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a\u0430?|\u0432\u0442\u043e\u0440\u043d\u0438\u043a\u0430?|\u0441\u0440\u0435\u0434[\u0430\u044b]|\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430?|\u043f\u044f\u0442\u043d\u0438\u0446[\u0430\u044b]|\u0441\u0443\u0431\u0431\u043e\u0442[\u0430\u044b])/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u0432/i,/^\u043f/i,/^\u0432/i,/^\u0441/i,/^\u0447/i,/^\u043f/i,/^\u0441/i],any:[/^\u0432[\u043e\u0441]/i,/^\u043f[\u043e\u043d]/i,/^\u0432/i,/^\u0441\u0440/i,/^\u0447/i,/^\u043f[\u044f\u0442]/i,/^\u0441[\u0443\u0431]/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^([\u0434\u043f]\u043f|\u043f\u043e\u043b\u043d\.?|\u043f\u043e\u043b\u0434\.?|\u0443\u0442\u0440[\u043e\u0430]|\u0434\u0435\u043d\u044c|\u0434\u043d\u044f|\u0432\u0435\u0447\.?|\u043d\u043e\u0447[\u044c\u0438])/i,abbreviated:/^([\u0434\u043f]\u043f|\u043f\u043e\u043b\u043d\.?|\u043f\u043e\u043b\u0434\.?|\u0443\u0442\u0440[\u043e\u0430]|\u0434\u0435\u043d\u044c|\u0434\u043d\u044f|\u0432\u0435\u0447\.?|\u043d\u043e\u0447[\u044c\u0438])/i,wide:/^([\u0434\u043f]\u043f|\u043f\u043e\u043b\u043d\u043e\u0447\u044c|\u043f\u043e\u043b\u0434\u0435\u043d\u044c|\u0443\u0442\u0440[\u043e\u0430]|\u0434\u0435\u043d\u044c|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430?|\u043d\u043e\u0447[\u044c\u0438])/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^\u0434\u043f/i,pm:/^\u043f\u043f/i,midnight:/^\u043f\u043e\u043b\u043d/i,noon:/^\u043f\u043e\u043b\u0434/i,morning:/^\u0443/i,afternoon:/^\u0434[\u0435\u043d]/i,evening:/^\u0432/i,night:/^\u043d/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}};var Ko={lessThanXSeconds:{standalone:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"},withPreposition:{one:"weniger als 1 Sekunde",other:"weniger als {{count}} Sekunden"}},xSeconds:{standalone:{one:"1 Sekunde",other:"{{count}} Sekunden"},withPreposition:{one:"1 Sekunde",other:"{{count}} Sekunden"}},halfAMinute:{standalone:"halbe Minute",withPreposition:"halben Minute"},lessThanXMinutes:{standalone:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"},withPreposition:{one:"weniger als 1 Minute",other:"weniger als {{count}} Minuten"}},xMinutes:{standalone:{one:"1 Minute",other:"{{count}} Minuten"},withPreposition:{one:"1 Minute",other:"{{count}} Minuten"}},aboutXHours:{standalone:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"},withPreposition:{one:"etwa 1 Stunde",other:"etwa {{count}} Stunden"}},xHours:{standalone:{one:"1 Stunde",other:"{{count}} Stunden"},withPreposition:{one:"1 Stunde",other:"{{count}} Stunden"}},xDays:{standalone:{one:"1 Tag",other:"{{count}} Tage"},withPreposition:{one:"1 Tag",other:"{{count}} Tagen"}},aboutXWeeks:{standalone:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"},withPreposition:{one:"etwa 1 Woche",other:"etwa {{count}} Wochen"}},xWeeks:{standalone:{one:"1 Woche",other:"{{count}} Wochen"},withPreposition:{one:"1 Woche",other:"{{count}} Wochen"}},aboutXMonths:{standalone:{one:"etwa 1 Monat",other:"etwa {{count}} Monate"},withPreposition:{one:"etwa 1 Monat",other:"etwa {{count}} Monaten"}},xMonths:{standalone:{one:"1 Monat",other:"{{count}} Monate"},withPreposition:{one:"1 Monat",other:"{{count}} Monaten"}},aboutXYears:{standalone:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahre"},withPreposition:{one:"etwa 1 Jahr",other:"etwa {{count}} Jahren"}},xYears:{standalone:{one:"1 Jahr",other:"{{count}} Jahre"},withPreposition:{one:"1 Jahr",other:"{{count}} Jahren"}},overXYears:{standalone:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahre"},withPreposition:{one:"mehr als 1 Jahr",other:"mehr als {{count}} Jahren"}},almostXYears:{standalone:{one:"fast 1 Jahr",other:"fast {{count}} Jahre"},withPreposition:{one:"fast 1 Jahr",other:"fast {{count}} Jahren"}}};var ya={date:(0,Q.A)({formats:{full:"EEEE, do MMMM y",long:"do MMMM y",medium:"do MMM y",short:"dd.MM.y"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} 'um' {{time}}",long:"{{date}} 'um' {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},defaultWidth:"full"})},Or={lastWeek:"'letzten' eeee 'um' p",yesterday:"'gestern um' p",today:"'heute um' p",tomorrow:"'morgen um' p",nextWeek:"eeee 'um' p",other:"P"},$s={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","M\xe4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],wide:["Januar","Februar","M\xe4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},js={narrow:$s.narrow,abbreviated:["Jan.","Feb.","M\xe4rz","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."],wide:$s.wide};const Hn={code:"de",formatDistance:function(cn,wn,Mn){var kn,si=null!=Mn&&Mn.addSuffix?Ko[cn].withPreposition:Ko[cn].standalone;return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"in "+kn:"vor "+kn:kn},formatLong:ya,formatRelative:function(cn,wn,Mn,kn){return Or[cn]},localize:{ordinalNumber:function(cn){return Number(cn)+"."},era:(0,mt.A)({values:{narrow:["v.Chr.","n.Chr."],abbreviated:["v.Chr.","n.Chr."],wide:["vor Christus","nach Christus"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1. Quartal","2. Quartal","3. Quartal","4. Quartal"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:$s,formattingValues:js,defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["S","M","D","M","D","F","S"],short:["So","Mo","Di","Mi","Do","Fr","Sa"],abbreviated:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."],wide:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachm.",evening:"Abend",night:"Nacht"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"Morgen",afternoon:"Nachmittag",evening:"Abend",night:"Nacht"}},defaultWidth:"wide",formattingValues:{narrow:{am:"vm.",pm:"nm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachm.",evening:"abends",night:"nachts"},abbreviated:{am:"vorm.",pm:"nachm.",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"},wide:{am:"vormittags",pm:"nachmittags",midnight:"Mitternacht",noon:"Mittag",morning:"morgens",afternoon:"nachmittags",evening:"abends",night:"nachts"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(\.)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,abbreviated:/^(v\.? ?Chr\.?|n\.? ?Chr\.?)/i,wide:/^(vor Christus|vor unserer Zeitrechnung|nach Christus|unserer Zeitrechnung)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^v/i,/^n/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](\.)? Quartal/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(j[a\xe4]n|feb|m\xe4r[z]?|apr|mai|jun[i]?|jul[i]?|aug|sep|okt|nov|dez)\.?/i,wide:/^(januar|februar|m\xe4rz|april|mai|juni|juli|august|september|oktober|november|dezember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^j[a\xe4]/i,/^f/i,/^m\xe4r/i,/^ap/i,/^mai/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[smdmf]/i,short:/^(so|mo|di|mi|do|fr|sa)/i,abbreviated:/^(son?|mon?|die?|mit?|don?|fre?|sam?)\.?/i,wide:/^(sonntag|montag|dienstag|mittwoch|donnerstag|freitag|samstag)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^so/i,/^mo/i,/^di/i,/^mi/i,/^do/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(vm\.?|nm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,abbreviated:/^(vorm\.?|nachm\.?|Mitternacht|Mittag|morgens|nachm\.?|abends|nachts)/i,wide:/^(vormittags|nachmittags|Mitternacht|Mittag|morgens|nachmittags|abends|nachts)/i},defaultMatchWidth:"wide",parsePatterns:{any:{am:/^v/i,pm:/^n/i,midnight:/^Mitte/i,noon:/^Mitta/i,morning:/morgens/i,afternoon:/nachmittags/i,evening:/abends/i,night:/nachts/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};var po={lessThanXSeconds:{one:"menos de un segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"medio minuto",lessThanXMinutes:{one:"menos de un minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"alrededor de 1 hora",other:"alrededor de {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 d\xeda",other:"{{count}} d\xedas"},aboutXWeeks:{one:"alrededor de 1 semana",other:"alrededor de {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"alrededor de 1 mes",other:"alrededor de {{count}} meses"},xMonths:{one:"1 mes",other:"{{count}} meses"},aboutXYears:{one:"alrededor de 1 a\xf1o",other:"alrededor de {{count}} a\xf1os"},xYears:{one:"1 a\xf1o",other:"{{count}} a\xf1os"},overXYears:{one:"m\xe1s de 1 a\xf1o",other:"m\xe1s de {{count}} a\xf1os"},almostXYears:{one:"casi 1 a\xf1o",other:"casi {{count}} a\xf1os"}};var Xr={date:(0,Q.A)({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d MMM y",short:"dd/MM/y"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} 'a las' {{time}}",long:"{{date}} 'a las' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},da={lastWeek:"'el' eeee 'pasado a la' p",yesterday:"'ayer a la' p",today:"'hoy a la' p",tomorrow:"'ma\xf1ana a la' p",nextWeek:"eeee 'a la' p",other:"P"},Ma={lastWeek:"'el' eeee 'pasado a las' p",yesterday:"'ayer a las' p",today:"'hoy a las' p",tomorrow:"'ma\xf1ana a las' p",nextWeek:"eeee 'a las' p",other:"P"};const yi={code:"es",formatDistance:function(cn,wn,Mn){var kn,si=po[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",wn.toString()),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"en "+kn:"hace "+kn:kn},formatLong:Xr,formatRelative:function(cn,wn,Mn,kn){return 1!==wn.getUTCHours()?Ma[cn]:da[cn]},localize:{ordinalNumber:function(cn,wn){return Number(cn)+"\xba"},era:(0,mt.A)({values:{narrow:["AC","DC"],abbreviated:["AC","DC"],wide:["antes de cristo","despu\xe9s de cristo"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1\xba trimestre","2\xba trimestre","3\xba trimestre","4\xba trimestre"]},defaultWidth:"wide",argumentCallback:function(cn){return Number(cn)-1}}),month:(0,mt.A)({values:{narrow:["e","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],wide:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["d","l","m","m","j","v","s"],short:["do","lu","ma","mi","ju","vi","s\xe1"],abbreviated:["dom","lun","mar","mi\xe9","jue","vie","s\xe1b"],wide:["domingo","lunes","martes","mi\xe9rcoles","jueves","viernes","s\xe1bado"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"ma\xf1ana",afternoon:"tarde",evening:"tarde",night:"noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"ma\xf1ana",afternoon:"tarde",evening:"tarde",night:"noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"ma\xf1ana",afternoon:"tarde",evening:"tarde",night:"noche"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mn",noon:"md",morning:"de la ma\xf1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},abbreviated:{am:"AM",pm:"PM",midnight:"medianoche",noon:"mediodia",morning:"de la ma\xf1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"},wide:{am:"a.m.",pm:"p.m.",midnight:"medianoche",noon:"mediodia",morning:"de la ma\xf1ana",afternoon:"de la tarde",evening:"de la tarde",night:"de la noche"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(\xba)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes de la era com[u\xfa]n|despu[e\xe9]s de cristo|era com[u\xfa]n)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes de la era com[u\xfa]n)/i,/^(despu[e\xe9]s de cristo|era com[u\xfa]n)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](\xba)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[efmajsond]/i,abbreviated:/^(ene|feb|mar|abr|may|jun|jul|ago|sep|oct|nov|dic)/i,wide:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^e/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^en/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[dlmjvs]/i,short:/^(do|lu|ma|mi|ju|vi|s[\xe1a])/i,abbreviated:/^(dom|lun|mar|mi[\xe9e]|jue|vie|s[\xe1a]b)/i,wide:/^(domingo|lunes|martes|mi[\xe9e]rcoles|jueves|viernes|s[\xe1a]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^l/i,/^m/i,/^m/i,/^j/i,/^v/i,/^s/i],any:[/^do/i,/^lu/i,/^ma/i,/^mi/i,/^ju/i,/^vi/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(a|p|mn|md|(de la|a las) (ma\xf1ana|tarde|noche))/i,any:/^([ap]\.?\s?m\.?|medianoche|mediodia|(de la|a las) (ma\xf1ana|tarde|noche))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mn/i,noon:/^md/i,morning:/ma\xf1ana/i,afternoon:/tarde/i,evening:/tarde/i,night:/noche/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}};var mi={lessThanXSeconds:{one:"menos de um segundo",other:"menos de {{count}} segundos"},xSeconds:{one:"1 segundo",other:"{{count}} segundos"},halfAMinute:"meio minuto",lessThanXMinutes:{one:"menos de um minuto",other:"menos de {{count}} minutos"},xMinutes:{one:"1 minuto",other:"{{count}} minutos"},aboutXHours:{one:"aproximadamente 1 hora",other:"aproximadamente {{count}} horas"},xHours:{one:"1 hora",other:"{{count}} horas"},xDays:{one:"1 dia",other:"{{count}} dias"},aboutXWeeks:{one:"aproximadamente 1 semana",other:"aproximadamente {{count}} semanas"},xWeeks:{one:"1 semana",other:"{{count}} semanas"},aboutXMonths:{one:"aproximadamente 1 m\xeas",other:"aproximadamente {{count}} meses"},xMonths:{one:"1 m\xeas",other:"{{count}} meses"},aboutXYears:{one:"aproximadamente 1 ano",other:"aproximadamente {{count}} anos"},xYears:{one:"1 ano",other:"{{count}} anos"},overXYears:{one:"mais de 1 ano",other:"mais de {{count}} anos"},almostXYears:{one:"quase 1 ano",other:"quase {{count}} anos"}};var In={date:(0,Q.A)({formats:{full:"EEEE, d 'de' MMMM 'de' y",long:"d 'de' MMMM 'de' y",medium:"d 'de' MMM 'de' y",short:"dd/MM/y"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH:mm:ss zzzz",long:"HH:mm:ss z",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} '\xe0s' {{time}}",long:"{{date}} '\xe0s' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},ei={lastWeek:function(cn){var wn=cn.getUTCDay();return"'"+(0===wn||6===wn?"\xfaltimo":"\xfaltima")+"' eeee '\xe0s' p"},yesterday:"'ontem \xe0s' p",today:"'hoje \xe0s' p",tomorrow:"'amanh\xe3 \xe0s' p",nextWeek:"eeee '\xe0s' p",other:"P"};const Xs={code:"pt",formatDistance:function(cn,wn,Mn){var kn,si=mi[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"daqui a "+kn:"h\xe1 "+kn:kn},formatLong:In,formatRelative:function(cn,wn,Mn,kn){var si=ei[cn];return"function"==typeof si?si(wn):si},localize:{ordinalNumber:function(cn,wn){return Number(cn)+"\xba"},era:(0,mt.A)({values:{narrow:["aC","dC"],abbreviated:["a.C.","d.C."],wide:["antes de Cristo","depois de Cristo"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["T1","T2","T3","T4"],wide:["1\xba trimestre","2\xba trimestre","3\xba trimestre","4\xba trimestre"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["j","f","m","a","m","j","j","a","s","o","n","d"],abbreviated:["jan","fev","mar","abr","mai","jun","jul","ago","set","out","nov","dez"],wide:["janeiro","fevereiro","mar\xe7o","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["d","s","t","q","q","s","s"],short:["dom","seg","ter","qua","qui","sex","s\xe1b"],abbreviated:["dom","seg","ter","qua","qui","sex","s\xe1b"],wide:["domingo","segunda-feira","ter\xe7a-feira","quarta-feira","quinta-feira","sexta-feira","s\xe1bado"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xe3",afternoon:"tarde",evening:"noite",night:"madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xe3",afternoon:"tarde",evening:"noite",night:"madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"manh\xe3",afternoon:"tarde",evening:"noite",night:"madrugada"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xe3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},abbreviated:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xe3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"},wide:{am:"AM",pm:"PM",midnight:"meia-noite",noon:"meio-dia",morning:"da manh\xe3",afternoon:"da tarde",evening:"da noite",night:"da madrugada"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(\xba|\xaa)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(ac|dc|a|d)/i,abbreviated:/^(a\.?\s?c\.?|a\.?\s?e\.?\s?c\.?|d\.?\s?c\.?|e\.?\s?c\.?)/i,wide:/^(antes de cristo|antes da era comum|depois de cristo|era comum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^ac/i,/^dc/i],wide:[/^(antes de cristo|antes da era comum)/i,/^(depois de cristo|era comum)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^T[1234]/i,wide:/^[1234](\xba|\xaa)? trimestre/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|fev|mar|abr|mai|jun|jul|ago|set|out|nov|dez)/i,wide:/^(janeiro|fevereiro|mar\xe7o|abril|maio|junho|julho|agosto|setembro|outubro|novembro|dezembro)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ab/i,/^mai/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[dstq]/i,short:/^(dom|seg|ter|qua|qui|sex|s[\xe1a]b)/i,abbreviated:/^(dom|seg|ter|qua|qui|sex|s[\xe1a]b)/i,wide:/^(domingo|segunda-?\s?feira|ter\xe7a-?\s?feira|quarta-?\s?feira|quinta-?\s?feira|sexta-?\s?feira|s[\xe1a]bado)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^d/i,/^s/i,/^t/i,/^q/i,/^q/i,/^s/i,/^s/i],any:[/^d/i,/^seg/i,/^t/i,/^qua/i,/^qui/i,/^sex/i,/^s[\xe1a]/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(a|p|meia-?\s?noite|meio-?\s?dia|(da) (manh[\xe3a]|tarde|noite|madrugada))/i,any:/^([ap]\.?\s?m\.?|meia-?\s?noite|meio-?\s?dia|(da) (manh[\xe3a]|tarde|noite|madrugada))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^meia/i,noon:/^meio/i,morning:/manh[\xe3a]/i,afternoon:/tarde/i,evening:/noite/i,night:/madrugada/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:4}};var Pl={lessThanXSeconds:{one:"kurang dari 1 detik",other:"kurang dari {{count}} detik"},xSeconds:{one:"1 detik",other:"{{count}} detik"},halfAMinute:"setengah menit",lessThanXMinutes:{one:"kurang dari 1 menit",other:"kurang dari {{count}} menit"},xMinutes:{one:"1 menit",other:"{{count}} menit"},aboutXHours:{one:"sekitar 1 jam",other:"sekitar {{count}} jam"},xHours:{one:"1 jam",other:"{{count}} jam"},xDays:{one:"1 hari",other:"{{count}} hari"},aboutXWeeks:{one:"sekitar 1 minggu",other:"sekitar {{count}} minggu"},xWeeks:{one:"1 minggu",other:"{{count}} minggu"},aboutXMonths:{one:"sekitar 1 bulan",other:"sekitar {{count}} bulan"},xMonths:{one:"1 bulan",other:"{{count}} bulan"},aboutXYears:{one:"sekitar 1 tahun",other:"sekitar {{count}} tahun"},xYears:{one:"1 tahun",other:"{{count}} tahun"},overXYears:{one:"lebih dari 1 tahun",other:"lebih dari {{count}} tahun"},almostXYears:{one:"hampir 1 tahun",other:"hampir {{count}} tahun"}};var Qs={date:(0,Q.A)({formats:{full:"EEEE, d MMMM yyyy",long:"d MMMM yyyy",medium:"d MMM yyyy",short:"d/M/yyyy"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH.mm.ss",long:"HH.mm.ss",medium:"HH.mm",short:"HH.mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} 'pukul' {{time}}",long:"{{date}} 'pukul' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},Il={lastWeek:"eeee 'lalu pukul' p",yesterday:"'Kemarin pukul' p",today:"'Hari ini pukul' p",tomorrow:"'Besok pukul' p",nextWeek:"eeee 'pukul' p",other:"P"};const yd={code:"id",formatDistance:function(cn,wn,Mn){var kn,si=Pl[cn];return kn="string"==typeof si?si:1===wn?si.one:si.other.replace("{{count}}",wn.toString()),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"dalam waktu "+kn:kn+" yang lalu":kn},formatLong:Qs,formatRelative:function(cn,wn,Mn,kn){return Il[cn]},localize:{ordinalNumber:function(cn,wn){return"ke-"+Number(cn)},era:(0,mt.A)({values:{narrow:["SM","M"],abbreviated:["SM","M"],wide:["Sebelum Masehi","Masehi"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["K1","K2","K3","K4"],wide:["Kuartal ke-1","Kuartal ke-2","Kuartal ke-3","Kuartal ke-4"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agt","Sep","Okt","Nov","Des"],wide:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["M","S","S","R","K","J","S"],short:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],abbreviated:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],wide:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultWidth:"wide",formattingValues:{narrow:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},abbreviated:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"},wide:{am:"AM",pm:"PM",midnight:"tengah malam",noon:"tengah hari",morning:"pagi",afternoon:"siang",evening:"sore",night:"malam"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^ke-(\d+)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/^(sm|m)/i,abbreviated:/^(s\.?\s?m\.?|s\.?\s?e\.?\s?u\.?|m\.?|e\.?\s?u\.?)/i,wide:/^(sebelum masehi|sebelum era umum|masehi|era umum)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^s/i,/^(m|e)/i]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^K-?\s[1234]/i,wide:/^Kuartal ke-?\s?[1234]/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|mei|jun|jul|agt|sep|okt|nov|des)/i,wide:/^(januari|februari|maret|april|mei|juni|juli|agustus|september|oktober|november|desember)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^ma/i,/^ap/i,/^me/i,/^jun/i,/^jul/i,/^ag/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[srkjm]/i,short:/^(min|sen|sel|rab|kam|jum|sab)/i,abbreviated:/^(min|sen|sel|rab|kam|jum|sab)/i,wide:/^(minggu|senin|selasa|rabu|kamis|jumat|sabtu)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^m/i,/^s/i,/^s/i,/^r/i,/^k/i,/^j/i,/^s/i],any:[/^m/i,/^sen/i,/^sel/i,/^r/i,/^k/i,/^j/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(a|p|tengah m|tengah h|(di(\swaktu)?) (pagi|siang|sore|malam))/i,any:/^([ap]\.?\s?m\.?|tengah malam|tengah hari|(di(\swaktu)?) (pagi|siang|sore|malam))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^pm/i,midnight:/^tengah m/i,noon:/^tengah h/i,morning:/pagi/i,afternoon:/siang/i,evening:/sore/i,night:/malam/i}},defaultParseWidth:"any"})},options:{weekStartsOn:1,firstWeekContainsDate:1}};var Zs={lessThanXSeconds:{one:"\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629",two:"\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u062a\u064a\u0646",threeToTen:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062b\u0648\u0627\u0646\u064a",other:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062b\u0627\u0646\u064a\u0629"},xSeconds:{one:"\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",two:"\u062b\u0627\u0646\u064a\u062a\u0627\u0646",threeToTen:"{{count}} \u062b\u0648\u0627\u0646\u064a",other:"{{count}} \u062b\u0627\u0646\u064a\u0629"},halfAMinute:"\u0646\u0635\u0641 \u062f\u0642\u064a\u0642\u0629",lessThanXMinutes:{one:"\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629",two:"\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u062a\u064a\u0646",threeToTen:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062f\u0642\u0627\u0626\u0642",other:"\u0623\u0642\u0644 \u0645\u0646 {{count}} \u062f\u0642\u064a\u0642\u0629"},xMinutes:{one:"\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",two:"\u062f\u0642\u064a\u0642\u062a\u0627\u0646",threeToTen:"{{count}} \u062f\u0642\u0627\u0626\u0642",other:"{{count}} \u062f\u0642\u064a\u0642\u0629"},aboutXHours:{one:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629 \u062a\u0642\u0631\u064a\u0628\u0627\u064b",two:"\u0633\u0627\u0639\u062a\u064a\u0646 \u062a\u0642\u0631\u064a\u0628\u0627",threeToTen:"{{count}} \u0633\u0627\u0639\u0627\u062a \u062a\u0642\u0631\u064a\u0628\u0627\u064b",other:"{{count}} \u0633\u0627\u0639\u0629 \u062a\u0642\u0631\u064a\u0628\u0627\u064b"},xHours:{one:"\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",two:"\u0633\u0627\u0639\u062a\u0627\u0646",threeToTen:"{{count}} \u0633\u0627\u0639\u0627\u062a",other:"{{count}} \u0633\u0627\u0639\u0629"},xDays:{one:"\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",two:"\u064a\u0648\u0645\u0627\u0646",threeToTen:"{{count}} \u0623\u064a\u0627\u0645",other:"{{count}} \u064a\u0648\u0645"},aboutXWeeks:{one:"\u0623\u0633\u0628\u0648\u0639 \u0648\u0627\u062d\u062f \u062a\u0642\u0631\u064a\u0628\u0627",two:"\u0623\u0633\u0628\u0648\u0639\u064a\u0646 \u062a\u0642\u0631\u064a\u0628\u0627",threeToTen:"{{count}} \u0623\u0633\u0627\u0628\u064a\u0639 \u062a\u0642\u0631\u064a\u0628\u0627",other:"{{count}} \u0623\u0633\u0628\u0648\u0639\u0627 \u062a\u0642\u0631\u064a\u0628\u0627"},xWeeks:{one:"\u0623\u0633\u0628\u0648\u0639 \u0648\u0627\u062d\u062f",two:"\u0623\u0633\u0628\u0648\u0639\u0627\u0646",threeToTen:"{{count}} \u0623\u0633\u0627\u0628\u064a\u0639",other:"{{count}} \u0623\u0633\u0628\u0648\u0639\u0627"},aboutXMonths:{one:"\u0634\u0647\u0631 \u0648\u0627\u062d\u062f \u062a\u0642\u0631\u064a\u0628\u0627\u064b",two:"\u0634\u0647\u0631\u064a\u0646 \u062a\u0642\u0631\u064a\u0628\u0627",threeToTen:"{{count}} \u0623\u0634\u0647\u0631 \u062a\u0642\u0631\u064a\u0628\u0627",other:"{{count}} \u0634\u0647\u0631\u0627 \u062a\u0642\u0631\u064a\u0628\u0627\u064b"},xMonths:{one:"\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",two:"\u0634\u0647\u0631\u0627\u0646",threeToTen:"{{count}} \u0623\u0634\u0647\u0631",other:"{{count}} \u0634\u0647\u0631\u0627"},aboutXYears:{one:"\u0633\u0646\u0629 \u0648\u0627\u062d\u062f\u0629 \u062a\u0642\u0631\u064a\u0628\u0627\u064b",two:"\u0633\u0646\u062a\u064a\u0646 \u062a\u0642\u0631\u064a\u0628\u0627",threeToTen:"{{count}} \u0633\u0646\u0648\u0627\u062a \u062a\u0642\u0631\u064a\u0628\u0627\u064b",other:"{{count}} \u0633\u0646\u0629 \u062a\u0642\u0631\u064a\u0628\u0627\u064b"},xYears:{one:"\u0633\u0646\u0629 \u0648\u0627\u062d\u062f",two:"\u0633\u0646\u062a\u0627\u0646",threeToTen:"{{count}} \u0633\u0646\u0648\u0627\u062a",other:"{{count}} \u0633\u0646\u0629"},overXYears:{one:"\u0623\u0643\u062b\u0631 \u0645\u0646 \u0633\u0646\u0629",two:"\u0623\u0643\u062b\u0631 \u0645\u0646 \u0633\u0646\u062a\u064a\u0646",threeToTen:"\u0623\u0643\u062b\u0631 \u0645\u0646 {{count}} \u0633\u0646\u0648\u0627\u062a",other:"\u0623\u0643\u062b\u0631 \u0645\u0646 {{count}} \u0633\u0646\u0629"},almostXYears:{one:"\u0645\u0627 \u064a\u0642\u0627\u0631\u0628 \u0633\u0646\u0629 \u0648\u0627\u062d\u062f\u0629",two:"\u0645\u0627 \u064a\u0642\u0627\u0631\u0628 \u0633\u0646\u062a\u064a\u0646",threeToTen:"\u0645\u0627 \u064a\u0642\u0627\u0631\u0628 {{count}} \u0633\u0646\u0648\u0627\u062a",other:"\u0645\u0627 \u064a\u0642\u0627\u0631\u0628 {{count}} \u0633\u0646\u0629"}};var Oa={date:(0,Q.A)({formats:{full:"EEEE\u060c do MMMM y",long:"do MMMM y",medium:"d MMM y",short:"dd/MM/yyyy"},defaultWidth:"full"}),time:(0,Q.A)({formats:{full:"HH:mm:ss",long:"HH:mm:ss",medium:"HH:mm:ss",short:"HH:mm"},defaultWidth:"full"}),dateTime:(0,Q.A)({formats:{full:"{{date}} '\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' {{time}}",long:"{{date}} '\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},bd={lastWeek:"eeee '\u0627\u0644\u0645\u0627\u0636\u064a \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' p",yesterday:"'\u0627\u0644\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' p",today:"'\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' p",tomorrow:"'\u063a\u062f\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' p",nextWeek:"eeee '\u0627\u0644\u0642\u0627\u062f\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629' p",other:"P"};const Rc={code:"ar",formatDistance:function(cn,wn,Mn){var si,kn=Zs[cn];return si="string"==typeof kn?kn:1===wn?kn.one:2===wn?kn.two:wn<=10?kn.threeToTen.replace("{{count}}",String(wn)):kn.other.replace("{{count}}",String(wn)),null!=Mn&&Mn.addSuffix?Mn.comparison&&Mn.comparison>0?"\u062e\u0644\u0627\u0644 "+si:"\u0645\u0646\u0630 "+si:si},formatLong:Oa,formatRelative:function(cn){return bd[cn]},localize:{ordinalNumber:function(cn){return String(cn)},era:(0,mt.A)({values:{narrow:["\u0642","\u0628"],abbreviated:["\u0642.\u0645.","\u0628.\u0645."],wide:["\u0642\u0628\u0644 \u0627\u0644\u0645\u064a\u0644\u0627\u062f","\u0628\u0639\u062f \u0627\u0644\u0645\u064a\u0644\u0627\u062f"]},defaultWidth:"wide"}),quarter:(0,mt.A)({values:{narrow:["1","2","3","4"],abbreviated:["\u06311","\u06312","\u06313","\u06314"],wide:["\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0623\u0648\u0644","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0646\u064a","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u062b\u0627\u0644\u062b","\u0627\u0644\u0631\u0628\u0639 \u0627\u0644\u0631\u0627\u0628\u0639"]},defaultWidth:"wide",argumentCallback:function(cn){return cn-1}}),month:(0,mt.A)({values:{narrow:["\u064a","\u0641","\u0645","\u0623","\u0645","\u064a","\u064a","\u0623","\u0633","\u0623","\u0646","\u062f"],abbreviated:["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"],wide:["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"]},defaultWidth:"wide"}),day:(0,mt.A)({values:{narrow:["\u062d","\u0646","\u062b","\u0631","\u062e","\u062c","\u0633"],short:["\u0623\u062d\u062f","\u0627\u062b\u0646\u064a\u0646","\u062b\u0644\u0627\u062b\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639\u0629","\u0633\u0628\u062a"],abbreviated:["\u0623\u062d\u062f","\u0627\u062b\u0646\u064a\u0646","\u062b\u0644\u0627\u062b\u0627\u0621","\u0623\u0631\u0628\u0639\u0627\u0621","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639\u0629","\u0633\u0628\u062a"],wide:["\u0627\u0644\u0623\u062d\u062f","\u0627\u0644\u0627\u062b\u0646\u064a\u0646","\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621","\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621","\u0627\u0644\u062e\u0645\u064a\u0633","\u0627\u0644\u062c\u0645\u0639\u0629","\u0627\u0644\u0633\u0628\u062a"]},defaultWidth:"wide"}),dayPeriod:(0,mt.A)({values:{narrow:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"},abbreviated:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"},wide:{am:"\u0635",pm:"\u0645",morning:"\u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"}},defaultWidth:"wide",formattingValues:{narrow:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064a \u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"},abbreviated:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064a \u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"},wide:{am:"\u0635",pm:"\u0645",morning:"\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d",noon:"\u0627\u0644\u0638\u0647\u0631",afternoon:"\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631",evening:"\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621",night:"\u0641\u064a \u0627\u0644\u0644\u064a\u0644",midnight:"\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644"}},defaultFormattingWidth:"wide"})},match:{ordinalNumber:(0,Wt.A)({matchPattern:/^(\d+)(th|st|nd|rd)?/i,parsePattern:/\d+/i,valueCallback:function(cn){return parseInt(cn,10)}}),era:(0,Ct.A)({matchPatterns:{narrow:/[\u0642\u0628]/,abbreviated:/[\u0642\u0628]\.\u0645\./,wide:/(\u0642\u0628\u0644|\u0628\u0639\u062f) \u0627\u0644\u0645\u064a\u0644\u0627\u062f/},defaultMatchWidth:"wide",parsePatterns:{any:[/\u0642\u0628\u0644/,/\u0628\u0639\u062f/]},defaultParseWidth:"any"}),quarter:(0,Ct.A)({matchPatterns:{narrow:/^[1234]/i,abbreviated:/\u0631[1234]/,wide:/\u0627\u0644\u0631\u0628\u0639 (\u0627\u0644\u0623\u0648\u0644|\u0627\u0644\u062b\u0627\u0646\u064a|\u0627\u0644\u062b\u0627\u0644\u062b|\u0627\u0644\u0631\u0627\u0628\u0639)/},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(cn){return cn+1}}),month:(0,Ct.A)({matchPatterns:{narrow:/^[\u0623\u064a\u0641\u0645\u0633\u0646\u062f]/,abbreviated:/^(\u064a\u0646\u0627\u064a\u0631|\u0641\u0628\u0631\u0627\u064a\u0631|\u0645\u0627\u0631\u0633|\u0623\u0628\u0631\u064a\u0644|\u0645\u0627\u064a\u0648|\u064a\u0648\u0646\u064a\u0648|\u064a\u0648\u0644\u064a\u0648|\u0623\u063a\u0633\u0637\u0633|\u0633\u0628\u062a\u0645\u0628\u0631|\u0623\u0643\u062a\u0648\u0628\u0631|\u0646\u0648\u0641\u0645\u0628\u0631|\u062f\u064a\u0633\u0645\u0628\u0631)/,wide:/^(\u064a\u0646\u0627\u064a\u0631|\u0641\u0628\u0631\u0627\u064a\u0631|\u0645\u0627\u0631\u0633|\u0623\u0628\u0631\u064a\u0644|\u0645\u0627\u064a\u0648|\u064a\u0648\u0646\u064a\u0648|\u064a\u0648\u0644\u064a\u0648|\u0623\u063a\u0633\u0637\u0633|\u0633\u0628\u062a\u0645\u0628\u0631|\u0623\u0643\u062a\u0648\u0628\u0631|\u0646\u0648\u0641\u0645\u0628\u0631|\u062f\u064a\u0633\u0645\u0628\u0631)/},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u064a/i,/^\u0641/i,/^\u0645/i,/^\u0623/i,/^\u0645/i,/^\u064a/i,/^\u064a/i,/^\u0623/i,/^\u0633/i,/^\u0623/i,/^\u0646/i,/^\u062f/i],any:[/^\u064a\u0646\u0627\u064a\u0631/i,/^\u0641\u0628\u0631\u0627\u064a\u0631/i,/^\u0645\u0627\u0631\u0633/i,/^\u0623\u0628\u0631\u064a\u0644/i,/^\u0645\u0627\u064a\u0648/i,/^\u064a\u0648\u0646\u064a\u0648/i,/^\u064a\u0648\u0644\u064a\u0648/i,/^\u0623\u063a\u0633\u0637\u0633/i,/^\u0633\u0628\u062a\u0645\u0628\u0631/i,/^\u0623\u0643\u062a\u0648\u0628\u0631/i,/^\u0646\u0648\u0641\u0645\u0628\u0631/i,/^\u062f\u064a\u0633\u0645\u0628\u0631/i]},defaultParseWidth:"any"}),day:(0,Ct.A)({matchPatterns:{narrow:/^[\u062d\u0646\u062b\u0631\u062e\u062c\u0633]/i,short:/^(\u0623\u062d\u062f|\u0627\u062b\u0646\u064a\u0646|\u062b\u0644\u0627\u062b\u0627\u0621|\u0623\u0631\u0628\u0639\u0627\u0621|\u062e\u0645\u064a\u0633|\u062c\u0645\u0639\u0629|\u0633\u0628\u062a)/i,abbreviated:/^(\u0623\u062d\u062f|\u0627\u062b\u0646\u064a\u0646|\u062b\u0644\u0627\u062b\u0627\u0621|\u0623\u0631\u0628\u0639\u0627\u0621|\u062e\u0645\u064a\u0633|\u062c\u0645\u0639\u0629|\u0633\u0628\u062a)/i,wide:/^(\u0627\u0644\u0623\u062d\u062f|\u0627\u0644\u0627\u062b\u0646\u064a\u0646|\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621|\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621|\u0627\u0644\u062e\u0645\u064a\u0633|\u0627\u0644\u062c\u0645\u0639\u0629|\u0627\u0644\u0633\u0628\u062a)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^\u062d/i,/^\u0646/i,/^\u062b/i,/^\u0631/i,/^\u062e/i,/^\u062c/i,/^\u0633/i],wide:[/^\u0627\u0644\u0623\u062d\u062f/i,/^\u0627\u0644\u0627\u062b\u0646\u064a\u0646/i,/^\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621/i,/^\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621/i,/^\u0627\u0644\u062e\u0645\u064a\u0633/i,/^\u0627\u0644\u062c\u0645\u0639\u0629/i,/^\u0627\u0644\u0633\u0628\u062a/i],any:[/^\u0623\u062d/i,/^\u0627\u062b/i,/^\u062b/i,/^\u0623\u0631/i,/^\u062e/i,/^\u062c/i,/^\u0633/i]},defaultParseWidth:"any"}),dayPeriod:(0,Ct.A)({matchPatterns:{narrow:/^(\u0635|\u0645|\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644|\u0627\u0644\u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631|\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d|\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621|\u0641\u064a \u0627\u0644\u0644\u064a\u0644)/,any:/^(\u0635|\u0645|\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644|\u0627\u0644\u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631|\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d|\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621|\u0641\u064a \u0627\u0644\u0644\u064a\u0644)/},defaultMatchWidth:"any",parsePatterns:{any:{am:/^\u0635/,pm:/^\u0645/,midnight:/\u0645\u0646\u062a\u0635\u0641 \u0627\u0644\u0644\u064a\u0644/,noon:/\u0627\u0644\u0638\u0647\u0631/,afternoon:/\u0628\u0639\u062f \u0627\u0644\u0638\u0647\u0631/,morning:/\u0641\u064a \u0627\u0644\u0635\u0628\u0627\u062d/,evening:/\u0641\u064a \u0627\u0644\u0645\u0633\u0627\u0621/,night:/\u0641\u064a \u0627\u0644\u0644\u064a\u0644/}},defaultParseWidth:"any"})},options:{weekStartsOn:6,firstWeekContainsDate:1}};var Nr=s(7232),Nc=s(9651),pa=s(7705),Ed=s(6860);const qs={"en-US":{abbr:"\u{1f1fa}\u{1f1f8}",text:"English",date:it.A,ng:o,zorro:Nr.Bh,delon:Ke.Bh,columnWidthZoom:1.3,color:"#1E88E5"},"zh-CN":{abbr:"\u{1f1e8}\u{1f1f3}",text:"\u7b80\u4f53\u4e2d\u6587",ng:K,date:Ee,zorro:Nr.xC,delon:Ke.xC,columnWidthZoom:1,color:"#E53935"},"zh-TW":{abbr:"\u{1f1ed}\u{1f1f0}",text:"\u7e41\u4f53\u4e2d\u6587",date:Pi,ng:Te,zorro:Nr.lm,delon:Ke.lm,columnWidthZoom:1,color:"#8E24AA"},"ja-JP":{abbr:"\u{1f1ef}\u{1f1f5}",text:"\u65e5\u672c\u8a9e",date:Ci,ng:F,zorro:Nr.vo,delon:Ke.vo,columnWidthZoom:1,color:"#F06292"},"ko-KR":{abbr:"\u{1f1f0}\u{1f1f7}",text:"\ud55c\uad6d\uc5b4",date:dt,ng:X,zorro:Nr.Fs,delon:Ke.Fs,columnWidthZoom:1,color:"#00ACC1"},"fr-FR":{abbr:"\u{1f1eb}\u{1f1f7}",text:"En fran\xe7ais",date:ss,ng:U,zorro:Nr.yn,delon:Ke.f2,columnWidthZoom:1.5,color:"#3949AB"},"ru-RU":{abbr:"\u{1f1f7}\u{1f1fa}",text:"\u0440\u0443\u0441\u0441\u043a",date:er,ng:_e,zorro:Nr.i,delon:Ke._d,columnWidthZoom:1.5,color:"#546E7A"},"de-DE":{abbr:"\u{1f1e9}\u{1f1ea}",text:"Deutsch",date:Hn,ng:nt,zorro:Nr.Qd,delon:Ke.Bh,columnWidthZoom:1.5,color:"#6D4C41"},"es-ES":{abbr:"\u{1f1ea}\u{1f1f8}",text:"espa\xf1ol",date:yi,ng:j,zorro:Nr._d,delon:Ke.Bh,columnWidthZoom:1.5,color:"#FB8C00"},"pt-PT":{abbr:"\u{1f1f5}\u{1f1f9}",text:"Portugu\xeas",date:Xs,ng:et,zorro:Nr.kG,delon:Ke.Bh,columnWidthZoom:1.5,color:"#43A047"},"id-ID":{abbr:"\u{1f1ee}\u{1f1e9}",text:"Bahasa Indonesia",date:yd,ng:$e,zorro:Nr.Bh,delon:Ke.Bh,columnWidthZoom:1.5,color:"#D81B60"},"ar-SA":{abbr:"\u{1f1f8}\u{1f1e6}",text:"\u0627\u0644\u0639\u0631\u0628\u064a\u0629",date:Rc,ng:ht,zorro:Nr.Fd,delon:Ke.Bh,columnWidthZoom:1.2,color:"#009688"}};for(let Pn in qs)(0,n.EO)(qs[Pn].ng);let ic=(()=>{class Pn{getDefaultLang(){if(this.settings.layout.lang)return this.settings.layout.lang;let wn=(navigator.languages?navigator.languages[0]:null)||navigator.language;const Mn=wn.split("-");return Mn.length<=1?wn:`${Mn[0]}-${Mn[1].toUpperCase()}`}constructor(wn,Mn,kn,si){this.settings=wn,this.nzI18nService=Mn,this.delonLocaleService=kn,this.platform=si}ngOnInit(){}loadLangData(wn){let Mn=new XMLHttpRequest;Mn.open("GET","erupt.i18n.csv?v="+Nc.U.get().hash),Mn.send(),Mn.onreadystatechange=()=>{let kn={};if(4==Mn.readyState&&200==Mn.status){let Fs,ea=Mn.responseText.split(/\r?\n|\r/),gl=ea[0].split(",");for(let Bs=0;Bs{let _l=function si(ea){let gl=[],Fs="",Bs=!1,_l=!1;for(let Xa=0;Xa0&&gl.push(Fs),gl}(Bs);kn[_l[0]]=_l[Fs]}),this.langMapping=kn,wn()}}}use(wn){const Mn=qs[wn];(0,n.EO)(Mn.ng,Mn.abbr),this.nzI18nService.setLocale(Mn.zorro),this.nzI18nService.setDateLocale(Mn.date),this.delonLocaleService.setLocale(Mn.delon),this.datePipe=new n.vh(wn),this.currentLang=wn}getCurrLangInfo(){return qs[this.currentLang]||qs["zh-CN"]}getLangs(){return Object.keys(qs).map(wn=>({code:wn,text:qs[wn].text,abbr:qs[wn].abbr}))}fanyi(wn){return this.langMapping[wn]||wn}static{this.\u0275fac=function(Mn){return new(Mn||Pn)(pa.KVO(Ke.h$),pa.KVO(Nr.Og),pa.KVO(Ke.mW),pa.KVO(Ed.OD))}}static{this.\u0275prov=pa.jDH({token:Pn,factory:Pn.\u0275fac})}}return Pn})()},5731:($t,Be,s)=>{s.d(Be,{xQ:()=>Ie,SU:()=>n.S,bl:()=>Te.b,Jc:()=>e.J});var n=s(6619),e=s(418),a=s(4710),o=s(1626),u=s(8810),ae=s(7673),K=s(1397),V=s(9437),G=s(5312),U=s(8926),O=s(5032),Z=s(1911),j=s(2096),q=s(6504),De=s(7094),_e=s(7705),re=s(2921);let Ie=(()=>{class Fe{constructor(X,w,R,F,ve,at,nt,Mt,qe){this.injector=X,this.modal=w,this.notify=R,this.msg=F,this.tokenService=ve,this.router=at,this.notification=nt,this.i18n=Mt,this.cacheService=qe}goTo(X){setTimeout(()=>this.injector.get(a.Ix).navigateByUrl(X))}handleData(X){switch(X.status){case 200:if(X instanceof o.cS){const w=X.body;if("status"in w&&"message"in w&&"promptWay"in w){let R=w;if(R.message)switch(R.promptWay){case U.M.NONE:break;case U.M.DIALOG:switch(R.status){case U.n.INFO:this.modal.info({nzTitle:R.message});break;case U.n.SUCCESS:this.modal.success({nzTitle:R.message});break;case U.n.WARNING:this.modal.warning({nzTitle:R.message});break;case U.n.ERROR:this.modal.error({nzTitle:R.message})}break;case U.M.MESSAGE:switch(R.status){case U.n.INFO:this.msg.info(R.message);break;case U.n.SUCCESS:this.msg.success(R.message);break;case U.n.WARNING:this.msg.warning(R.message);break;case U.n.ERROR:this.msg.error(R.message)}break;case U.M.NOTIFY:switch(R.status){case U.n.INFO:this.notify.info(R.message,null,{nzDuration:0});break;case U.n.SUCCESS:this.notify.success(R.message,null,{nzDuration:0});break;case U.n.WARNING:this.notify.warning(R.message,null,{nzDuration:0});break;case U.n.ERROR:this.notify.error(R.message,null,{nzDuration:0})}}if(R.promptWay!=U.M.NONE&&(R.status===U.n.WARNING||R.status===U.n.ERROR))return(0,u.$)(()=>R)}}return(0,ae.of)(X);case 401:"/passport/login"!==this.router.url&&this.cacheService.set(O.o.loginBackPath,this.router.url),-1!==X.url.indexOf("erupt-api/menu")?(this.goTo("/passport/login"),this.modal.closeAll(),this.tokenService.clear()):this.tokenService.get().token?this.modal.confirm({nzTitle:this.i18n.fanyi("login_expire.tip"),nzOkText:this.i18n.fanyi("login_expire.retry"),nzOnOk:()=>{this.goTo("/passport/login"),this.modal.closeAll()},nzOnCancel:()=>{this.modal.closeAll()}}):this.goTo("/passport/login");break;case 404:if(-1!=X.url.indexOf("/form-value"))break;this.goTo("/exception/404");break;case 403:-1!=X.url.indexOf("/erupt-api/build/")?this.goTo("/exception/403"):this.modal.warning({nzTitle:this.i18n.fanyi("none_permission")});break;case 500:-1!=X.url.indexOf("/erupt-api/build/")?this.router.navigate(["/exception/500"],{queryParams:{message:X.error.message}}):(this.modal.error({nzTitle:X.error.message}),Object.assign(X,{status:200,ok:!0,body:{status:U.n.ERROR}}));break;default:X instanceof o.yz&&(console.warn("Unknown errors, mostly due to unresponsive backend or invalid configuration",X),this.msg.error(X.message))}return(0,u.$)(()=>X)}intercept(X,w){let R=X.url;!R.startsWith("https://")&&!R.startsWith("http://")&&!R.startsWith("//")&&(R=G.c.api.baseUrl+R);const F=X.clone({url:R,headers:X.headers.set("lang",this.i18n.currentLang||"")});return w.handle(F).pipe((0,K.Z)(ve=>ve instanceof o.cS&&200===ve.status?this.handleData(ve):(0,ae.of)(ve)),(0,V.W)(ve=>ve&&"object"==typeof ve&&"status"in ve&&"message"in ve&&"promptWay"in ve?(0,u.$)(()=>ve):this.handleData(ve)))}static{this.\u0275fac=function(w){return new(w||Fe)(_e.KVO(_e.zZn),_e.KVO(j.N_),_e.KVO(q.xY),_e.KVO(De.xh),_e.KVO(Z.S2),_e.KVO(a.Ix),_e.KVO(q.xY),_e.KVO(n.S),_e.KVO(re._))}}static{this.\u0275prov=_e.jDH({token:Fe,factory:Fe.\u0275fac})}}return Fe})();var Te=s(3778)},418:($t,Be,s)=>{function n(e,a){if(e)throw new Error(`${a} has already been loaded. Import Core modules in the AppModule only.`)}s.d(Be,{J:()=>n})},3778:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{b:()=>StartupService});var _Users_liyuepeng_git_erupt_web_node_modules_angular_devkit_build_angular_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(4523),_delon_auth__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(1911),_style_icons_auto__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1138),_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(5957),_shared_model_erupt_const__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(5032),_build_erupt_model_erupt_enum__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(309),_shared_model_erupt_app_model__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(9651),_build_erupt_model_erupt_tenant__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(3497),ng_zorro_antd_message__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(7094),_angular_core__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(7705),ng_zorro_antd_icon__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(1951),_delon_abc_reuse_tab__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(9663),_delon_theme__WEBPACK_IMPORTED_MODULE_11__=__webpack_require__(4275),_i18n_i18n_service__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(6619);let StartupService=(()=>{class StartupService{constructor($t,Be,s,n,e,a,o){this.reuseTabService=Be,this.titleService=s,this.settingSrv=n,this.i18n=e,this.msg=a,this.tokenService=o,$t.addIcon(..._style_icons_auto__WEBPACK_IMPORTED_MODULE_0__.d)}load(){var _this=this;return(0,_Users_liyuepeng_git_erupt_web_node_modules_angular_devkit_build_angular_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_6__.A)(function*(){_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.init(),_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.copyright&&(console.group(_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.title),console.log("%c __ \n /\\ \\__ \n __ _ __ __ __ _____ \\ \\ ,_\\ \n /'__`\\/\\`'__\\/\\ \\/\\ \\ /\\ '__`\\\\ \\ \\/ \n/\\ __/\\ \\ \\/ \\ \\ \\_\\ \\\\ \\ \\L\\ \\\\ \\ \\_ \n\\ \\____\\\\ \\_\\ \\ \\____/ \\ \\ ,__/ \\ \\__\\\n \\/____/ \\/_/ \\/___/ \\ \\ \\/ \\/__/\n \\ \\_\\ \n \\/_/ \nhttps://www.erupt.xyz","color:#2196f3;font-weight:800"),console.groupEnd()),window.eruptWebSuccess=!0;let that=_this;return yield new Promise((resolve,reject)=>{let xhr=new XMLHttpRequest;xhr.open("GET",_build_erupt_model_erupt_enum__WEBPACK_IMPORTED_MODULE_2__.eY.eruptApp),xhr.send(),xhr.onreadystatechange=()=>{if(4==xhr.readyState&&200==xhr.status){setTimeout(()=>{window.SW&&(window.SW.stop(),window.SW=null)},2e3);let eruptAppProp=JSON.parse(xhr.responseText);if(_shared_model_erupt_app_model__WEBPACK_IMPORTED_MODULE_3__.U.put(eruptAppProp),_shared_model_erupt_app_model__WEBPACK_IMPORTED_MODULE_3__.U.get().properties["erupt-tenant"]){let domainInfoXhr=new XMLHttpRequest;domainInfoXhr.open("GET",_build_erupt_model_erupt_enum__WEBPACK_IMPORTED_MODULE_2__.eY.domainInfo+"?host="+location.host),domainInfoXhr.send(),domainInfoXhr.onreadystatechange=()=>{if(4==domainInfoXhr.readyState&&200==domainInfoXhr.status){let tenantDomainInfo=JSON.parse(domainInfoXhr.responseText).data;if(tenantDomainInfo){if(_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.config.title=tenantDomainInfo.name,_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.config.logoText=tenantDomainInfo.name,_build_erupt_model_erupt_tenant__WEBPACK_IMPORTED_MODULE_4__.Z.put(tenantDomainInfo),tenantDomainInfo.css){const $t=document.createElement("style");$t.textContent=tenantDomainInfo.css,document.head.appendChild($t)}if(tenantDomainInfo.js)try{eval(tenantDomainInfo.js)}catch($t){that.msg.error("tenant js err: "+$t)}_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.init(),_shared_model_erupt_app_model__WEBPACK_IMPORTED_MODULE_3__.U.put(eruptAppProp)}resolve()}}}else resolve()}else 200!==xhr.status&&setTimeout(()=>{location.href=location.href.split("#")[0]},3e3)}}),window[_shared_model_erupt_const__WEBPACK_IMPORTED_MODULE_7__.o.getAppToken]=()=>_this.tokenService.get(),_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.eruptEvent&&_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.eruptEvent.startup&&_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.eruptEvent.startup(),_this.settingSrv.layout.reuse=!!_this.settingSrv.layout.reuse,_this.settingSrv.layout.bordered=!1!==_this.settingSrv.layout.bordered,_this.settingSrv.layout.breadcrumbs=!1!==_this.settingSrv.layout.breadcrumbs,_this.settingSrv.layout.reuse?(_this.reuseTabService.mode=0,_this.reuseTabService.excludes=[]):(_this.reuseTabService.mode=2,_this.reuseTabService.excludes=[/\d*/]),new Promise($t=>{_this.settingSrv.setApp({name:_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.title,description:_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.desc}),_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.title&&(_this.titleService.suffix=_shared_model_window_model__WEBPACK_IMPORTED_MODULE_1__.y.title),_this.titleService.default="";{let Be=_shared_model_erupt_app_model__WEBPACK_IMPORTED_MODULE_3__.U.get().locales,s={};for(let e of Be)s[e]=e;let n=_this.i18n.getDefaultLang();s[n]||(n=Be[0]),_this.settingSrv.setLayout("lang",n),_this.i18n.use(n)}_this.i18n.loadLangData(()=>{$t(null)})})})()}static{this.\u0275fac=function(Be){return new(Be||StartupService)(_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(ng_zorro_antd_icon__WEBPACK_IMPORTED_MODULE_9__.Rt),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(_delon_abc_reuse_tab__WEBPACK_IMPORTED_MODULE_10__.T5),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(_delon_theme__WEBPACK_IMPORTED_MODULE_11__.E3),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(_delon_theme__WEBPACK_IMPORTED_MODULE_11__.h$),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(_i18n_i18n_service__WEBPACK_IMPORTED_MODULE_5__.S),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(ng_zorro_antd_message__WEBPACK_IMPORTED_MODULE_12__.xh),_angular_core__WEBPACK_IMPORTED_MODULE_8__.KVO(_delon_auth__WEBPACK_IMPORTED_MODULE_13__.S2))}}static{this.\u0275prov=_angular_core__WEBPACK_IMPORTED_MODULE_8__.jDH({token:StartupService,factory:StartupService.\u0275fac})}}return StartupService})()},4759:($t,Be,s)=>{s.d(Be,{g:()=>o});var n=s(2096),e=s(7705),a=s(1582);let o=(()=>{class u{constructor(K){this.modal=K,K.closeAll()}static{this.\u0275fac=function(V){return new(V||u)(e.rXU(n.N_))}}static{this.\u0275cmp=e.VBU({type:u,selectors:[["exception-403"]],decls:1,vars:0,consts:[["type","403",2,"min-height","700px","height","80%"]],template:function(V,G){1&V&&e.nrm(0,"exception",0)},dependencies:[a.v],encapsulation:2})}}return u})()},222:($t,Be,s)=>{s.d(Be,{x:()=>o});var n=s(2096),e=s(7705),a=s(1582);let o=(()=>{class u{constructor(K){this.modal=K,K.closeAll()}static{this.\u0275fac=function(V){return new(V||u)(e.rXU(n.N_))}}static{this.\u0275cmp=e.VBU({type:u,selectors:[["exception-404"]],decls:1,vars:0,consts:[["type","404",2,"min-height","700px","height","80%"]],template:function(V,G){1&V&&e.nrm(0,"exception",0)},dependencies:[a.v],encapsulation:2})}}return u})()},3653:($t,Be,s)=>{s.d(Be,{q:()=>u});var n=s(2096),e=s(7705),a=s(4710),o=s(1582);let u=(()=>{class ae{constructor(V,G){this.modal=V,this.router=G,this.message="";let U=G.getCurrentNavigation().extras.queryParams;U&&(this.message=U.message),V.closeAll()}static{this.\u0275fac=function(G){return new(G||ae)(e.rXU(n.N_),e.rXU(a.Ix))}}static{this.\u0275cmp=e.VBU({type:ae,selectors:[["exception-500"]],decls:3,vars:1,consts:[["type","500",2,"min-height","700px","height","80%"]],template:function(G,U){1&G&&(e.j41(0,"exception",0)(1,"div"),e.EFF(2),e.k0s()()),2&G&&(e.R7$(2),e.SpI(" ",U.message," "))},dependencies:[o.v],encapsulation:2})}}return ae})()},5429:($t,Be,s)=>{s.d(Be,{h:()=>Z});var n=s(177),e=s(9651),a=s(7705),o=s(4275),u=s(5731),ae=s(6389),K=s(1868),V=s(2602),G=s(1951);function U(j,q){if(1&j){const De=a.RV6();a.j41(0,"li",5),a.bIt("click",function(){const Ie=a.eBV(De).$implicit,Te=a.XpG(2);return a.Njj(Te.change(Ie.code))}),a.j41(1,"span",6),a.EFF(2),a.k0s(),a.EFF(3),a.k0s()}if(2&j){const De=q.$implicit,_e=a.XpG(2);a.Y8G("nzSelected",De.code==_e.curLangCode),a.R7$(1),a.BMQ("aria-label",De.text),a.R7$(1),a.JRh(De.abbr),a.R7$(1),a.SpI(" ",De.text," ")}}function O(j,q){if(1&j&&(a.qex(0),a.nrm(1,"i",1),a.j41(2,"nz-dropdown-menu",null,2)(4,"ul",3),a.DNE(5,U,4,4,"li",4),a.k0s()(),a.bVm()),2&j){const De=a.sdS(3),_e=a.XpG();a.R7$(1),a.Y8G("nzDropdownMenu",De),a.R7$(4),a.Y8G("ngForOf",_e.langs)}}let Z=(()=>{class j{constructor(De,_e,re){this.settings=De,this.i18n=_e,this.doc=re,this.langs=[];let Ie=e.U.get().locales,Te={};for(let Fe of Ie)Te[Fe]=Fe;for(let Fe of this.i18n.getLangs())Te[Fe.code]&&this.langs.push(Fe);this.curLangCode=this.settings.getLayout().lang}change(De){this.i18n.use(De),this.settings.setLayout("lang",De),setTimeout(()=>this.doc.location.reload())}static{this.\u0275fac=function(_e){return new(_e||j)(a.rXU(o.h$),a.rXU(u.SU),a.rXU(n.qQ))}}static{this.\u0275cmp=a.VBU({type:j,selectors:[["i18n-choice"]],hostVars:2,hostBindings:function(_e,re){2&_e&&a.AVh("flex-1",!0)},decls:1,vars:1,consts:[[4,"ngIf"],["nz-dropdown","","nzPlacement","bottomRight","nz-icon","","nzType","global",3,"nzDropdownMenu"],["langMenu",""],["nz-menu","","nzSelectable",""],["nz-menu-item","",3,"nzSelected","click",4,"ngFor","ngForOf"],["nz-menu-item","",3,"nzSelected","click"],["role","img",1,"pr-xs"]],template:function(_e,re){1&_e&&a.DNE(0,O,6,2,"ng-container",0),2&_e&&a.Y8G("ngIf",re.langs.length>1)},dependencies:[n.Sq,n.bT,ae.c,K.jS,K.CU,V.j3,V.wQ,G.Dn],encapsulation:2,changeDetection:0})}}return j})()},2997:($t,Be,s)=>{s.d(Be,{O:()=>ae});var n=s(1681),e=s(7705),a=s(177),o=s(2983),u=s(7890);let ae=(()=>{class K{constructor(){this.style={},this.spin=!0}ngOnInit(){this.spin=!0,this.height&&(this.style.height=this.height),this.width&&(this.style.width=this.width),setTimeout(()=>{this.spin=!1},3e3)}iframeLoad(G){if(this.spin=!1,!this.height)try{(0,n.U)(G)}catch(U){this.style.height="600px",console.error(U)}this.spin=!1}static{this.\u0275fac=function(U){return new(U||K)}}static{this.\u0275cmp=e.VBU({type:K,selectors:[["erupt-iframe"]],inputs:{url:"url",height:"height",width:"width",style:"style"},decls:3,vars:5,consts:[[2,"height","100%","width","100%",3,"nzSpinning"],["height","100%",2,"width","100%","border","0","display","block","vertical-align","bottom",3,"src","ngStyle","load"]],template:function(U,O){1&U&&(e.j41(0,"nz-spin",0)(1,"iframe",1),e.bIt("load",function(j){return O.iframeLoad(j)}),e.nI1(2,"safeUrl"),e.k0s()()),2&U&&(e.Y8G("nzSpinning",O.spin),e.R7$(1),e.Y8G("src",e.bMT(2,3,O.url),e.f$h)("ngStyle",O.style))},dependencies:[a.B3,o.a,u.d],encapsulation:2})}}return K})()},8862:($t,Be,s)=>{s.d(Be,{f:()=>ni});const e=typeof window<"u",a=typeof global<"u"?global:typeof window<"u"?window:typeof self<"u"?self:Function("return this")(),o=()=>!1,u=Array.isArray,ae=Object.assign,K=Object.defineProperty,V=Object.defineProperties,G=Object.prototype.toString,U=Object.prototype.hasOwnProperty,O=_=>G.call(_);function Z(_){return void 0===_}function j(_){return null===_}function q(_){return"string"==typeof _}function De(_){return"boolean"==typeof _}function _e(_){return"number"==typeof _}function re(_){return"function"==typeof _}function Ie(_){return"[object Object]"===O(_)}function Fe(_){return"[object Promise]"===O(_)}function X(_){var E;if(re(_)){const P=_.toString();return(null===(E=_.prototype)||void 0===E?void 0:E.constructor)===_&&Object.getOwnPropertyNames(_.prototype).length>1||/^function\s+[A-Z]/.test(P)||/^class\s+/.test(P)}return!1}function R(_){var E;return _ instanceof URL||!(null===(E=_)||void 0===E||!E.href)}function F(_){var E;return _ instanceof Element||q(null===(E=_)||void 0===E?void 0:E.tagName)}function ve(_){var E;return _ instanceof Node||_e(null===(E=_)||void 0===E?void 0:E.nodeType)}function qe(_){return"[object HTMLLinkElement]"===O(_)}function et(_){return"[object HTMLStyleElement]"===O(_)}function rt(_){return"[object HTMLScriptElement]"===O(_)}function ye(_){return"[object HTMLImageElement]"===O(_)}function ht(_){return"[object DocumentFragment]"===O(_)}function it(_){return F(_)&&"MICRO-APP-BODY"===_.tagName.toUpperCase()}function Q(_,E){try{return ee(_).pathname.split(".").pop()===E}catch{return!1}}function Le(_,E,P){if(null==_)throw new TypeError("includes target is null or undefined");const H=Object(_),pe=parseInt(H.length,10)||0;if(0===pe)return!1;P=parseInt(P,10)||0;let Oe=Math.max(P>=0?P:pe+P,0);for(;OeP?new _(""+E,P):new _(""+E)}();function He(_){return _.startsWith("//")?`${a.location.protocol}${_}`:_}function ue(_,E=null){if(!q(_)||!_)return"";try{const{origin:P,pathname:H,search:pe}=ee(He(_),(window.rawWindow||window).location.href),Oe=`${P}${H}${pe}`;return/^https?:\/\//.test(Oe)?Oe:""}catch(P){return Se(P,E),""}}function te(_){return q(_)&&_?_.replace(/(^\d+)|([^\w\d-_])/gi,""):""}function Pe(_){const{origin:E,pathname:P}=ee(_);if(/\.(\w+)$/.test(P)){const H=`${E}${P}`.split("/");return H.pop(),H.join("/")+"/"}return`${E}${P}/`.replace(/\/\/$/,"/")}function _t(_,E){return!_||/^((((ht|f)tps?)|file):)?\/\//.test(_)||/^(data|blob):/.test(_)?_:ee(_,Pe(He(E))).toString()}function mt(_,E,P,H){let pe=0;function Oe(){++pe===_.length&&H&&H()}_.forEach((ke,ct)=>{Fe(ke)?ke.then(Ht=>{E({data:Ht,index:ct}),Oe()}).catch(Ht=>{P({error:Ht,index:ct}),Oe()}):(E({data:ke,index:ct}),Oe())})}const T=a.requestIdleCallback||function(_){const E=Date.now();return setTimeout(function(){_({didTimeout:!1,timeRemaining:()=>Math.max(0,50-(Date.now()-E))})},1)};function S(_){return new Promise(E=>{T(()=>{_(E)})})}let be=null;function lt(_){be=_}function wt(){return be}function Qt(_){be!==_&&!mn()&&(lt(_),Y(()=>{lt(null)}))}let Ct=null;function Wt(_){Ct=_}function Re(){return Ct}function gt(_){Ct!==_&&!mn()&&(Wt(_),Y(()=>{Wt(null)}))}let pt=!1;function mn(){return pt}function Ft(_){!1!==_?(lt(null),Wt(null),_&&!pt&&(pt=!0,Y(()=>{pt=!1}))):pt=!1}function xn(_,E){const P=(window.rawDocument||document).createElement(_,E);return P.__MICRO_APP_NAME__&&delete P.__MICRO_APP_NAME__,P.__PURE_ELEMENT__=!0,P}function jt(_){return!_||/(^\d)|([^\w\d-_\u4e00-\u9fa5])/gi.test(_)}function dn(_){return/^body$/i.test(_)||/^head$/i.test(_)||/^html$/i.test(_)||/^title$/i.test(_)||/^:root$/i.test(_)}function ft(_){return function w(_){return typeof ShadowRoot<"u"&&_ instanceof ShadowRoot}(_)?_.host:_}function rn(_){return _?_.replace(/^\s+|\s+$/g,""):""}function Vt(){return navigator.userAgent.indexOf("Firefox")>-1}function Nt(_){const E={},P=_.split("&");for(const H of P){const pe=H.indexOf("="),Oe=pe<0?H:H.slice(0,pe),ke=pe<0?null:H.slice(pe+1);if(Oe in E){let ct=E[Oe];u(ct)||(ct=E[Oe]=[ct]),ct.push(ke)}else E[Oe]=ke}return E}function Je(_){let E="";for(const P in _){const H=_[P];j(H)?E+=(E.length?"&":"")+P:(u(H)?H:[H]).forEach(Oe=>{Z(Oe)||(E+=(E.length?"&":"")+P,j(Oe)||(E+="="+Oe))})}return E}function ge(){const _=new Set;return{add:function E(P){return _.add(P),()=>!!_.has(P)&&_.delete(P)},list:()=>_}}function Ee(_){const E=_.attributes,P=new Map;for(let H=0;HS(P=>{E(),P()})):E()}function ce(_){return _?.reduce((E,P)=>E.then(P),Promise.resolve())||null}function ze(_){return _.startsWith("inline-")}function ie(_,E,P,...H){try{re(_)&&_(...H)}catch(pe){Se(`An error occurred in app ${E} window.${P} \n`,null,pe)}}function Ne(_,E){if(null==_)return!1;if(!re(E))throw new TypeError("Right-hand side of 'instanceof' is not callable");if("number"==typeof _||"string"==typeof _||"boolean"==typeof _)return!1;let P=Object.getPrototypeOf(_);for(;P;){if(P===E.prototype)return!0;P=Object.getPrototypeOf(P)}return!1}const zt=["mounted","unmount"];function Pt(_,E){return zt.includes(_)?`${_}-${E}`:_}function Ot(_,E,P,H){var pe;if(!_)return st(`element does not exist in lifecycle ${P}`,E);_=ft(_),Ft();const Oe=ae({name:E,container:_},H&&{error:H}),ke=new CustomEvent(P,{detail:Oe});(function Dn(_,E){Object.defineProperties(_,{currentTarget:{get:()=>E},target:{get:()=>E}})})(ke,_),re(null===(pe=xe.options.lifeCycles)||void 0===pe?void 0:pe[P])&&xe.options.lifeCycles[P](ke,E),_.dispatchEvent(ke)}function xt(_,E,P={}){var H;const pe=new CustomEvent(Pt(E,_.name),{detail:P});null===(H=_.sandBox)||void 0===H||H.microAppWindow.dispatchEvent(pe)}function A(_,E=null,P={}){return Ft(),re(xe.options.fetch)?xe.options.fetch(_,P,E):window.fetch(_,P).then(H=>H.text())}class b{static getInstance(){return this.instance||(this.instance=new b),this.instance}run(E,P){const H=E.name,pe=E.ssrUrl||E.url;(Q(pe,"js")?Promise.resolve(` diff --git a/pom.xml b/pom.xml index 42d5805da..79bd27ab0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 xyz.erupt erupt - 1.13.1 + 1.13.2 pom erupt @@ -15,7 +15,7 @@ UTF-8 xyz.erupt 17 - 3.5.6 + 3.5.9 erupt-websocket + + erupt-notice erupt-web @@ -103,6 +105,12 @@ lombok true + + org.jetbrains + annotations + 24.0.1 + provided + org.springframework.boot spring-boot-starter-test @@ -177,7 +185,7 @@ disable-javadoc-doclint - [1.8,) + [17,) -Xdoclint:none