From 48b797eb6444b0362ca4b9054b430d7a09a5764f Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 20 Mar 2026 11:08:17 +0800 Subject: [PATCH 1/2] commit --- .../app/base/constant/RedisConstant.java | 2 + .../com/budwk/app/base/sms/SmsService.java | 131 +++++++++- .../base/sms/impl/ncu/SmsNcuServiceImpl.java | 158 ++++++++++++- .../base/sms/impl/ncu/util/SmsTokenUtil.java | 26 +- .../flow/controller/FlowCommonController.java | 4 + .../ProcessTaskEndEventListener.java | 9 + .../ProcessTaskStartEventListener.java | 25 +- .../impl/ProcessInstanceServiceImpl.java | 15 +- .../strategy/impl/SmsMessageSendStrategy.java | 8 +- ...xecutiveCommitteeFormalPushController.java | 179 ++++++++++++++ ...ExecutiveCommitteeUnionPushController.java | 1 - .../models/ExecutiveCommitteeTwoPush.java | 11 + .../ProposalQueryComprehensiveController.java | 24 +- ...ProposalCommitteeFilingUnitController.java | 2 +- .../transact/ProposalSecondedController.java | 4 +- .../ProposalDelegationPrefixInterceptor.java | 13 +- .../impl/ProposalExportServiceImpl.java | 34 +-- .../views/platform/flow/define/preview.html | 3 +- .../zhgh/club/common/clubInfoComponent.js | 3 + .../zhgh/club/register/schoolReply/index.html | 25 +- .../delegationTwoPush/index.html | 2 +- .../delegationTwoPush/twoPushFormalDialog.js | 2 +- .../executiveCommittee/formalPush/index.html | 223 ++++++++++++++++++ .../formalPush/pushFormalDialog.js | 95 ++++++++ .../preparatoryGroupPush/pushFormalDialog.js | 2 +- .../transact/committeeFiling/merge.js | 4 +- .../transact/committeeFilingUnit/index.html | 2 +- 27 files changed, 930 insertions(+), 77 deletions(-) create mode 100644 src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeFormalPushController.java create mode 100644 src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/index.html create mode 100644 src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/pushFormalDialog.js diff --git a/src/main/java/com/budwk/app/base/constant/RedisConstant.java b/src/main/java/com/budwk/app/base/constant/RedisConstant.java index 83bd8427..c68f2aa9 100644 --- a/src/main/java/com/budwk/app/base/constant/RedisConstant.java +++ b/src/main/java/com/budwk/app/base/constant/RedisConstant.java @@ -32,6 +32,8 @@ public class RedisConstant { // 短信token public final static String REDIS_SMS_TOKEN_KEY = PLATFORM_REDIS_PREFIX + "platfrom:sms:token:"; + public final static String REDIS_TODO_TOKEN_KEY = PLATFORM_REDIS_PREFIX + "platfrom:todo:token:"; + public final static String REDIS_KEY_API_SIGN_DEPLOY_NONCE = PLATFORM_REDIS_PREFIX + "api:sign:deploy:nonce:"; public final static String REDIS_KEY_API_SIGN_OPEN_NONCE = PLATFORM_REDIS_PREFIX + "api:sign:open:nonce:"; diff --git a/src/main/java/com/budwk/app/base/sms/SmsService.java b/src/main/java/com/budwk/app/base/sms/SmsService.java index 37ea187e..4003f203 100644 --- a/src/main/java/com/budwk/app/base/sms/SmsService.java +++ b/src/main/java/com/budwk/app/base/sms/SmsService.java @@ -2,12 +2,131 @@ package com.budwk.app.base.sms; import java.util.List; +/** + * 短信/消息发送服务接口 + * 保持参数直观可见,调用者无需查看实体类即可知晓参数含义 + */ public interface SmsService { - /** - * 单发 - * @param loginName 工号 - * @param content 内容 - */ - void send(String loginName, String content); + /** + * 单发普通消息(无标题) + * @param loginName 接收人工号(必填) + * @param content 消息内容(必填) + * @return + */ + void sendSingleMessage(String loginName, String content); + + /** + * 单发普通消息(带标题) + * @param loginName 接收人工号(必填) + * @param title 消息标题(可选,可为null) + * @param content 消息内容(必填) + * @return + */ + void sendSingleMessage(String loginName, String title, String content); + + /** + * 单发文本卡片消息 + * @param loginName 接收人工号(必填) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @return + */ + void sendSingleTextCard(String loginName, String content, String pcUrl, String mobileUrl); + + /** + * 单发文本卡片消息(带标题) + * @param loginName 接收人工号(必填) + * @param title 卡片标题(可选,可为null) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @return + */ + void sendSingleTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl); + + /** + * 单发图文卡片消息 + * @param loginName 接收人工号(必填) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @param picUrl 图片链接(必填) + * @return + */ + void sendSinglePicTextCard(String loginName, String content, String pcUrl, String mobileUrl, String picUrl); + + /** + * 单发图文卡片消息(带标题) + * @param loginName 接收人工号(必填) + * @param title 卡片标题(可选,可为null) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @param picUrl 图片链接(必填) + * @return + */ + void sendSinglePicTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl, String picUrl); + + /** + * 群发普通消息(多人接收相同内容) + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 消息内容(必填) + * @return void + */ + void massSendMessage(List loginNames, String content); + + /** + * 群发普通消息(多人接收相同内容) + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param title 消息标题(可选,可为null) + * @param content 消息内容(必填) + * @return void + */ + void massSendMessage(List loginNames, String title, String content); + + /** + * 群发短信文本卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @return + */ + void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl); + + /** + * 群发短信文本卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param title 卡片标题(可选,可为null) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @return + */ + void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl); + + /** + * 群发图文卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @param picUrl 图片链接(必填) + * @return + */ + void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl); + + /** + * 群发图文卡片消息 + * @param loginNames 接收人工号列表(必填,不能为空列表) + * @param title 卡片标题(可选,可为null) + * @param content 卡片内容(必填) + * @param pcUrl PC端跳转链接(必填) + * @param mobileUrl 移动端跳转链接(必填) + * @param picUrl 图片链接(必填) + * @return + */ + void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl); } diff --git a/src/main/java/com/budwk/app/base/sms/impl/ncu/SmsNcuServiceImpl.java b/src/main/java/com/budwk/app/base/sms/impl/ncu/SmsNcuServiceImpl.java index b332a0ea..59217093 100644 --- a/src/main/java/com/budwk/app/base/sms/impl/ncu/SmsNcuServiceImpl.java +++ b/src/main/java/com/budwk/app/base/sms/impl/ncu/SmsNcuServiceImpl.java @@ -1,27 +1,171 @@ package com.budwk.app.base.sms.impl.ncu; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.sms.SmsService; import com.budwk.app.base.sms.impl.ncu.util.SmsTokenUtil; +import com.budwk.app.web.commons.base.Globals; import lombok.extern.slf4j.Slf4j; +import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.lang.Lang; +import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 南昌大学短信实现 */ -@IocBean @Slf4j +@IocBean public class SmsNcuServiceImpl implements SmsService { - private static final String SEND_MSG_URL = "https://api.ucpass.cn/sms/send"; - private static final String APP_ID = ""; + @Inject + private SmsTokenUtil smsTokenUtil; + private static final String SEND_MSG_URL = "https://poa.ncu.edu.cn/apis/messagecenter/v1/poaMessage/messageSend"; + private static final String APP_ID = "72e34a101d3011f1a74cbae5193504f4"; + private static final String TEMPLATE_ID = "MT1773223005000"; - @Override - public void send(String loginName, String content) { - String token = SmsTokenUtil.getToken(); - } + @Override + public void sendSingleMessage(String loginName, String content) { + this.sendSingleMessage(loginName, "智慧工会", content); + } + @Override + public void sendSingleMessage(String loginName, String title, String content) { + this.massSendMessage(List.of(loginName), title, content); + } + + @Override + public void sendSingleTextCard(String loginName, String content, String pcUrl, String mobileUrl) { + this.sendSingleTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl); + } + + @Override + public void sendSingleTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl) { + this.massSendTextCard(List.of(loginName), title, content, pcUrl, mobileUrl); + } + + @Override + public void sendSinglePicTextCard(String loginName, String content, String pcUrl, String mobileUrl, String picUrl) { + this.sendSinglePicTextCard(loginName, "智慧工会", content, pcUrl, mobileUrl, picUrl); + } + + @Override + public void sendSinglePicTextCard(String loginName, String title, String content, String pcUrl, String mobileUrl, String picUrl) { + this.massSendPicTextCard(List.of(loginName), title, content, pcUrl, mobileUrl, picUrl); + } + + @Override + public void massSendMessage(List loginNames, String content) { + this.massSendMessage(loginNames, "智慧工会", content); + } + + @Override + public void massSendMessage(List loginNames, String title, String content) { + String list = String.join(",", loginNames); + this.doSend("text", list, title, content, null, null, null); + } + + @Override + public void massSendTextCard(List loginNames, String content, String pcUrl, String mobileUrl) { + this.massSendTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl); + } + + @Override + public void massSendTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl) { + String list = String.join(",", loginNames); + this.doSend("textCard", list, title, content, pcUrl, mobileUrl, null); + } + + @Override + public void massSendPicTextCard(List loginNames, String content, String pcUrl, String mobileUrl, String picUrl) { + this.massSendPicTextCard(loginNames, "智慧工会", content, pcUrl, mobileUrl, picUrl); + } + + @Override + public void massSendPicTextCard(List loginNames, String title, String content, String pcUrl, String mobileUrl, String picUrl) { + String list = String.join(",", loginNames); + this.doSend("news", list, title, content, pcUrl, mobileUrl, picUrl); + } + + private void doSend(String sendType, + String receivers, + String title, + String content, + String pcUrl, + String mobileUrl, + String picUrl) { + if(!Globals.sso) { + log.error("【log】本地开发模式不允许调用消息接口"); + return; + } + if(!Globals.MyConfig.getBoolean("AppNotify", false)) { + log.error("【log】消息配置未开启"); + return; + } + + if (Lang.isEmpty(receivers)) { + log.error("【log】send fail by receivers is null"); + return; + } + try { + String token = smsTokenUtil.getToken(); + if (Lang.isEmpty(token)) { + log.error("【log】send fail by token is null"); + return; + } + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("sendId", ""); + params.put("sendType", Stream.of("WECHAT").toArray()); + params.put("messageTypeCode", TEMPLATE_ID); + params.put("promise", false); + params.put("importantIdentity", false); + params.put("toPersons", receivers); + + Map dataParams = new HashMap<>(); + dataParams.put("title", title); + dataParams.put("paramValueJson", Map.of("content", content)); + + if ("textCard".equals(sendType)) { + dataParams.put("url", pcUrl); + dataParams.put("mobileUrl", mobileUrl); + } + if ("news".equals(sendType)) { + dataParams.put("url", pcUrl); + dataParams.put("mobileUrl", mobileUrl); + dataParams.put("coverImageUrl", picUrl); + } + params.put("data", dataParams); + + log.info("【log】发送消息通知,请求参数:{}", Json.toJson(params)); + String body = HttpUtil.createPost(SEND_MSG_URL) + .header("Authorization", token) + .header("Content-Type", "application/json") + .body(Json.toJson(params)).execute().body(); + JSONObject resultJsonBody = JSONUtil.parseObj(body); + log.info("【log】发送消息通知,接口响应数据:{}", body); + + if (resultJsonBody.getInt("code") == 0) { + log.info("【log】发送消息通知成功"); + JSONObject data = resultJsonBody.getJSONObject("data"); + String sendId = data.getStr("sendId"); + System.out.println(sendId); + } else { + log.info("【log】发送消息通知失败:{}", resultJsonBody.getStr("message")); + } + } catch (Exception e) { + log.error("【log】发送消息通知失败", e); + } + } } diff --git a/src/main/java/com/budwk/app/base/sms/impl/ncu/util/SmsTokenUtil.java b/src/main/java/com/budwk/app/base/sms/impl/ncu/util/SmsTokenUtil.java index 16c3d52e..8a54a8a0 100644 --- a/src/main/java/com/budwk/app/base/sms/impl/ncu/util/SmsTokenUtil.java +++ b/src/main/java/com/budwk/app/base/sms/impl/ncu/util/SmsTokenUtil.java @@ -5,8 +5,13 @@ import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.budwk.app.base.constant.RedisConstant; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; import org.nutz.integration.jedis.RedisService; import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.mvc.Mvcs; import java.util.HashMap; import java.util.Map; @@ -18,21 +23,19 @@ import java.util.Map; * @Date 2025/12/3 9:53 * @注释 :短信token工具类 */ +@Slf4j +@IocBean public class SmsTokenUtil { @Inject - private static RedisService redisService; + private RedisService redisService; - private static final String TOKEN_URL = "https://api.ucpass.cn/token"; + private static final String TOKEN_URL = "https://poa.ncu.edu.cn/oauth2/token"; + private static final String CLINT_ID = "dP7SXC1MoYAJHPh6k8Cgsda8tGY="; + private static final String CLINT_SECRET = "PFAwVcXOsVFzP3Jwb4RyO5V97o8j8zNTQ8QSTre8oIc="; + private static final String SCOPE = "messagecenter:v1:sendMessage"; - private static final String CLINT_ID = ""; - - private static final String CLINT_SECRET = ""; - - private static final String SCOPE = ""; - - - public static String getToken() { + public String getToken() { String key = RedisConstant.REDIS_SMS_TOKEN_KEY; String token = redisService.get(key); if (StrUtil.isBlank(token)) { @@ -48,7 +51,8 @@ public class SmsTokenUtil { .formStr(param).execute().body(); JSONObject resultJsonBody = JSONUtil.parseObj(body); - if (resultJsonBody.getInt("code") == 200) { + log.info("【log】获取消息token接口回调数据:{}", Json.toJson(resultJsonBody)); + if (StrUtil.isNotBlank(resultJsonBody.getStr("access_token"))) { String accessToken = resultJsonBody.getStr("access_token"); Integer expiresIn = resultJsonBody.getInt("expires_in"); redisService.setex(key, expiresIn, accessToken); diff --git a/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java b/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java index 4f7f65be..c3b12329 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java @@ -23,6 +23,7 @@ import com.budwk.app.flow.service.FlowCommonService; import com.budwk.app.flow.vo.HighLightVO; import com.budwk.app.flow.vo.ProcessInstanceVO; import com.budwk.app.flow.vo.ProcessTaskVO; +import com.budwk.app.todo.service.TodoService; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -52,6 +53,8 @@ public class FlowCommonController { private Dao dao; @Inject private FlowCommonService flowCommonService; + @Inject + private TodoService todoService; @At("/approval/form") @SaCheckLogin @@ -281,6 +284,7 @@ public class FlowCommonController { // 发送任务撤回事件 确保上面执行成功 for (ProcessTask task : taskList) { ProcessPublisher.notify(ProcessEvent.builder().eventType(ProcessEventTypeEnum.PROCESS_TASK_REVOKE).sourceId(task.getId()).build()); + todoService.taskTerminate(task); } return Result.success(); diff --git a/src/main/java/com/budwk/app/flow/listenter/ProcessTaskEndEventListener.java b/src/main/java/com/budwk/app/flow/listenter/ProcessTaskEndEventListener.java index 553c49f3..ea6c7733 100644 --- a/src/main/java/com/budwk/app/flow/listenter/ProcessTaskEndEventListener.java +++ b/src/main/java/com/budwk/app/flow/listenter/ProcessTaskEndEventListener.java @@ -1,9 +1,11 @@ package com.budwk.app.flow.listenter; +import cn.hutool.core.util.ObjectUtil; import com.budwk.app.flow.engine.event.ProcessEvent; import com.budwk.app.flow.engine.event.ProcessEventListener; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessEventTypeEnum; +import com.budwk.app.todo.service.TodoService; import org.nutz.dao.Dao; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; @@ -16,12 +18,19 @@ public class ProcessTaskEndEventListener implements ProcessEventListener { @Inject private Dao dao; + @Inject + private TodoService todoService; @Override public void onEvent(ProcessEvent event) { if (event.getEventType() == ProcessEventTypeEnum.PROCESS_TASK_END) { Long sourceId = event.getSourceId(); ProcessTask task = dao.fetch(ProcessTask.class, sourceId); + + // 好了,任务完成,就可以调接口完成待办了 + if (!ObjectUtil.equals(0, task.getTaskParentId().intValue())) { + todoService.taskHandle(task); + } System.out.println("流程任务完成事件:" + task.getDisplayName()); } } diff --git a/src/main/java/com/budwk/app/flow/listenter/ProcessTaskStartEventListener.java b/src/main/java/com/budwk/app/flow/listenter/ProcessTaskStartEventListener.java index d0307834..69ace193 100644 --- a/src/main/java/com/budwk/app/flow/listenter/ProcessTaskStartEventListener.java +++ b/src/main/java/com/budwk/app/flow/listenter/ProcessTaskStartEventListener.java @@ -1,6 +1,7 @@ package com.budwk.app.flow.listenter; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.engine.event.ProcessEvent; import com.budwk.app.flow.engine.event.ProcessEventListener; @@ -8,6 +9,8 @@ import com.budwk.app.flow.entity.ProcessInstance; import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.entity.ProcessTaskActor; import com.budwk.app.flow.enums.ProcessEventTypeEnum; +import com.budwk.app.todo.service.TodoService; +import com.budwk.app.web.commons.base.Globals; import com.budwk.app.zhgh.dayofficework.message.service.GlobalMessageSendService; import lombok.extern.slf4j.Slf4j; import org.nutz.dao.Cnd; @@ -30,6 +33,8 @@ public class ProcessTaskStartEventListener implements ProcessEventListener { private Dao dao; @Inject private GlobalMessageSendService globalMessageSendService; + @Inject + private TodoService todoService; @Override public void onEvent(ProcessEvent event) { @@ -58,13 +63,23 @@ public class ProcessTaskStartEventListener implements ProcessEventListener { List taskActors = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", task.getId())); for (ProcessTaskActor taskActor : taskActors) { + + JSONObject config = new JSONObject(); + config.set("pcUrl", Globals.AppDomain + task.getFormKey()); + // 模拟发送消息 - String message = StrUtil.format("您有一条待办任务,实例:{},处理环节:{}", taskActor.getActorName(), instanceName, taskDisplayName); - log.info(message); + String message = ""; + if(StrUtil.isNotBlank(task.getH5FormKey())) { + config.set("mobileUrl", Globals.AppDomain + task.getH5FormKey()); + message = StrUtil.format("您有一条待办任务,实例:{},处理环节:{}。", instanceName, taskDisplayName); + } else { + config.set("mobileUrl", Globals.AppDomain + "/platform/tooltip/h5"); + message = StrUtil.format("您有一条待办任务,实例:{},处理环节:{},请到电脑端智慧工会系统审核。", instanceName, taskDisplayName); + } + log.info(message); + globalMessageSendService.sendMessage(taskDisplayName, message, 2, List.of(taskActor.getActorId()), null); } - - + todoService.addTransaction(task); } - } diff --git a/src/main/java/com/budwk/app/flow/service/impl/ProcessInstanceServiceImpl.java b/src/main/java/com/budwk/app/flow/service/impl/ProcessInstanceServiceImpl.java index cbb831c7..e69cc4a3 100644 --- a/src/main/java/com/budwk/app/flow/service/impl/ProcessInstanceServiceImpl.java +++ b/src/main/java/com/budwk/app/flow/service/impl/ProcessInstanceServiceImpl.java @@ -7,7 +7,6 @@ import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.extra.expression.ExpressionUtil; -import cn.hutool.extra.spring.SpringUtil; import cn.hutool.json.JSONUtil; import com.budwk.app.base.service.impl.BaseServiceImpl; import com.budwk.app.base.vo.LabelValueVO; @@ -32,6 +31,8 @@ import com.budwk.app.flow.service.ProcessTaskService; import com.budwk.app.flow.vo.HighLightVO; import com.budwk.app.flow.vo.ProcessInstanceVO; import com.budwk.app.flow.vo.ProcessTaskVO; +import com.budwk.app.todo.service.TodoService; +import com.budwk.app.todo.service.impl.TodoServiceImpl; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Chain; @@ -42,7 +43,9 @@ import org.nutz.dao.sql.Sql; import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; +import org.nutz.mvc.Mvcs; import java.util.*; import java.util.stream.Collectors; @@ -281,7 +284,7 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl List processTaskList = flowEngine.processTaskService().getDoingTaskList(processInstanceId, new String[]{}); // 拿到历史任务-按更新时间倒序 List hisProcessTaskList = flowEngine.processTaskService().query(Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId).desc(ProcessTask::getUpdatedAt)); - processTaskList.forEach(task -> { + processTaskList.forEach(task -> { if (!vo.getActiveNodeNames().contains(task.getTaskName())) { vo.getActiveNodeNames().add(task.getTaskName()); recursionModel(processModel.getStart(), processInstance, processTaskList, hisProcessTaskList, task.getTaskName(), vo); @@ -556,6 +559,14 @@ public class ProcessInstanceServiceImpl extends BaseServiceImpl public void deleteProcessInstanceById(Long processInstanceId) { List taskList = dao().query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", processInstanceId)); List taskIds = taskList.stream().map(ProcessTask::getId).toList(); + + // 删除学校待办 + if(Lang.isNotEmpty(taskList)) { + ProcessTask task = taskList.get(taskList.size() - 1); + TodoService todoService = Mvcs.getIoc().get(TodoServiceImpl.class); + todoService.deleteProcessInstance(task); + } + dao().clear(ProcessTask.class, Cnd.where(ProcessTask::getId, "in", taskIds)); dao().clear(ProcessInstance.class, Cnd.where(ProcessInstance::getId, "=", processInstanceId)); } diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/SmsMessageSendStrategy.java b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/SmsMessageSendStrategy.java index 78e38342..380e42ac 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/SmsMessageSendStrategy.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/SmsMessageSendStrategy.java @@ -32,10 +32,10 @@ public class SmsMessageSendStrategy implements GlobalMessageSendStrategy { return true; // 短信发送支持异步 } -// @Override -// public boolean isEnabled() { -// return true; -// } + @Override + public boolean isEnabled() { + return false; + } @Override public void send(String title, String content, Integer type, List receiverIds, JSONObject config) { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeFormalPushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeFormalPushController.java new file mode 100644 index 00000000..9dce55a3 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeFormalPushController.java @@ -0,0 +1,179 @@ +package com.budwk.app.zhgh.democratic.executiveCommittee.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.service.BaseService; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.democratic.executiveCommittee.models.ExecutiveCommitteeTwoPush; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * @author zhf + * @date 2026/3/20 10:51 + * @description 正式委员录入 + */ +@IocBean +@At("/platform/executiveCommittee/formalPush") +@Ok("json:full") +@Slf4j +@Api(tags = "执委会推选-正式委员录入") +public class ExecutiveCommitteeFormalPushController { + + + @Inject + private Dao dao; + @Inject + private BaseService baseService; + + @At("/index") + @SaCheckPermission("executiveCommittee.formalPush") + @Ok("beetl:/platform/zhgh/democratic/executiveCommittee/formalPush/index.html") + public void index() { + } + + + @At + @ApiOperation("分页查询") + @SaCheckPermission("executiveCommittee.formalPush") + public Result pageData(PageForm pageForm, + String teacherMeetId, + String delegationId, + String unionId, + String roleCode) { + Sql sql = Sqls.create(""" + SELECT + t1.*, + t2.loginName, + t2.userName, + t3.name AS unitName, + t4.name unionName, + t5.sex, + TIMESTAMPDIFF( + YEAR, + t5.birthday, + CURDATE()) AS age, + t6.name AS delegationName + FROM + `executive_committee_two_push` t1 + LEFT JOIN executive_committee_one_push t2 on t2.userId=t1.userId and t2.teacherMeetId=t1.teacherMeetId + LEFT JOIN sys_unit t3 ON t2.unitId = t3.id + LEFT JOIN `sys_union` t4 ON t4.id = t3.unionid + LEFT JOIN `vw_user` t5 ON t5.id = t1.userId + LEFT JOIN teacher_congress_delegation t6 ON t6.id = t2.delegationId + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); + cnd.andEX("t2.delegationId", "=", delegationId); + cnd.andEX("t1.roleCode", "=", roleCode); + cnd.andEX("t1.isFormal", "=", true); + if (StpUtil.hasRole(RoleConstant.SYSADMIN.name()) || + StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()) || + StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + cnd.andEX("t4.id", "=", unionId); + } else { + cnd.andEX("t4.id", "=", SecurityUtil.getUnionId()); + } + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup group = new SqlExpressionGroup(); + group.orLike("t2.userName", pageForm.getSearchKeyword()); + group.orLike("t2.loginName", pageForm.getSearchKeyword()); + cnd.and(group); + } + cnd.asc("t6.code").asc("t2.firstLetter"); + sql.setCondition(cnd); + return Result.success(baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql)); + } + + + @At + @SaCheckPermission("executiveCommittee.formalPush") + @ApiOperation("查询可以推选委员和已经推选的人员") + public Result getDelegationUser(String teacherMeetId) { + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, + Cnd.where("teacherMeetId", "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getRoleCode, "is not", null)); + + List userValue = twoPushList.stream().filter(ExecutiveCommitteeTwoPush::getIsFormal).toList(); + List userIds = userValue.stream().map(ExecutiveCommitteeTwoPush::getUserId).toList(); + Sql sql = Sqls.create(""" + SELECT + t2.id userId, + t2.username userName, + t2.loginname loginName, + t2.unitName, + t2.sex, + t2.professionalTitle, + t2.professionalLevel, + t1.roleCode, + TIMESTAMPDIFF( + YEAR, + t2.birthday, + CURDATE()) age + FROM + executive_committee_two_push t1 + LEFT JOIN `vw_user` t2 ON t1.userId = t2.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.andEX("t1.teacherMeetId", "=", teacherMeetId); + cnd.andEX("t1.userId", "not in", userIds); + sql.setCondition(cnd); + List userData = baseService.listMap(sql); + return Result.success(Map.of("userData", userData, "userValue", userValue)); + } + + @At + @SaCheckPermission("executiveCommittee.formalPush") + @SLog(tag = "执委会推选-正式委员录入", msg = "推选委员") + public Result addOnePush(@Param("userValue") String[] userValue, + String teacherMeetId) { + try { + if (ObjectUtil.isEmpty(userValue)) { + return Result.error("请选择要录入的委员!"); + } + if (ObjectUtil.isEmpty(teacherMeetId)) { + return Result.error("请选择教代会!"); + } + List twoPushList = dao.query(ExecutiveCommitteeTwoPush.class, Cnd.where(ExecutiveCommitteeTwoPush::getTeacherMeetId, "=", teacherMeetId).and(ExecutiveCommitteeTwoPush::getUserId, "in", userValue)); + List ids = twoPushList.stream().map(ExecutiveCommitteeTwoPush::getId).toList(); + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", true), Cnd.where("id", "in", ids)); + return Result.success("添加成功!"); + } catch (Exception e) { + e.printStackTrace(); + return Result.error("添加失败!"); + } + } + + @At + @SaCheckPermission("executiveCommittee.formalPush") + @SLog(tag = "执委会推选-正式委员录入", msg = "删除推选的人") + public Result doDelete(@Valid String id, @Valid String teacherMeetId) { + dao.update(ExecutiveCommitteeTwoPush.class, Chain.make("isFormal", false), Cnd.where("id", "=", id)); + return Result.success("删除成功!"); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeUnionPushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeUnionPushController.java index 837a37f9..da057b63 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeUnionPushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteeUnionPushController.java @@ -270,7 +270,6 @@ public class ExecutiveCommitteeUnionPushController { // 自动完成第一个申请任务 List doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null); for (ProcessTask task : doingTaskList) { - args.put(FlowConst.NEXT_NODE_OPERATOR, ExecutiveCommitteeUnionPushInfo.getUserId()); flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args); } }); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/models/ExecutiveCommitteeTwoPush.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/models/ExecutiveCommitteeTwoPush.java index 87794f72..c5da8c78 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/models/ExecutiveCommitteeTwoPush.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/models/ExecutiveCommitteeTwoPush.java @@ -66,4 +66,15 @@ public class ExecutiveCommitteeTwoPush extends BaseModel implements Serializable @Comment("推选时间") @ColDefine(type = ColType.DATETIME) private DateTime pushDate; + + @Column + @Comment("录入类型1.执委会委员/2.工会委员会委员/3.经审委员会委员") + @ColDefine(type = ColType.VARCHAR,width = 30) + private String roleCode; + + @Column + @Comment("是否正式委员") + @Default("0") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isFormal; } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java index d211bcfb..96549f61 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/query/ProposalQueryComprehensiveController.java @@ -2,11 +2,14 @@ package com.budwk.app.zhgh.democratic.proposal.controller.query; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; -import com.budwk.app.zhgh.democratic.proposal.controller.vo.ProposalInfoPageVO; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam; import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService; import io.swagger.annotations.Api; @@ -24,7 +27,6 @@ import org.nutz.mvc.annotation.Param; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; -import java.util.Arrays; @IocBean @At("/platform/proposal/query/comprehensive") @@ -65,6 +67,7 @@ public class ProposalQueryComprehensiveController { GROUP_CONCAT(DISTINCT CASE WHEN pru.isMaster = 0 THEN pru.unitName END) AS slaveUnitNames FROM proposal_info info + LEFT JOIN vw_user us ON us.loginname=info.createUserLoginName LEFT JOIN proposal_type type on type.id = info.typeId LEFT JOIN proposal_merge mer ON mer.proposalId = info.id LEFT JOIN teacher_congress_session tcs on tcs.id = info.sessionId @@ -77,25 +80,25 @@ public class ProposalQueryComprehensiveController { $condition """); Cnd cnd = Cnd.NEW(); - if(ArrayUtil.isNotEmpty(pageForm.getOrigins())){ + if (ArrayUtil.isNotEmpty(pageForm.getOrigins()) && ObjectUtil.isNotEmpty(pageForm.getCommonKeyword())) { SqlExpressionGroup seg = new SqlExpressionGroup(); // 案名 - if(ArrayUtil.contains(pageForm.getOrigins(),"name")){ + if (ArrayUtil.contains(pageForm.getOrigins(), "name")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) { seg.orLike("info.name", keyword); } } // 案由 - if(ArrayUtil.contains(pageForm.getOrigins(),"brief")){ + if (ArrayUtil.contains(pageForm.getOrigins(), "brief")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) { seg.orLike("info.brief", keyword); } } // 提案人 - if(ArrayUtil.contains(pageForm.getOrigins(),"createUserName")){ + if (ArrayUtil.contains(pageForm.getOrigins(), "createUserName")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) { seg.orLike("info.createUserName", keyword); seg.orLike("info.createUserLoginName", keyword); @@ -103,21 +106,24 @@ public class ProposalQueryComprehensiveController { } // 答复内容 - if(ArrayUtil.contains(pageForm.getOrigins(),"answer")){ + if (ArrayUtil.contains(pageForm.getOrigins(), "answer")) { for (String keyword : pageForm.getCommonKeyword().split(" ")) { seg.orLike("JSON_EXTRACT(replyTask.variable,'$.tf_opinion')", keyword); } } - if(!seg.isEmpty()){ + if (!seg.isEmpty()) { cnd.and(seg); } } - if(StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())){ + if (StrUtil.isNotBlank(pageForm.getUnderTakeUnitId())) { cnd.andEX("pru.unitId", "=", pageForm.getUnderTakeUnitId()); } ProposalQueryComprehensiveParam.buildSearch(cnd, pageForm); + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(),RoleConstant.SCHOOL_UNION_PROPOSAL_ADMIN.name())){ + cnd.and("us.unionId", "=", SecurityUtil.getUnionId()); + } cnd.groupBy("info.id"); sql.setCondition(cnd); Pagination pagination = baseService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java index 283360e7..85694228 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalCommitteeFilingUnitController.java @@ -201,7 +201,7 @@ public class ProposalCommitteeFilingUnitController { } for (ProcessInstance instance : instanceList) { - instance.setProcessDefineId(400L); + instance.setProcessDefineId(399L); } baseService.update(tasks); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java index 0d6c7261..7d986c66 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java @@ -1,13 +1,11 @@ package com.budwk.app.zhgh.democratic.proposal.controller.transact; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; import com.budwk.app.base.result.Result; import com.budwk.app.base.service.BaseService; import com.budwk.app.bpm.service.BpmService; import com.budwk.app.flow.enums.ProcessTaskStateEnum; -import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.democratic.proposal.param.ProposalSearchParam; import com.budwk.app.zhgh.democratic.proposal.service.ProposalSecondedService; @@ -101,7 +99,7 @@ public class ProposalSecondedController { Cnd cnd = Cnd.NEW(); cnd.and("t.taskName", "=", "second"); - if (!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())) { + if (!SecurityUtil.getUserLoginname().equals("sysadmin")) { cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalDelegationPrefixInterceptor.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalDelegationPrefixInterceptor.java index a5367701..4a5798ec 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalDelegationPrefixInterceptor.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/interceptor/ProposalDelegationPrefixInterceptor.java @@ -1,24 +1,23 @@ package com.budwk.app.zhgh.democratic.proposal.interceptor; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.flow.constant.FlowConst; import com.budwk.app.flow.engine.FlowInterceptor; import com.budwk.app.flow.engine.core.Execution; import com.budwk.app.flow.engine.core.ServiceContext; +import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.sys.models.Sys_role; import com.budwk.app.sys.models.Sys_user; -import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.sys.services.SysRoleService; import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo; import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation; -import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; -import java.util.List; - /** * @ClassName ProposalDelegationPrefixInterceptor * @Author JyuHsin @@ -77,6 +76,12 @@ public class ProposalDelegationPrefixInterceptor implements FlowInterceptor { execution.getArgs().set(FlowConst.TASK_FORM_DATA_PREFIX + "delegationAudit", delegationAudit); + ProcessTask processTask = execution.getProcessTask(); + Dict dict = JSONUtil.toBean(processTask.getVariable(), Dict.class); + dict.set(FlowConst.TASK_FORM_DATA_PREFIX + "delegationAudit", delegationAudit); + processTask.setVariable(JSONUtil.toJsonStr(dict)); + dao.update(processTask); + // 存储一些参数,方便查询副团长 execution.getArgs().set("sessionId", proposalInfo.getSessionId()); execution.getArgs().set("delegationId", proposalInfo.getDelegationId()); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java index 907db9d9..3b109630 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java @@ -4,6 +4,7 @@ import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HtmlUtil; import com.budwk.app.base.param.ExportTableColumns; @@ -192,25 +193,30 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp // 添加序号,去除富文本,获取附议人 for (int i = 0; i < list.size(); i++) { list.get(i).put("index", i + 1); - list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); - list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); + list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")).replaceAll(" "," ")); + list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")).replaceAll(" "," ")); // 流程实例 ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); // 查询附议人信息 - ProcessTask inviteTask = dao().fetch(ProcessTask.class, - Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()) - .and(ProcessTask::getTaskName, "=", "invite") - .and(ProcessTask::getTaskState, "in", - List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) - .desc(ProcessTask::getCreatedAt)); + if (ObjectUtil.isNotEmpty(instance)){ + ProcessTask inviteTask = dao().fetch(ProcessTask.class, + Cnd.where(ProcessTask::getProcessInstanceId, "=", instance.getId()) + .and(ProcessTask::getTaskName, "=", "invite") + .and(ProcessTask::getTaskState, "in", + List.of(ProcessTaskStateEnum.DOING.getCode(), ProcessTaskStateEnum.FINISHED.getCode())) + .desc(ProcessTask::getCreatedAt)); - if (inviteTask != null) { - NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); - List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); - list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + if (inviteTask != null) { + NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); + List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); + if (seconders != null){ + list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + } + } } + } List exportEntities = new ArrayList<>(); @@ -570,8 +576,8 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp // 添加序号,去除富文本,获取附议人 for (int i = 0; i < list.size(); i++) { list.get(i).put("index", i + 1); - list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); - list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); + list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief")).replaceAll(" "," ")); + list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures")).replaceAll(" "," ")); // 流程实例 // ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); diff --git a/src/main/resources/views/platform/flow/define/preview.html b/src/main/resources/views/platform/flow/define/preview.html index c0c12168..a4b5d0b0 100644 --- a/src/main/resources/views/platform/flow/define/preview.html +++ b/src/main/resources/views/platform/flow/define/preview.html @@ -14,7 +14,8 @@ - + +
@@ -73,8 +82,17 @@ layout("/layouts/platform.html"){
{{formData.taskName}}
- + + + + @@ -122,7 +140,7 @@ layout("/layouts/platform.html"){ this.$refs.guava.public(() => { this.formData = { processTaskId: row.taskId, - taskName: row.curTaskName + taskName: row.curTaskName, } this.showApprovalForm = true this.$refs.registerInfoRef.onOpen(row) @@ -145,6 +163,7 @@ layout("/layouts/platform.html"){ this.$message.success(res.msg) this.doSearch() } + }) }) }, diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html index 0a6cd5db..e3f3167a 100644 --- a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/index.html @@ -63,7 +63,7 @@ layout("/layouts/platform.html"){ size="small" type="primary" @click="$refs.onePushFormalRef.onOpen(pageForm.teacherMeetId)" - >候选人录入 + >候选委员录入 diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/twoPushFormalDialog.js b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/twoPushFormalDialog.js index d37965be..0df16a8e 100644 --- a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/twoPushFormalDialog.js +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/delegationTwoPush/twoPushFormalDialog.js @@ -4,7 +4,7 @@ const DELEGATION_TWO_PUSH_FORMAL_DIALOG = { diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/index.html b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/index.html new file mode 100644 index 00000000..6f7a7dc4 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/index.html @@ -0,0 +1,223 @@ + + +
+ + + + + +
+ + + + + diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/pushFormalDialog.js b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/pushFormalDialog.js new file mode 100644 index 00000000..3320ea1f --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/formalPush/pushFormalDialog.js @@ -0,0 +1,95 @@ +const PUSH_FORMAL_DIALOG = { + template: /*language=HTML*/ ` +
+ + +
+
+
{{ option.userName }} - {{ option.loginName }} - + {{option.unitName}} +
+
+ + {{option.sex}} + + {{ option.age }}岁 + {{ option.professionalTitle }} + {{ option.roleCode==='1'?'执委会委员':option.roleCode==='2'?'工会委员会委员':'经审委员会委员' }} +
+
+
+
+ + + 取 消 + 确 定 + + +
+
+ `, + data() { + return { + dialogVisible: false, + userValue: [], + userData: [], + rightChecked: [], + attendanceRightChecked: [], + teacherMeetId: null, + prepareGroupQuotaCount: 0 + } + }, + methods: { + async onOpen(teacherMeetId) { + this.dialogVisible = true + this.teacherMeetId = teacherMeetId + this.userValue = [] + this.userData = [] + const { + code, + data + } = await this.$axios.post('/platform/executiveCommittee/formalPush/getDelegationUser', {teacherMeetId: teacherMeetId}) + if (code === 0) { + data.userData.forEach(v => { + this.userData.push({userId: v.userId, ...v}) + }) + this.prepareGroupQuotaCount = data.prepareGroupQuotaCount + } + }, + filterMethod(query, item) { + return item.userName.indexOf(query) > -1 + }, + async onConfirm() { + const { + code, + msg + } = await this.$axios.post('/platform/executiveCommittee/formalPush/addOnePush', { + userValue: JSON.stringify(this.userValue), + teacherMeetId: this.teacherMeetId + }) + if (code === 0) { + this.dialogVisible = false + this.$message.success(msg) + this.$emit('refresh') + } + } + }, + +} diff --git a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/preparatoryGroupPush/pushFormalDialog.js b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/preparatoryGroupPush/pushFormalDialog.js index 38974539..159d7225 100644 --- a/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/preparatoryGroupPush/pushFormalDialog.js +++ b/src/main/resources/views/platform/zhgh/democratic/executiveCommittee/preparatoryGroupPush/pushFormalDialog.js @@ -31,12 +31,12 @@ const PUSH_FORMAL_DIALOG = { {{ option.age }}岁 {{ option.professionalTitle }} - {{ option.roleCode==='1'?'执委会委员':option.roleCode==='2'?'工会委员会委员':'经审委员会委员' }}
+ 推选名额:{{prepareGroupQuotaCount}}个 取 消 确 定 diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js index 0800b45e..7a1f3b8b 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFiling/merge.js @@ -71,9 +71,9 @@ const merge = { > - - + diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html index 01903afa..745ec67f 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/transact/committeeFilingUnit/index.html @@ -209,7 +209,7 @@ layout("/layouts/platform.html"){ }, methods: { doUpData(){ - this.$.axios.post(loc()+"/doUpData") + this.$axios.post(loc()+"/doUpData") }, openView(row) { this.$refs.guava.edit(() => { From 0510979604396eb00829a10efa6c1c309f7b5991 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Fri, 20 Mar 2026 11:09:40 +0800 Subject: [PATCH 2/2] commit --- .../budwk/app/todo/service/TodoService.java | 66 +++++ .../todo/service/impl/TodoServiceImpl.java | 248 ++++++++++++++++++ .../app/todo/util/TodoPlatformTokenUtil.java | 62 +++++ .../WechatEnterpriseMessageSendStrategy.java | 87 ++++++ .../platform/plugins/logicflow/index.min.js | 2 + 5 files changed, 465 insertions(+) create mode 100644 src/main/java/com/budwk/app/todo/service/TodoService.java create mode 100644 src/main/java/com/budwk/app/todo/service/impl/TodoServiceImpl.java create mode 100644 src/main/java/com/budwk/app/todo/util/TodoPlatformTokenUtil.java create mode 100644 src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java create mode 100644 src/main/resources/static/assets/platform/plugins/logicflow/index.min.js diff --git a/src/main/java/com/budwk/app/todo/service/TodoService.java b/src/main/java/com/budwk/app/todo/service/TodoService.java new file mode 100644 index 00000000..4de5038b --- /dev/null +++ b/src/main/java/com/budwk/app/todo/service/TodoService.java @@ -0,0 +1,66 @@ +package com.budwk.app.todo.service; + +import com.budwk.app.flow.entity.ProcessTask; + +/** + * @ClassName TodoService + * @Author JyuHsin + * @Date 2026/3/12 14:12 + * @Version 1.0 + * @Description TODO + */ +public interface TodoService { + + /** + * 调用本接口,发起一个待办任务 + * 若是首个任务,则会同时创建一条事务 + * 若非首个任务,则需关联上一条待办任务 + * + * @param task + */ + void addTransaction(ProcessTask task); + + /** + * 调用本接口,对当前节点的任务进行办理,当前任务进入已办 + * + * @param task + */ + void taskHandle(ProcessTask task); + + /** + * 调用本接口,发起任务转办,转办给转办人(可以多个),被转办人可以在我的代办列表查看任务 + * + * @param task + */ + void taskComplaint(ProcessTask task); + + /** + * 调用本接口,对当前节点的任务进行撤回,并创建出新的任务节点 + * 建议不调用本接口,因为会创建新的任务节点 + * 如果撤回,可调用taskTerminate,这个接口只操作本任务 + * @param task + */ + void taskWithdraw(ProcessTask task); + + /** + * 调用本接口,发起任务终止,结束该任务 + * + * @param task + */ + void taskTerminate(ProcessTask task); + + /** + * 调用本接口,对删除任务的事务进行恢复 + * + * @param task + */ + void transRecover(ProcessTask task); + + /** + * 调用本接口,对当前任务的事务进行删除 + * + * @param task + */ + void deleteProcessInstance(ProcessTask task); + +} diff --git a/src/main/java/com/budwk/app/todo/service/impl/TodoServiceImpl.java b/src/main/java/com/budwk/app/todo/service/impl/TodoServiceImpl.java new file mode 100644 index 00000000..65480256 --- /dev/null +++ b/src/main/java/com/budwk/app/todo/service/impl/TodoServiceImpl.java @@ -0,0 +1,248 @@ +package com.budwk.app.todo.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.flow.entity.ProcessDefine; +import com.budwk.app.flow.entity.ProcessInstance; +import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.entity.ProcessTaskActor; +import com.budwk.app.flow.enums.ProcessInstanceStateEnum; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.todo.service.TodoService; +import com.budwk.app.todo.util.TodoPlatformTokenUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.web.commons.base.Globals; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.entity.Record; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.Daos; +import org.nutz.integration.jedis.RedisService; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 南昌大学统一待办平台接口实现 + * @author JyuHsin + */ +@Slf4j +@IocBean +public class TodoServiceImpl implements TodoService { + + @Inject + private Dao dao; + @Inject + private RedisService redisService; + @Inject + private FlowEngine flowEngine; + @Inject + private TodoPlatformTokenUtil tokenUtil; + + private static final String BASE_URL = "https://poa.ncu.edu.cn/apis/ttc/v1/transaction/poa/"; + private static final String APP_ID = "72e34a101d3011f1a74cbae5193504f4"; + private static final int SUCCESS_CODE = 0; + + private interface ApiUrl { + String ADD_TRANSACTION = BASE_URL + "addTransaction"; + String TASK_HANDLE = BASE_URL + "taskHandle"; + String TASK_COMPLAINT = BASE_URL + "taskComplaint"; + String TASK_WITHDRAW = BASE_URL + "taskWithdraw"; + String TASK_TERMINATE = BASE_URL + "taskTerminate"; + String TRANS_RECOVER = BASE_URL + "transRecover"; + String TRANS_DELETED = BASE_URL + "transDeleted"; + } + + /** + * 统一发送POST请求 + */ + private JSONObject sendPost(String url, Map params) { + try { + if(!Globals.sso) { + log.error("【待办平台】本地开发模式不允许调用待办"); + return null; + } + if(!Globals.MyConfig.getBoolean("AppTodo", false)) { + log.error("【待办平台】待办配置未开启"); + return null; + } + + String token = tokenUtil.getToken(); + log.info("【待办平台】调用接口:{},请求参数:{}", url, Json.toJson(params)); + + String body = HttpUtil.createPost(url) + .header("Authorization", token) + .header("Content-Type", "application/json") + .body(Json.toJson(List.of(params))) + .execute() + .body(); + + log.info("【待办平台】接口响应:{}", body); + return JSONUtil.parseObj(body); + } catch (Exception e) { + log.error("【待办平台】接口调用异常:{}", e.getMessage(), e); + return null; + } + } + + /** + * 统一处理响应结果 + */ + private void handleResult(JSONObject result, String apiName) { + if (result == null) { + log.error("【待办平台】{} 调用失败:接口响应为空", apiName); + return; + } + if (result.getInt("code") == SUCCESS_CODE) { + log.info("【待办平台】{} 调用成功", apiName); + } else { + log.error("【待办平台】{} 调用失败:{}", apiName, result.getStr("message")); + } + } + + /** + * 获取处理人字符串 + */ + private String getHandlers(Long taskId) { + List list = dao.query(ProcessTaskActor.class, + Cnd.where(ProcessTaskActor::getProcessTaskId, "=", taskId)); + return list.stream() + .map(ProcessTaskActor::getActorAccount) + .collect(Collectors.joining(",")); + } + + @Override + public void addTransaction(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + ProcessDefine define = dao.fetch(ProcessDefine.class, instance.getProcessDefineId()); + Sys_user sysUser = dao.fetch(Sys_user.class, instance.getOperator()); + + ProcessTask parentTask = dao.fetch(ProcessTask.class, task.getTaskParentId()); + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("nodeId", task.getId()); + params.put("nodeName", task.getDisplayName()); + params.put("taskId", task.getId()); + params.put("taskName", task.getDisplayName()); + params.put("transTypeCode", define.getName()); + params.put("transTypeName", define.getDisplayName()); + params.put("handlers", getHandlers(task.getId())); + if (!ObjectUtil.equals(0, parentTask.getTaskParentId().intValue())) { + params.put("previousTaskId", task.getTaskParentId()); + } + params.put("canDelegate", 0); + params.put("autoCreateTransType", true); + params.put("initiator", sysUser.getLoginname()); + params.put("initiatorName", sysUser.getUsername()); + params.put("serialNumber", task.getId()); + if(StrUtil.isNotBlank(task.getFormKey())) { + params.put("handleUrl", Globals.AppDomain + task.getFormKey()); + params.put("viewUrl", Globals.AppDomain + task.getFormKey()); + } + if(StrUtil.isNotBlank(task.getH5FormKey())) { + params.put("mHandleUrl", Globals.AppDomain + task.getH5FormKey()); + params.put("mViewUrl", Globals.AppDomain + task.getH5FormKey()); + } + + JSONObject result = sendPost(ApiUrl.ADD_TRANSACTION, params); + handleResult(result, "创建待办任务"); + } + + @Override + public void taskHandle(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + String status = instance.getState().equals(ProcessInstanceStateEnum.FINISHED.getCode()) ? "end" : "none"; + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("handler", SecurityUtil.getUserLoginname()); + params.put("previousTaskId", task.getId()); + params.put("status", status); + + JSONObject result = sendPost(ApiUrl.TASK_HANDLE, params); + handleResult(result, "办理待办任务"); + } + + @Override + public void taskComplaint(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + Sys_user sysUser = dao.fetch(Sys_user.class, instance.getOperator()); + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("createTime", ""); + params.put("creater", sysUser.getLoginname()); + params.put("creator", sysUser.getLoginname()); + params.put("handlers", getHandlers(task.getId())); + params.put("handlingGroup", ""); + params.put("operator", sysUser.getLoginname()); + params.put("taskId", task.getId()); + + JSONObject result = sendPost(ApiUrl.TASK_COMPLAINT, params); + handleResult(result, "转办待办任务"); + } + + @Override + public void taskWithdraw(ProcessTask task) { + // 已注释逻辑保持不变 + } + + @Override + public void taskTerminate(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + Sys_user sysUser = dao.fetch(Sys_user.class, instance.getOperator()); + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("creater", sysUser.getLoginname()); + params.put("creator", sysUser.getLoginname()); + params.put("handlers", getHandlers(task.getId())); + params.put("operator", SecurityUtil.getUserLoginname()); + params.put("taskId", task.getId()); + + JSONObject result = sendPost(ApiUrl.TASK_TERMINATE, params); + handleResult(result, "终止待办任务"); + } + + @Override + public void transRecover(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + Sys_user sysUser = dao.fetch(Sys_user.class, instance.getOperator()); + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("creater", sysUser.getLoginname()); + params.put("taskId", task.getId()); + + JSONObject result = sendPost(ApiUrl.TRANS_RECOVER, params); + handleResult(result, "事务恢复"); + } + + @Override + public void deleteProcessInstance(ProcessTask task) { + ProcessInstance instance = dao.fetch(ProcessInstance.class, task.getProcessInstanceId()); + Sys_user sysUser = dao.fetch(Sys_user.class, instance.getOperator()); + + Map params = new HashMap<>(); + params.put("appId", APP_ID); + params.put("creater", sysUser.getLoginname()); + params.put("creator", sysUser.getLoginname()); + params.put("taskId", task.getId()); + + JSONObject result = sendPost(ApiUrl.TRANS_DELETED, params); + handleResult(result, "事务删除"); + } +} diff --git a/src/main/java/com/budwk/app/todo/util/TodoPlatformTokenUtil.java b/src/main/java/com/budwk/app/todo/util/TodoPlatformTokenUtil.java new file mode 100644 index 00000000..b2036ac3 --- /dev/null +++ b/src/main/java/com/budwk/app/todo/util/TodoPlatformTokenUtil.java @@ -0,0 +1,62 @@ +package com.budwk.app.todo.util; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.constant.RedisConstant; +import lombok.extern.slf4j.Slf4j; +import org.nutz.integration.jedis.RedisService; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; + +import java.util.HashMap; +import java.util.Map; + +/** + * @ClassName TodoPlatformUtil + * @Author JyuHsin + * @Date 2026/3/12 14:05 + * @Version 1.0 + * @Description TODO + */ +@Slf4j +@IocBean +public class TodoPlatformTokenUtil { + + @Inject + private RedisService redisService; + + private static final String TOKEN_URL = "https://poa.ncu.edu.cn/oauth2/token"; + private static final String CLINT_ID = "dP7SXC1MoYAJHPh6k8Cgsda8tGY="; + private static final String CLINT_SECRET = "PFAwVcXOsVFzP3Jwb4RyO5V97o8j8zNTQ8QSTre8oIc="; + private static final String SCOPE = "ttc:v1:writeTransaction"; + + public String getToken() { + String key = RedisConstant.REDIS_TODO_TOKEN_KEY; + String token = redisService.get(key); + if (StrUtil.isBlank(token)) { + // 构造表单参数 + Map param = new HashMap<>(); + param.put("grant_type", "client_credentials"); + param.put("client_id", CLINT_ID); + param.put("client_secret", CLINT_SECRET); + param.put("scope", SCOPE); + + String body = HttpUtil.createPost(TOKEN_URL) + .header("Content-Type", "application/x-www-form-urlencoded") + .formStr(param).execute().body(); + + JSONObject resultJsonBody = JSONUtil.parseObj(body); + log.info("【log】获取待办token接口回调数据:{}", Json.toJson(resultJsonBody)); + if (StrUtil.isNotBlank(resultJsonBody.getStr("access_token"))) { + String accessToken = resultJsonBody.getStr("access_token"); + Integer expiresIn = resultJsonBody.getInt("expires_in"); + redisService.setex(key, expiresIn, accessToken); + return accessToken; + } + } + return token; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java new file mode 100644 index 00000000..f1672c0b --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/message/strategy/impl/WechatEnterpriseMessageSendStrategy.java @@ -0,0 +1,87 @@ +package com.budwk.app.zhgh.dayofficework.message.strategy.impl; + +import cn.hutool.json.JSONObject; +import com.budwk.app.base.sms.SmsService; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.zhgh.dayofficework.message.enums.GlobalMessageChannel; +import com.budwk.app.zhgh.dayofficework.message.strategy.GlobalMessageSendStrategy; +import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; + +import java.util.List; + +/** + * @ClassName WechatEnterpriseMessageSendStrategy + * @Author JyuHsin + * @Date 2026/2/27 15:42 + * @Version 1.0 + * @Description TODO + */ +@IocBean +@Slf4j +public class WechatEnterpriseMessageSendStrategy implements GlobalMessageSendStrategy { + + @Inject + private Dao dao; + @Inject + private SmsService smsService; + + @Override + public GlobalMessageChannel getChannel() { + return GlobalMessageChannel.WECHAT_ENTERPRISE; + } + + @Override + public boolean supportAsync() { + return GlobalMessageSendStrategy.super.supportAsync(); + } + + @Override + public boolean isEnabled() { + return false; + } + + @Override + public void send(String title, String content, Integer type, List receiverIds, JSONObject config) { + try { + log.info("开始发送企业微信消息,标题:{},接收人数量:{}", title, receiverIds.size()); + + // 查询用户手机号 + List users = dao.query(Sys_user.class, Cnd.where(Sys_user::getId, "in", receiverIds)); + sendMessage(title, content, type, users, config); + + log.info("企业微信消息发送完成,标题:{},接收人数量:{}", title, users.size()); + } catch (Exception e) { + log.error("企业微信消息发送失败,标题:{},错误:{}", title, e.getMessage(), e); + throw new RuntimeException("企业微信消息发送失败:" + e.getMessage(), e); + } + } + + @Override + public void sendByLoginName(String title, String content, Integer type, List receiverLoginNames, JSONObject config) { + try { + log.info("开始发送企业微信消息(按登录名),标题:{},接收人数量:{}", title, receiverLoginNames.size()); + + // 查询用户手机号 + List users = dao.query(Sys_user.class, Cnd.where(Sys_user::getLoginname, "in", receiverLoginNames)); + sendMessage(title, content, type, users, config); + + log.info("企业微信消息发送完成(按登录名),标题:{},接收人数量:{}", title, users.size()); + } catch (Exception e) { + log.error("企业微信消息发送失败(按登录名),标题:{},错误:{}", title, e.getMessage(), e); + throw new RuntimeException("企业微信消息发送失败:" + e.getMessage(), e); + } + } + + private void sendMessage(String title, String content, Integer type, List users, JSONObject config) { + if(Lang.isEmpty(users)) { + return; + } + List list = users.stream().map(Sys_user::getLoginname).toList(); + smsService.massSendTextCard(list, "智慧工会", content, config.getStr("pcUrl"), config.getStr("mobileUrl")); + } +} diff --git a/src/main/resources/static/assets/platform/plugins/logicflow/index.min.js b/src/main/resources/static/assets/platform/plugins/logicflow/index.min.js new file mode 100644 index 00000000..335130fc --- /dev/null +++ b/src/main/resources/static/assets/platform/plugins/logicflow/index.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@logicflow/core"),require("@logicflow/vue-node-registry")):"function"==typeof define&&define.amd?define(["exports","@logicflow/core","@logicflow/vue-node-registry"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Extension={},e.Core,e.VueNodeRegistry)}(this,(function(e,t,n){"use strict";var i=40,o=40,r=40,a=40,s=40,l=40,u=100,c=80,d=100,h=80,f={rect:{radius:5,stroke:"rgb(24, 125, 255)"},circle:{r:18,stroke:"rgb(24, 125, 255)"},polygon:{stroke:"rgb(24, 125, 255)"},polyline:{stroke:"rgb(24, 125, 255)",hoverStroke:"rgb(24, 125, 255)",selectedStroke:"rgb(24, 125, 255)"},edgeText:{textWidth:100,overflowMode:"default",fontSize:12,background:{fill:"white",height:14,stroke:"transparent",radius:3}}},p=function(e,t){return p=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},p(e,t)};function g(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}p(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var v=function(){return v=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;s--)(o=e[s])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function b(e,t,n,i){return new(n||(n=Promise))((function(o,r){function a(e){try{l(i.next(e))}catch(e){r(e)}}function s(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,s)}l((i=i.apply(e,t||[])).next())}))}function x(e,t){var n,i,o,r,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(s){return function(l){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;r&&(r=0,s[0]&&(a=0)),a;)try{if(n=1,i&&(o=2&s[0]?i.return:s[0]?i.throw||((o=i.return)&&o.call(i),0):i.next)&&!(o=o.call(i,s[1])).done)return o;switch(i=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,i=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function E(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,o,r=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(i=r.next()).done;)a.push(i.value)}catch(e){o={error:e}}finally{try{i&&!i.done&&(n=r.return)&&n.call(r)}finally{if(o)throw o.error}}return a}function C(e,t,n){if(n||2===arguments.length)for(var i,o=0,r=t.length;o");var o="";if("#text"===t)return Z+i+e;if("#cdata-section"===t)return Z+i+"";if("#comment"===t)return Z+i+"\x3c!--"+e+"--\x3e";if("-"==="".concat(t).charAt(0))return" "+t.substring(1)+'="'+function(e){var t=e;try{"string"!=typeof t&&(t=JSON.parse(e))}catch(n){t=JSON.stringify($(e)).replace(/"/g,"'")}return t}(e)+'"';if(Array.isArray(e))e.forEach((function(e){o+=J(e,t,n+1)}));else if("[object Object]"===Y(e)){var r=Object.keys(e),a="",s="";o+=(0===n?"":Z+i)+"<"+t,r.forEach((function(t){"-"===t.charAt(0)?a+=J(e[t],t,n+1):s+=J(e[t],t,n+1)})),o+=a+(""!==s?">".concat(s).concat(Z+i,""):" />")}else o+=Z+i+"<".concat(t,">").concat(e.toString(),"");return o}function Q(e){var t="";for(var n in e)t+=J(e[n],n,0);return t}var ee=function(){};(ee.ObjTree=function(){return this}).VERSION="0.23",ee.ObjTree.prototype.xmlDecl='\n',ee.ObjTree.prototype.attr_prefix="-",ee.ObjTree.prototype.parseXML=function(e){var t;if(window.DOMParser){var n=new DOMParser,i=n.parseFromString(e,"application/xml");if(!i)return;t=i.documentElement}else window.ActiveXObject&&((n=new ActiveXObject("Microsoft.XMLDOM")).async=!1,n.loadXML(e),t=n.documentElement);if(t)return this.parseDOM(t)},ee.ObjTree.prototype.parseHTTP=function(e,t,n){var i,o={};for(var r in t)o[r]=t[r];if(o.method||(void 0===o.postBody&&void 0===o.postbody&&void 0===o.parameters?o.method="get":o.method="post"),n){o.asynchronous=!0;var a=this,s=n,l=o.onComplete;o.onComplete=function(e){var t;e&&e.responseXML&&e.responseXML.documentElement&&(t=a.parseDOM(e.responseXML.documentElement)),s(t,e),l&&l(e)}}else o.asynchronous=!1;if("undefined"!=typeof HTTP&&HTTP.Request)o.uri=e,(u=new HTTP.Request(o))&&(i=u.transport);else if("undefined"!=typeof Ajax&&Ajax.Request){var u;(u=new Ajax.Request(e,o))&&(i=u.transport)}return n?i:i&&i.responseXML&&i.responseXML.documentElement?this.parseDOM(i.responseXML.documentElement):void 0},ee.ObjTree.prototype.parseDOM=function(e){if(e){if(this.__force_array={},this.force_array)for(var t=0;t":"object"==typeof r&&r.constructor==Array?n[n.length]=this.array_to_xml(o,r):n[n.length]="object"==typeof r?this.hash_to_xml(o,r):this.scalar_to_xml(o,r):i[i.length]=" "+o.substring(1)+'="'+this.xml_escape(r)+'"'}var a=i.join(""),s=n.join("");return void 0===e||null==e||(s=n.length>0?s.match(/\n/)?"<"+e+a+">\n"+s+"\n":"<"+e+a+">"+s+"\n":"<"+e+a+" />\n"),s},ee.ObjTree.prototype.array_to_xml=function(e,t){for(var n=[],i=0;i":"object"==typeof o&&o.constructor==Array?n[n.length]=this.array_to_xml(e,o):n[n.length]="object"==typeof o?this.hash_to_xml(e,o):this.scalar_to_xml(e,o)}return n.join("")},ee.ObjTree.prototype.scalar_to_xml=function(e,t){return"#text"==e?this.xml_escape(t):"<"+e+">"+this.xml_escape(t)+"\n"},ee.ObjTree.prototype.xml_escape=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,'"')};var te,ne=function(e){return(new ee.ObjTree).parseXML(e)};!function(e){e.START="bpmn:startEvent",e.END="bpmn:endEvent",e.GATEWAY="bpmn:exclusiveGateway",e.USER="bpmn:userTask",e.SYSTEM="bpmn:serviceTask",e.FLOW="bpmn:sequenceFlow"}(te||(te={}));var ie=["-name","-id","bpmn:incoming","bpmn:outgoing","-sourceRef","-targetRef"],oe=["properties","startPoint","endPoint","pointsList"];function re(e){var t=e?oe.concat(e):oe;return function(e){return function e(n){var i={};return"string"==typeof n?n:Array.isArray(n)?n.map((function(t){return e(t)})):(Object.entries(n).forEach((function(n){var o=E(n,2),r=o[0],a=o[1];"object"!=typeof a?0===r.indexOf("-")||["#text","#cdata-section","#comment"].includes(r)?i[r]=a:i["-".concat(r)]=a:t.includes(r)?i["-".concat(r)]=e(a):i[r]=e(a)})),i)}(e)}}function ae(e){var t={};return Object.entries(e).forEach((function(e){var n=E(e,2),i=n[0],o=n[1];0===i.indexOf("-")?t[i.substring(1)]=$(o):"string"==typeof o?t[i]=o:"[object Object]"===Object.prototype.toString.call(o)?t[i]=ae(o):Array.isArray(o)?t[i]=o.map((function(e){return ae(e)})):t[i]=o})),t}function se(e,t){e["bpmndi:BPMNEdge"]=t.edges.map((function(e){var t,n=e.id,i=e.pointsList.map((function(e){return{"-x":e.x,"-y":e.y}})),o={"-id":"".concat(n,"_di"),"-bpmnElement":n,"di:waypoint":i};return(null===(t=e.text)||void 0===t?void 0:t.value)&&(o["bpmndi:BPMNLabel"]={"dc:Bounds":{"-x":e.text.x-10*e.text.value.length/2,"-y":e.text.y-7,"-width":10*e.text.value.length,"-height":14}}),o})),e["bpmndi:BPMNShape"]=t.nodes.map((function(e){var t,n=e.id,i=100,o=80,r=e.x,a=e.y,s=de.shapeConfigMap.get(e.type);s&&(i=s.width,o=s.height),r-=i/2,a-=o/2;var l={"-id":"".concat(n,"_di"),"-bpmnElement":n,"dc:Bounds":{"-x":r,"-y":a,"-width":i,"-height":o}};return(null===(t=e.text)||void 0===t?void 0:t.value)&&(l["bpmndi:BPMNLabel"]={"dc:Bounds":{"-x":e.text.x-10*e.text.value.length/2,"-y":e.text.y-7,"-width":10*e.text.value.length,"-height":14}}),l}))}function le(e){var t=[],n=[],i=e["bpmn:definitions"];if(i){var o=i["bpmn:process"];Object.keys(o).forEach((function(e){if(0===e.indexOf("bpmn:")){var r=o[e];if(e===te.FLOW){var a=i["bpmndi:BPMNDiagram"]["bpmndi:BPMNPlane"]["bpmndi:BPMNEdge"];n=function(e,t){var n=[];if(Array.isArray(e))e.forEach((function(e){var i;i=Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n.push(ce(i,e))}));else{var i=void 0;i=Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n.push(ce(i,e))}return n}(r,a)}else{var s=i["bpmndi:BPMNDiagram"]["bpmndi:BPMNPlane"]["bpmndi:BPMNShape"];t=t.concat(function(e,t,n){var i=[];if(Array.isArray(e))e.forEach((function(e){var o=ue(Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n,e);i.push(o)}));else{var o=ue(Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n,e);i.push(o)}return i}(r,s,e))}}}))}return{nodes:t,edges:n}}function ue(e,t,n){var i,o,r=Number(e["dc:Bounds"]["-x"]),a=Number(e["dc:Bounds"]["-y"]),s=n["-name"],l=de.shapeConfigMap.get(t);if(l&&(r+=l.width/2,a+=l.height/2),Object.entries(n).forEach((function(e){var t=E(e,2),n=t[0],o=t[1];-1===ie.indexOf(n)&&(i||(i={}),i[n]=o)})),i&&(i=ae(i)),s&&(o={x:r,y:a,value:s},e["bpmndi:BPMNLabel"]&&e["bpmndi:BPMNLabel"]["dc:Bounds"])){var u=e["bpmndi:BPMNLabel"]["dc:Bounds"];o.x=Number(u["-x"])+Number(u["-width"])/2,o.y=Number(u["-y"])+Number(u["-height"])/2}var c={id:e["-bpmnElement"],type:t,x:r,y:a,properties:i};return o&&(c.text=o),c}function ce(e,t){var n,i,o=t["-name"]?"".concat(t["-name"]):"";if(o){var r=e["bpmndi:BPMNLabel"]["dc:Bounds"],a=0;o.split("\n").forEach((function(e){a0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var yn=mn(qt),bn=/\{\n\/\* \[wrapped with (.+)\] \*/,xn=/,? & /;var wn=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/;function En(e){return function(){return e}}var Cn=function(){try{var e=zt(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Nn=Cn?function(e,t){return Cn(e,"toString",{configurable:!0,enumerable:!1,value:En(t),writable:!0})}:Nt,_n=mn(Nn);function Sn(e,t){for(var n=-1,i=null==e?0:e.length;++n-1}var Rn=[["ary",128],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",32],["partialRight",64],["rearg",256]];function Dn(e,t,n){var i=t+"";return _n(e,function(e,t){var n=t.length;if(!n)return e;var i=n-1;return t[i]=(n>1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(wn,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return Sn(Rn,(function(n){var i="_."+n[0];t&n[1]&&!kn(e,i)&&e.push(i)})),e.sort()}(function(e){var t=e.match(bn);return t?t[1].split(xn):[]}(i),n)))}var On=1,Pn=2,In=4,Ln=8,Bn=32,jn=64;function Fn(e,t,n,i,o,r,a,s,l,u){var c=t&Ln;t|=c?Bn:jn,(t&=~(c?jn:Bn))&In||(t&=~(On|Pn));var d=[e,t,o,c?r:void 0,c?a:void 0,c?void 0:r,c?void 0:a,s,l,u],h=n.apply(void 0,d);return gn(e)&&yn(h,d),h.placeholder=i,Dn(h,e,t)}function Hn(e){return e.placeholder}var Wn=9007199254740991,zn=/^(?:0|[1-9]\d*)$/;function Gn(e,t){var n=typeof e;return!!(t=null==t?Wn:t)&&("number"==n||"symbol"!=n&&zn.test(e))&&e>-1&&e%1==0&&e1&&y.reverse(),c&&l-1&&e%1==0&&e<=Ti}function ki(e){return null!=e&&Ai(e.length)&&!At(e)}function Ri(e,t,n){if(!ft(n))return!1;var i=typeof t;return!!("number"==i?ki(n)&&Gn(t,n.length):"string"==i&&t in n)&&wi(n[t],e)}function Di(e){return Mi((function(t,n){var i=-1,o=n.length,r=o>1?n[o-1]:void 0,a=o>2?n[2]:void 0;for(r=e.length>3&&"function"==typeof r?(o--,r):void 0,a&&Ri(n[0],n[1],a)&&(r=o<3?void 0:r,o=1),t=Object(t);++i-1},_o.prototype.set=function(e,t){var n=this.__data__,i=Co(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this};var So=zt(Fe,"Map");function Mo(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function To(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t0&&n(s)?t>1?Uo(s,t-1,n,i,o):Wo(o,s):i||(o[o.length]=s)}return o}function qo(e){return(null==e?0:e.length)?Uo(e,1):[]}function Xo(e){return _n(Si(e,void 0,qo),e+"")}var Vo=Xo(Ho),Ko=no(Object.getPrototypeOf,Object),Yo="[object Object]",$o=Function.prototype,Zo=Object.prototype,Jo=$o.toString,Qo=Zo.hasOwnProperty,er=Jo.call(Object);function tr(e){if(!$e(e)||Ye(e)!=Yo)return!1;var t=Ko(e);if(null===t)return!0;var n=Qo.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Jo.call(n)==er}var nr="[object DOMException]",ir="[object Error]";function or(e){if(!$e(e))return!1;var t=Ye(e);return t==ir||t==nr||"string"==typeof e.message&&"string"==typeof e.name&&!tr(e)}var rr=Mi((function(e,t){try{return $t(e,void 0,t)}catch(e){return or(e)?e:new Error(e)}})),ar="Expected a function";function sr(e,t){var n;if("function"!=typeof t)throw new TypeError(ar);return e=Ct(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=void 0),n}}var lr=Mi((function(e,t,n){var i=1;if(n.length){var o=Xn(n,Hn(lr));i|=32}return mi(e,i,t,n,o)}));lr.placeholder={};var ur=Xo((function(e,t){return Sn(t,(function(t){t=Bo(t),xi(e,t,lr(e[t],e))})),e})),cr=Mi((function(e,t,n){var i=3;if(n.length){var o=Xn(n,Hn(cr));i|=32}return mi(t,i,e,n,o)}));function dr(e,t,n){var i=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var r=Array(o);++i=i?e:dr(e,t,n)}cr.placeholder={};var fr=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");function pr(e){return fr.test(e)}var gr="\\ud800-\\udfff",vr="["+gr+"]",mr="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",yr="\\ud83c[\\udffb-\\udfff]",br="[^"+gr+"]",xr="(?:\\ud83c[\\udde6-\\uddff]){2}",wr="[\\ud800-\\udbff][\\udc00-\\udfff]",Er="(?:"+mr+"|"+yr+")"+"?",Cr="[\\ufe0e\\ufe0f]?",Nr=Cr+Er+("(?:\\u200d(?:"+[br,xr,wr].join("|")+")"+Cr+Er+")*"),_r="(?:"+[br+mr+"?",mr,xr,wr,vr].join("|")+")",Sr=RegExp(yr+"(?="+yr+")|"+_r+Nr,"g");function Mr(e){return pr(e)?function(e){return e.match(Sr)||[]}(e):function(e){return e.split("")}(e)}function Tr(e){return function(t){var n=pr(t=Po(t))?Mr(t):void 0,i=n?n[0]:t.charAt(0),o=n?hr(n,1).join(""):t.slice(1);return i[e]()+o}}var Ar=Tr("toUpperCase");function kr(e){return Ar(Po(e).toLowerCase())}function Rr(e,t,n,i){var o=-1,r=null==e?0:e.length;for(i&&r&&(n=e[++o]);++o=t?e:t)),e}function ba(e){var t=this.__data__=new _o(e);this.size=t.size}function xa(e,t){return e&&Ni(t,ao(t),e)}ba.prototype.clear=function(){this.__data__=new _o,this.size=0},ba.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},ba.prototype.get=function(e){return this.__data__.get(e)},ba.prototype.has=function(e){return this.__data__.has(e)},ba.prototype.set=function(e,t){var n=this.__data__;if(n instanceof _o){var i=n.__data__;if(!So||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new To(i)}return n.set(e,t),this.size=n.size,this};var wa="object"==typeof e&&e&&!e.nodeType&&e,Ea=wa&&"object"==typeof module&&module&&!module.nodeType&&module,Ca=Ea&&Ea.exports===wa?Fe.Buffer:void 0,Na=Ca?Ca.allocUnsafe:void 0;function _a(e,t){if(t)return e.slice();var n=e.length,i=Na?Na(n):new e.constructor(n);return e.copy(i),i}function Sa(e,t){for(var n=-1,i=null==e?0:e.length,o=0,r=[];++ns))return!1;var u=r.get(e),c=r.get(t);if(u&&c)return u==t&&c==e;var d=-1,h=!0,f=n&Gs?new Fs:void 0;for(r.set(e,t),r.set(t,e);++d=t||n<0||d&&e-u>=r}function g(){var e=Xl();if(p(e))return v(e);s=setTimeout(g,function(e){var n=t-(e-l);return d?Yl(n,r-(e-u)):n}(e))}function v(e){return s=void 0,h&&i?f(e):(i=o=void 0,a)}function m(){var e=Xl(),n=p(e);if(i=arguments,o=this,l=e,n){if(void 0===s)return function(e){return u=e,s=setTimeout(g,t),c?f(e):a}(l);if(d)return clearTimeout(s),s=setTimeout(g,t),f(l)}return void 0===s&&(s=setTimeout(g,t)),a}return t=bt(t)||0,ft(n)&&(c=!!n.leading,r=(d="maxWait"in n)?Kl(bt(n.maxWait)||0,t):r,h="trailing"in n?!!n.trailing:h),m.cancel=function(){void 0!==s&&clearTimeout(s),u=0,i=l=o=s=void 0},m.flush=function(){return void 0===s?a:v(Xl())},m}var Zl=Object.prototype,Jl=Zl.hasOwnProperty,Ql=Mi((function(e,t){e=Object(e);var n=-1,i=t.length,o=i>2?t[2]:void 0;for(o&&Ri(t[0],t[1],o)&&(i=1);++n=hu&&(r=Ws,a=!1,t=new Fs(t));e:for(;++o":">",'"':""","'":"'"}),Ru=/[&<>"']/g,Du=RegExp(Ru.source);function Ou(e){return(e=Po(e))&&Du.test(e)?e.replace(Ru,ku):e}var Pu=/[\\^$.*+?()[\]{}|]/g,Iu=RegExp(Pu.source);function Lu(e,t){for(var n=-1,i=null==e?0:e.length;++n-1?o[r?t[a]:a]:void 0}}var Gu=Math.max;function Uu(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var o=null==n?0:Ct(n);return o<0&&(o=Gu(i+o,0)),Mn(e,Dl(t),o)}var qu=zu(Uu);function Xu(e,t,n){var i;return n(e,(function(e,n,o){if(t(e,n,o))return i=n,!1})),i}var Vu=Math.max,Ku=Math.min;function Yu(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var o=i-1;return void 0!==n&&(o=Ct(n),o=n<0?Vu(i+o,0):Ku(o,i-1)),Mn(e,Dl(t),o,!0)}var $u=zu(Yu);function Zu(e){return e&&e.length?e[0]:void 0}function Ju(e,t){var n=-1,i=ki(e)?Array(e.length):[];return Fl(e,(function(e,o,r){i[++n]=t(e,o,r)})),i}function Qu(e,t){return(nt(e)?tt:Ju)(e,Dl(t))}var ec=1/0;var tc=1/0;var nc=fa("floor");function ic(e){return Xo((function(t){var n=t.length,i=n,o=cn.prototype.thru;for(e&&t.reverse();i--;){var r=t[i];if("function"!=typeof r)throw new TypeError("Expected a function");if(o&&!a&&"wrapper"==un(r))var a=new cn([],!0)}for(i=a?i:n;++it}function cc(e){return function(t,n){return"string"==typeof t&&"string"==typeof n||(t=bt(t),n=bt(n)),e(t,n)}}var dc=cc(uc),hc=cc((function(e,t){return e>=t})),fc=Object.prototype.hasOwnProperty;function pc(e,t){return null!=e&&fc.call(e,t)}function gc(e,t){return null!=e&&_l(e,t,pc)}var vc=Math.max,mc=Math.min;var yc="[object String]";function bc(e){return"string"==typeof e||!nt(e)&&$e(e)&&Ye(e)==yc}function xc(e,t){return tt(t,(function(t){return e[t]}))}function wc(e){return null==e?[]:xc(e,ao(e))}var Ec=Math.max;var Cc=Math.max;var Nc=Math.min;function _c(e,t,n){for(var i=n?du:kn,o=e[0].length,r=e.length,a=r,s=Array(r),l=1/0,u=[];a--;){var c=e[a];a&&t&&(c=tt(c,Vi(t))),l=Nc(c.length,l),s[a]=!n&&(t||o>=120&&c.length>=120)?new Fs(a&&c):void 0}c=e[0];var d=-1,h=s[0];e:for(;++d1),t})),Ni(e,Pa(e),n),i&&(n=Ls(n,7,Rd));for(var o=t.length;o--;)kd(n,t[o]);return n}));function Od(e,t,n,i){if(!ft(e))return e;for(var o=-1,r=(t=Io(t,e)).length,a=r-1,s=e;null!=s&&++ot||r&&a&&l&&!s&&!u||i&&a&&l||!n&&l||!o)return 1;if(!i&&!r&&!u&&e=s?l:l*("desc"==n[i]?-1:1)}return e.index-t.index}(e,t,n)}))}function jd(e){return Xo((function(t){return t=tt(t,Vi(Dl)),Mi((function(n){var i=this;return e(t,(function(e){return $t(e,i,n)}))}))}))}var Fd=jd(tt),Hd=Mi,Wd=Math.min,zd=Hd((function(e,t){var n=(t=1==t.length&&nt(t[0])?tt(t[0],Vi(Dl)):tt(Uo(t,1),Vi(Dl))).length;return Mi((function(i){for(var o=-1,r=Wd(i.length,n);++oqd)return n;do{t%2&&(n+=e),(t=Xd(t/2))&&(e+=e)}while(t);return n}var Kd=kl("length"),Yd="\\ud800-\\udfff",$d="["+Yd+"]",Zd="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",Jd="\\ud83c[\\udffb-\\udfff]",Qd="[^"+Yd+"]",eh="(?:\\ud83c[\\udde6-\\uddff]){2}",th="[\\ud800-\\udbff][\\udc00-\\udfff]",nh="(?:"+Zd+"|"+Jd+")"+"?",ih="[\\ufe0e\\ufe0f]?",oh=ih+nh+("(?:\\u200d(?:"+[Qd,eh,th].join("|")+")"+ih+nh+")*"),rh="(?:"+[Qd+Zd+"?",Zd,eh,th,$d].join("|")+")",ah=RegExp(Jd+"(?="+Jd+")|"+rh+oh,"g");function sh(e){return pr(e)?function(e){for(var t=ah.lastIndex=0;ah.test(e);)++t;return t}(e):Kd(e)}var lh=Math.ceil;function uh(e,t){var n=(t=void 0===t?" ":at(t)).length;if(n<2)return n?Vd(t,e):t;var i=Vd(t,lh(e/sh(t)));return pr(t)?hr(Mr(i),0,e).join(""):i.slice(0,e)}var ch=Math.ceil,dh=Math.floor;var hh=/^\s+/,fh=Fe.parseInt;var ph=Mi((function(e,t){return mi(e,32,void 0,t,Xn(t,Hn(ph)))}));ph.placeholder={};var gh=Mi((function(e,t){return mi(e,64,void 0,t,Xn(t,Hn(gh)))}));gh.placeholder={};var vh=Wl((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]}));var mh=Xo((function(e,t){return null==e?{}:function(e,t){return Pd(e,t,(function(t,n){return Sl(e,n)}))}(e,t)}));function yh(e,t,n,i){for(var o=n-1,r=e.length;++o-1;)s!==e&&bh.call(s,l,1),bh.call(e,l,1);return e}function wh(e,t){return e&&e.length&&t&&t.length?xh(e,t):e}var Eh=Mi(wh);var Ch=Array.prototype.splice;function Nh(e,t){for(var n=e?t.length:0,i=n-1;n--;){var o=t[n];if(n==i||o!==r){var r=o;Gn(o)?Ch.call(e,o,1):kd(e,o)}}return e}var _h=Xo((function(e,t){var n=null==e?0:e.length,i=Ho(e,t);return Nh(e,tt(t,(function(e){return Gn(e,n)?+e:e})).sort(Ld)),i})),Sh=Math.floor,Mh=Math.random;function Th(e,t){return e+Sh(Mh()*(t-e+1))}var Ah=parseFloat,kh=Math.min,Rh=Math.random;var Dh=Math.ceil,Oh=Math.max;function Ph(e){return function(t,n,i){return i&&"number"!=typeof i&&Ri(t,n,i)&&(n=i=void 0),t=Et(t),void 0===n?(n=t,t=0):n=Et(n),function(e,t,n,i){for(var o=-1,r=Oh(Dh((t-e)/(n||1)),0),a=Array(r);r--;)a[i?r:++o]=e,e+=n;return a}(t,n,i=void 0===i?t1&&Ri(e,t[0],t[1])?t=[]:n>2&&Ri(t[0],t[1],t[2])&&(t=[t[0]]),Bd(e,Uo(t,1),[])})),ef=4294967294,tf=Math.floor,nf=Math.min;function of(e,t,n,i){var o=0,r=null==e?0:e.length;if(0===r)return 0;for(var a=(t=n(t))!=t,s=null===t,l=Je(t),u=void 0===t;o>>1,a=e[r];null!==a&&!Je(a)&&(n?a<=t:a/g,mf={escape:/<%-([\s\S]+?)%>/g,evaluate:/<%([\s\S]+?)%>/g,interpolate:vf,variable:"",imports:{_:{escape:Ou}}},yf=/\b__p \+= '';/g,bf=/\b(__p \+=) '' \+/g,xf=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wf=/[()=,{}\[\]\/\s]/,Ef=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,Cf=/($^)/,Nf=/['\n\r\u2028\u2029\\]/g,_f=Object.prototype.hasOwnProperty;function Sf(e,t){return t(e)}var Mf=4294967295,Tf=Math.min;function Af(e,t){var n=e;return n instanceof on&&(n=n.value()),Rr(t,(function(e,t){return t.func.apply(t.thisArg,Wo([e],t.args))}),n)}function kf(){return Af(this.__wrapped__,this.__actions__)}var Rf=9007199254740991;function Df(e,t){for(var n=e.length;n--&&An(t,e[n],0)>-1;);return n}function Of(e,t){for(var n=-1,i=e.length;++n-1;);return n}var Pf=/^\s+/;var If=/\w*$/;var Lf=Dr({"&":"&","<":"<",">":">",""":'"',"'":"'"}),Bf=/&(?:amp|lt|gt|quot|#39);/g,jf=RegExp(Bf.source);var Ff=Ba&&1/Xs(new Ba([,-0]))[1]==1/0?function(e){return new Ba(e)}:rn,Hf=200;function Wf(e,t,n){var i=-1,o=kn,r=e.length,a=!0,s=[],l=s;if(n)a=!1,o=du;else if(r>=Hf){var u=t?null:Ff(e);if(u)return Xs(u);a=!1,o=Ws,l=new Fs}else l=t?[]:s;e:for(;++i1||this.__actions__.length)&&i instanceof on&&Gn(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:Sf,args:[o],thisArg:void 0}),new cn(i,this.__chain__).thru((function(e){return t&&!e.length&&e.push(void 0),e}))):this.thru(o)}));function ep(e,t,n){var i=e.length;if(i<2)return i?Wf(e[0]):[];for(var o=-1,r=Array(i);++o1?e[t-1]:void 0;return n="function"==typeof n?(e.pop(),n):void 0,Yf(e,n)})),sp={chunk:function(e,t,n){t=(n?Ri(e,t,n):void 0===t)?1:ma(Ct(t),0);var i=null==e?0:e.length;if(!i||t<1)return[];for(var o=0,r=0,a=Array(va(i/t));oo?0:o+n),(i=void 0===i||i>o?o:Ct(i))<0&&(i+=o),i=n>i?0:Fu(i);n-1:!!o&&An(e,t,n)>-1},invokeMap:Hc,keyBy:ad,map:Qu,orderBy:function(e,t,n,i){return null==e?[]:(nt(t)||(t=null==t?[]:[t]),nt(n=i?void 0:n)||(n=null==n?[]:[n]),Bd(e,t,n))},partition:vh,reduce:Fh,reduceRight:function(e,t,n){var i=nt(e)?Hh:jh,o=arguments.length<3;return i(e,Dl(t),n,o,_u)},reject:function(e,t){return(nt(e)?Sa:Hu)(e,Nd(Dl(t)))},sample:function(e){return(nt(e)?Uh:qh)(e)},sampleSize:function(e,t,n){return t=(n?Ri(e,t,n):void 0===t)?1:Ct(t),(nt(e)?Vh:Kh)(e,t)},shuffle:function(e){return(nt(e)?Yh:$h)(e)},size:function(e){if(null==e)return 0;if(ki(e))return bc(e)?sh(e):e.length;var t=Ya(e);return"[object Map]"==t||"[object Set]"==t?e.size:ro(e).length},some:function(e,t,n){var i=nt(e)?Hs:Jh;return n&&Ri(e,t,n)&&(t=void 0),i(e,Dl(t))},sortBy:Qh},up=Xl,cp={after:function(e,t){if("function"!=typeof t)throw new TypeError("Expected a function");return e=Ct(e),function(){if(--e<1)return t.apply(this,arguments)}},ary:bi,before:sr,bind:lr,bindKey:cr,curry:Ul,curryRight:ql,debounce:$l,defer:uu,delay:cu,flip:function(e){return mi(e,512)},memoize:ko,negate:Nd,once:function(e){return sr(2,e)},overArgs:zd,partial:ph,partialRight:gh,rearg:Bh,rest:function(e,t){if("function"!=typeof e)throw new TypeError("Expected a function");return Mi(e,t=void 0===t?t:Ct(t))},spread:function(e,t){if("function"!=typeof e)throw new TypeError("Expected a function");return t=null==t?0:lf(Ct(t),0),Mi((function(n){var i=n[t],o=hr(n,0,t);return i&&Wo(o,i),$t(e,this,o)}))},throttle:function(e,t,n){var i=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return ft(n)&&(i="leading"in n?!!n.leading:i,o="trailing"in n?!!n.trailing:o),$l(e,t,{leading:i,maxWait:t,trailing:o})},unary:function(e){return bi(e,1)},wrap:function(e,t){return ph(xu(t),e)}},dp={castArray:function(){if(!arguments.length)return[];var e=arguments[0];return nt(e)?e:[e]},clone:function(e){return Ls(e,4)},cloneDeep:Bs,cloneDeepWith:function(e,t){return Ls(e,5,t="function"==typeof t?t:void 0)},cloneWith:function(e,t){return Ls(e,4,t="function"==typeof t?t:void 0)},conformsTo:function(e,t){return null==t||Ol(e,t,ao(t))},eq:wi,gt:dc,gte:hc,isArguments:Hi,isArray:nt,isArrayBuffer:zc,isArrayLike:ki,isArrayLikeObject:tu,isBoolean:function(e){return!0===e||!1===e||$e(e)&&"[object Boolean]"==Ye(e)},isBuffer:qi,isDate:Uc,isElement:function(e){return $e(e)&&1===e.nodeType&&!tr(e)},isEmpty:Xc,isEqual:Vc,isEqualWith:function(e,t,n){var i=(n="function"==typeof n?n:void 0)?n(e,t):void 0;return void 0===i?vl(e,t,void 0,n):!!i},isError:or,isFinite:Yc,isFunction:At,isInteger:$c,isLength:Ai,isMap:_s,isMatch:function(e,t){return e===t||bl(e,t,wl(t))},isMatchWith:function(e,t,n){return n="function"==typeof n?n:void 0,bl(e,t,wl(t),n)},isNaN:function(e){return Jc(e)&&e!=+e},isNative:function(e){if(Qc(e))throw new Error("Unsupported core-js use. Try https://npms.io/search?q=ponyfill.");return Wt(e)},isNil:ed,isNull:function(e){return null===e},isNumber:Jc,isObject:ft,isObjectLike:$e,isPlainObject:tr,isRegExp:nd,isSafeInteger:function(e){return $c(e)&&e>=-9007199254740991&&e<=id},isSet:Ms,isString:bc,isSymbol:Je,isTypedArray:Qi,isUndefined:function(e){return void 0===e},isWeakMap:function(e){return $e(e)&&"[object WeakMap]"==Ya(e)},isWeakSet:function(e){return $e(e)&&"[object WeakSet]"==Ye(e)},lt:hd,lte:fd,toArray:Td,toFinite:Et,toInteger:Ct,toLength:Fu,toNumber:bt,toPlainObject:iu,toSafeInteger:function(e){return e?ya(Ct(e),-9007199254740991,Rf):0===e?e:0},toString:Po},hp={add:lt,ceil:pa,divide:yu,floor:nc,max:function(e){return e&&e.length?pd(e,Nt,uc):void 0},maxBy:function(e,t){return e&&e.length?pd(e,Dl(t),uc):void 0},mean:function(e){return md(e,Nt)},meanBy:function(e,t){return md(e,Dl(t))},min:function(e){return e&&e.length?pd(e,Nt,dd):void 0},minBy:function(e,t){return e&&e.length?pd(e,Dl(t),dd):void 0},multiply:Ed,round:Gh,subtract:cf,sum:function(e){return e&&e.length?gd(e,Nt):0},sumBy:function(e,t){return e&&e.length?gd(e,Dl(t)):0}},fp=function(e,t,n){return void 0===n&&(n=t,t=void 0),void 0!==n&&(n=(n=bt(n))==n?n:0),void 0!==t&&(t=(t=bt(t))==t?t:0),ya(bt(e),t,n)},pp=function(e,t,n){return t=Et(t),void 0===n?(n=t,t=0):n=Et(n),function(e,t,n){return e>=mc(t,n)&&et){var i=e;e=t,t=i}if(n||e%1||t%1){var o=Rh();return kh(e+o*(t-e+Ah("1e-"+((o+"").length-1))),t)}return Th(e,t)},vp={assign:lo,assignIn:fo,assignInWith:po,assignWith:go,at:Vo,create:function(e,t){var n=Vt(e);return null==t?n:xa(n,t)},defaults:Ql,defaultsDeep:su,entries:Tu,entriesIn:Au,extend:fo,extendWith:po,findKey:function(e,t){return Xu(e,Dl(t),Bl)},findLastKey:function(e,t){return Xu(e,Dl(t),Nu)},forIn:function(e,t){return null==e?e:Ll(e,xu(t),ho)},forInRight:function(e,t){return null==e?e:Cu(e,xu(t),ho)},forOwn:function(e,t){return e&&Bl(e,xu(t))},forOwnRight:function(e,t){return e&&Nu(e,xu(t))},functions:function(e){return null==e?[]:ac(e,ao(e))},functionsIn:function(e){return null==e?[]:ac(e,ho(e))},get:Fo,has:gc,hasIn:Sl,invert:Dc,invertBy:Lc,invoke:Fc,keys:ao,keysIn:ho,mapKeys:function(e,t){var n={};return t=Dl(t),Bl(e,(function(e,i,o){xi(n,t(e,i,o),e)})),n},mapValues:function(e,t){var n={};return t=Dl(t),Bl(e,(function(e,i,o){xi(n,i,t(e,i,o))})),n},merge:yd,mergeWith:au,omit:Dd,omitBy:function(e,t){return Id(e,Nd(Dl(t)))},pick:mh,pickBy:Id,result:function(e,t,n){var i=-1,o=(t=Io(t,e)).length;for(o||(o=1,e=void 0);++i=this.__values__.length;return{done:e,value:e?void 0:this.__values__[this.__index__++]}},plant:function(e){for(var t,n=this;n instanceof tn;){var i=hn(n);i.__index__=0,i.__values__=void 0,t?o.__wrapped__=i:t=i;var o=i;n=n.__wrapped__}return o.__wrapped__=e,t},reverse:function(){var e=this.__wrapped__;if(e instanceof on){var t=e;return this.__actions__.length&&(t=new on(this)),(t=t.reverse()).__actions__.push({func:Sf,args:[zh],thisArg:void 0}),new cn(t,this.__chain__)}return this.thru(zh)},tap:function(e,t){return t(e),e},thru:Sf,toIterator:function(){return this},toJSON:kf,value:kf,valueOf:kf,wrapperChain:function(){return ga(this)}},yp={camelCase:ca,capitalize:kr,deburr:Lr,endsWith:function(e,t,n){e=Po(e),t=at(t);var i=e.length,o=n=void 0===n?i:ya(Ct(n),0,i);return(n-=t.length)>=0&&e.slice(n,o)==t},escape:Ou,escapeRegExp:function(e){return(e=Po(e))&&Iu.test(e)?e.replace(Pu,"\\$&"):e},kebabCase:rd,lowerCase:ud,lowerFirst:cd,pad:function(e,t,n){e=Po(e);var i=(t=Ct(t))?sh(e):0;if(!t||i>=t)return e;var o=(t-i)/2;return uh(dh(o),n)+e+uh(ch(o),n)},padEnd:function(e,t,n){e=Po(e);var i=(t=Ct(t))?sh(e):0;return t&&i>>0)?(e=Po(e))&&("string"==typeof t||null!=t&&!nd(t))&&!(t=at(t))&&pr(e)?hr(Mr(e),0,n):e.split(t,n):[]},startCase:uf,startsWith:function(e,t,n){return e=Po(e),n=null==n?0:ya(Ct(n),0,e.length),t=at(t),e.slice(n,n+t.length)==t},template:function(e,t,n){var i=mf.imports._.templateSettings||mf;n&&Ri(e,t,n)&&(t=void 0),e=Po(e),t=po({},t,i,ff);var o,r,a=po({},t.imports,i.imports,ff),s=ao(a),l=xc(a,s),u=0,c=t.interpolate||Cf,d="__p += '",h=RegExp((t.escape||Cf).source+"|"+c.source+"|"+(c===vf?Ef:Cf).source+"|"+(t.evaluate||Cf).source+"|$","g"),f=_f.call(t,"sourceURL")?"//# sourceURL="+(t.sourceURL+"").replace(/\s/g," ")+"\n":"";e.replace(h,(function(t,n,i,a,s,l){return i||(i=a),d+=e.slice(u,l).replace(Nf,gf),n&&(o=!0,d+="' +\n__e("+n+") +\n'"),s&&(r=!0,d+="';\n"+s+";\n__p += '"),i&&(d+="' +\n((__t = ("+i+")) == null ? '' : __t) +\n'"),u=l+t.length,t})),d+="';\n";var p=_f.call(t,"variable")&&t.variable;if(p){if(wf.test(p))throw new Error("Invalid `variable` option passed into `_.template`")}else d="with (obj) {\n"+d+"\n}\n";d=(r?d.replace(yf,""):d).replace(bf,"$1").replace(xf,"$1;"),d="function("+(p||"obj")+") {\n"+(p?"":"obj || (obj = {});\n")+"var __t, __p = ''"+(o?", __e = _.escape":"")+(r?", __j = Array.prototype.join;\nfunction print() { __p += __j.call(arguments, '') }\n":";\n")+d+"return __p\n}";var g=rr((function(){return Function(s,f+"return "+d).apply(void 0,l)}));if(g.source=d,or(g))throw g;return g},templateSettings:mf,toLower:function(e){return Po(e).toLowerCase()},toUpper:function(e){return Po(e).toUpperCase()},trim:function(e,t,n){if((e=Po(e))&&(n||void 0===t))return ht(e);if(!e||!(t=at(t)))return e;var i=Mr(e),o=Mr(t);return hr(i,Of(i,o),Df(i,o)+1).join("")},trimEnd:function(e,t,n){if((e=Po(e))&&(n||void 0===t))return e.slice(0,ct(e)+1);if(!e||!(t=at(t)))return e;var i=Mr(e);return hr(i,0,Df(i,Mr(t))+1).join("")},trimStart:function(e,t,n){if((e=Po(e))&&(n||void 0===t))return e.replace(Pf,"");if(!e||!(t=at(t)))return e;var i=Mr(e);return hr(i,Of(i,Mr(t))).join("")},truncate:function(e,t){var n=30,i="...";if(ft(t)){var o="separator"in t?t.separator:o;n="length"in t?Ct(t.length):n,i="omission"in t?at(t.omission):i}var r=(e=Po(e)).length;if(pr(e)){var a=Mr(e);r=a.length}if(n>=r)return e;var s=n-sh(i);if(s<1)return i;var l=a?hr(a,0,s).join(""):e.slice(0,s);if(void 0===o)return l+i;if(a&&(s+=l.length-s),nd(o)){if(e.slice(s).search(o)){var u,c=l;for(o.global||(o=RegExp(o.source,Po(If.exec(o))+"g")),o.lastIndex=0;u=o.exec(c);)var d=u.index;l=l.slice(0,void 0===d?s:d)}}else if(e.indexOf(at(o),s)!=s){var h=l.lastIndexOf(o);h>-1&&(l=l.slice(0,h))}return l+i},unescape:function(e){return(e=Po(e))&&jf.test(e)?e.replace(Bf,Lf):e},upperCase:Zf,upperFirst:Ar,words:sa},bp={attempt:rr,bindAll:ur,cond:function(e){var t=null==e?0:e.length,n=Dl;return e=t?tt(e,(function(e){if("function"!=typeof e[1])throw new TypeError("Expected a function");return[n(e[0]),e[1]]})):[],Mi((function(n){for(var i=-1;++i9007199254740991)return[];var n=Mf,i=Tf(e,Mf);t=xu(t),e-=Mf;for(var o=Ii(i,t);++n0||t<0)?new on(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),void 0!==t&&(n=(t=Ct(t))<0?n.dropRight(-t):n.take(t-e)),n)},on.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},on.prototype.toArray=function(){return this.take(_p)},Bl(on.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),o=pn[i?"take"+("last"==t?"Right":""):t],r=i||/^find/.test(t);o&&(pn.prototype[t]=function(){var t=this.__wrapped__,a=i?[1]:arguments,s=t instanceof on,l=a[0],u=s||nt(t),c=function(e){var t=o.apply(pn,Wo([e],a));return i&&d?t[0]:t};u&&n&&"function"==typeof l&&1!=l.length&&(s=u=!1);var d=this.__chain__,h=!!this.__actions__.length,f=r&&!d,p=s&&!h;if(!r&&u){t=p?t:new on(this);var g=e.apply(t,a);return g.__actions__.push({func:Sf,args:[c],thisArg:void 0}),new cn(g,d)}return f&&p?e.apply(this,a):(g=this.thru(c),f?i?g.value()[0]:g.value():g)})})),Sn(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Sp[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);pn.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var o=this.value();return t.apply(nt(o)?o:[],e)}return this[n]((function(n){return t.apply(nt(n)?n:[],e)}))}})),Bl(on.prototype,(function(e,t){var n=pn[t];if(n){var i=n.name+"";Mp.call(sn,i)||(sn[i]=[]),sn[i].push({name:t,func:n})}})),sn[Qn(void 0,2).name]=[{name:"wrapper",func:void 0}],on.prototype.clone=function(){var e=new on(this.__wrapped__);return e.__actions__=dn(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=dn(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=dn(this.__views__),e},on.prototype.reverse=function(){if(this.__filtered__){var e=new on(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},on.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=nt(e),i=t<0,o=n?e.length:0,r=function(e,t,n){for(var i=-1,o=n.length;++ip||b.heightg)i.dragHandler.cancelDrag();else{i.updatePosition({deltaX:m?0:b.deltaX,deltaY:y?0:b.deltaY}),i.nodeModel.width=b.width,i.nodeModel.height=b.height,i.nodeModel.setProperties({nodeSize:{width:b.width,height:b.height}});var x={x:r,y:a,width:s,height:l,radius:u},w={x:i.nodeModel.x,y:i.nodeModel.y,width:i.nodeModel.width,height:i.nodeModel.height,radius:u};i.updateEdgePointByAnchors(),i.eventEmit({deltaX:t,deltaY:n,beforeNode:x,afterNode:w})}},i.updateEllipse=function(e){var t=e.deltaX,n=e.deltaY,o=i.nodeModel,r=o.rx,a=o.ry,s=o.x,l=o.y,u=o.PCTResizeInfo,c=i.index,d=i.nodeModel,h=d.minWidth,f=d.minHeight,p=d.maxWidth,g=d.maxHeight,m=h===p,y=f===g,b=r,x=a,w=i.getResize({index:c,deltaX:t,deltaY:n,width:b,height:x,PCTResizeInfo:u,pct:.5,freezeWidth:m,freezeHeight:y});if(w.widthp/2||w.heightg/2)i.dragHandler.cancelDrag();else{i.updatePosition({deltaX:m?0:w.deltaX,deltaY:y?0:w.deltaY}),i.nodeModel.rx=w.width,i.nodeModel.ry=w.height,i.nodeModel.setProperties({nodeSize:{rx:w.width,ry:w.height}});var E={x:s,y:l},C={rx:w.width,ry:w.height,x:i.nodeModel.x,y:i.nodeModel.y};i.updateEdgePointByAnchors(),i.eventEmit({deltaX:t,deltaY:n,beforeNode:v(v({},E),{rx:r,ry:a}),afterNode:C})}},i.updateDiamond=function(e){var t=e.deltaX,n=e.deltaY,o=i.nodeModel,r=o.rx,a=o.ry,s=o.x,l=o.y,u=o.PCTResizeInfo,c=i.index,d=i.nodeModel,h=d.minWidth,f=d.minHeight,p=d.maxWidth,g=d.maxHeight,v=h===p,m=f===g,y=r,b=a,x=i.getResize({index:c,deltaX:t,deltaY:n,width:y,height:b,PCTResizeInfo:u,pct:.5,freezeWidth:v,freezeHeight:m});if(x.widthp/2||x.heightg/2)i.dragHandler.cancelDrag();else{i.updatePosition({deltaX:v?0:x.deltaX,deltaY:m?0:x.deltaY}),i.nodeModel.rx=x.width,i.nodeModel.ry=x.height,i.nodeModel.setProperties({nodeSize:{rx:x.width,ry:x.height}});var w={x:s,y:l,rx:r,ry:a},E={rx:x.width,ry:x.height,x:i.nodeModel.x,y:i.nodeModel.y};i.updateEdgePointByAnchors(),i.eventEmit({deltaX:t,deltaY:n,beforeNode:w,afterNode:E})}},i.eventEmit=function(e){var t=e.deltaX,n=e.deltaY,o=e.beforeNode,r=e.afterNode,a=i.nodeModel,s=a.id,l=a.modelType,u=a.type,c=v({id:s,modelType:l,type:u},o),d=v({id:s,modelType:l,type:u},r);i.graphModel.eventCenter.emit("node:resize",{preData:c,data:d,deltaX:t,deltaY:n,index:i.index,model:i.nodeModel})},i.onDragging=function(e){var n,o=e.deltaX,r=e.deltaY,a=i.graphModel.transformModel,s=i.nodeModel.modelType;o=(n=E(a.fixDeltaXY(o,r),2))[0],r=n[1],s===t.ModelType.RECT_NODE||s===t.ModelType.HTML_NODE?i.updateRect({deltaX:o,deltaY:r}):s===t.ModelType.ELLIPSE_NODE?i.updateEllipse({deltaX:o,deltaY:r}):s===t.ModelType.DIAMOND_NODE&&i.updateDiamond({deltaX:o,deltaY:r})},i.onDragEnd=function(){var e=i.graphModel.gridSize,t=void 0===e?1:e,n=t*Math.round(i.nodeModel.x/t),o=t*Math.round(i.nodeModel.y/t);i.nodeModel.moveTo(n,o),i.updateEdgePointByAnchors()},i.index=n.index,i.nodeModel=n.model,i.graphModel=n.graphModel,i.dragHandler=new Pp({onDragging:i.onDragging,onDragEnd:i.onDragEnd,step:1}),i}return g(n,e),n.prototype.getNodeEdges=function(e){for(var t=this.graphModel.edges,n=[],i=[],o=0;o=this.x-this.width/2&&i<=this.x+this.width/2&&n>=this.y-this.height/2&&o<=this.y+this.height/2},t.prototype.isAllowMoveTo=function(e){var t=e.minX,n=e.minY,i=e.maxX,o=e.maxY;return{x:t>=this.x-this.width/2&&i<=this.x+this.width/2,y:n>=this.y-this.height/2&&o<=this.y+this.height/2}},t.prototype.setAllowAppendChild=function(e){this.setProperty("groupAddable",e)},t.prototype.addChild=function(e){this.children.add(e),this.graphModel.eventCenter.emit("group:add-node",{data:this.getData()})},t.prototype.removeChild=function(e){this.children.delete(e),this.graphModel.eventCenter.emit("group:remove-node",{data:this.getData()})},t.prototype.getAddableOutlineStyle=function(){return{stroke:"#FEB663",strokeWidth:2,strokeDasharray:"4 4",fill:"transparent"}},t.prototype.getData=function(){var t=this,n=e.prototype.getData.call(this);n.children=[],this.children.forEach((function(e){var i=t.graphModel.getNodeModelById(e);i&&!i.virtual&&n.children.push(e)}));var i=n.properties;return null==i||delete i.groupAddable,null==i||delete i.isFolded,n},t.prototype.getHistoryData=function(){var t=e.prototype.getData.call(this);t.children=C([],E(this.children),!1),t.isGroup=!0;var n=t.properties;return null==n||delete n.groupAddable,(null==n?void 0:n.isFolded)&&(t.x=t.x+this.unfoldedWidth/2-this.foldedWidth/2,t.y=t.y+this.unfoldedHeight/2-this.foldedHeight/2),t},t.prototype.isAllowAppendIn=function(e){return!0},t.prototype.toBack=function(){this.zIndex--},t}(Xp),Zp=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return g(n,e),n.prototype.getControlGroup=function(){var t=this.props.model,n=t.resizable,i=t.properties;return n&&!i.isFolded?e.prototype.getControlGroup.call(this):null},n.prototype.getAddableShape=function(){var e=this.props.model,n=e.width,i=e.height,o=e.x,r=e.y,a=e.radius,s=e.properties,l=e.getAddableOutlineStyle;if(!s.groupAddable)return null;var u=this.props.model.getNodeStyle().strokeWidth,c=void 0===u?0:u,d=l(),h=n+c+8,f=i+c+8;return t.h("rect",v(v({},d),{width:h,height:f,x:o-h/2,y:r-f/2,rx:a,ry:a}))},n.prototype.getFoldIcon=function(){var e=this.props.model,n=e.x-e.width/2+5,i=e.y-e.height/2+5;if(!e.foldable)return null;var o=t.h("path",{fill:"none",stroke:"#818281",strokeWidth:2,"pointer-events":"none",d:e.properties.isFolded?"M ".concat(n+3,",").concat(i+6," ").concat(n+11,",").concat(i+6," M").concat(n+7,",").concat(i+2," ").concat(n+7,",").concat(i+10):"M ".concat(n+3,",").concat(i+6," ").concat(n+11,",").concat(i+6," ")});return t.h("g",{},[t.h("rect",{height:12,width:14,rx:2,ry:2,strokeWidth:1,fill:"#F4F5F6",stroke:"#CECECE",cursor:"pointer",x:e.x-e.width/2+5,y:e.y-e.height/2+5,onClick:function(){e.foldGroup(!e.properties.isFolded)}}),o])},n.prototype.getResizeShape=function(){return t.h("g",{},[this.getAddableShape(),e.prototype.getResizeShape.call(this),this.getFoldIcon()])},n}(Vp),Jp={type:"group",view:Zp,model:$p},Qp=-1e4,eg=function(){function e(e){var t=e.lf,n=this;this.topGroupZIndex=Qp,this.nodeGroupMap=new Map,this.graphRendered=function(e){var t=e.data;t&&t.nodes&&(t.nodes.forEach((function(e){e.children&&e.children.forEach((function(t){n.nodeGroupMap.set(t,e.id)}))})),n.checkAndCorrectTopGroupZIndex(t.nodes))},this.appendNodeToGroup=function(e){var t=e.data,i=n.nodeGroupMap.get(t.id);if(i){var o=n.lf.getNodeModelById(i);o.removeChild(t.id),n.nodeGroupMap.delete(t.id),o.setAllowAppendChild(!1)}var r=n.lf.getNodeModelById(t.id),a=null==r?void 0:r.getBounds();if(a&&r){var s=n.getGroup(a,t);if(r.isGroup&&(t.children.forEach((function(e){n.nodeGroupMap.set(e,t.id)})),n.checkAndCorrectTopGroupZIndex([t]),n.nodeSelected({data:t,isSelected:!1,isMultiple:!1})),!s)return;if(!s.isAllowAppendIn(t))return void n.lf.emit("group:not-allowed",{group:s.getData(),node:t});s.addChild(t.id),n.nodeGroupMap.set(t.id,s.id),s.setAllowAppendChild(!1)}},this.deleteGroupChild=function(e){var t=e.data;t.children&&t.children.forEach((function(e){n.nodeGroupMap.delete(e),n.lf.deleteNode(e)}));var i=n.nodeGroupMap.get(t.id);i&&(n.lf.getNodeModelById(i).removeChild(t.id),n.nodeGroupMap.delete(t.id))},this.setActiveGroup=function(e){var t=e.data,i=n.lf.getNodeModelById(t.id),o=null==i?void 0:i.getBounds();if(i&&o){var r=n.getGroup(o,t);if(n.activeGroup&&n.activeGroup.setAllowAppendChild(!1),!r||i.isGroup&&r.id===t.id)return;if(!r.isAllowAppendIn(t))return;n.activeGroup=r,n.activeGroup.setAllowAppendChild(!0)}},this.findNodeAndChildMaxZIndex=function(e){var t=Qp;return e.isGroup&&(t=Math.max(t,e.zIndex)),e.children&&e.children.forEach((function(e){"object"==typeof e&&(e=e.id);var i=n.lf.getNodeModelById(e);if(null==i?void 0:i.isGroup){var o=n.findNodeAndChildMaxZIndex(i);t=Math.max(o,t)}})),t},this.checkAndCorrectTopGroupZIndex=function(e){var t=Qp;if(e.forEach((function(e){var i=n.lf.getNodeModelById(e.id);if(i){var o=n.findNodeAndChildMaxZIndex(i);o>t&&(t=o)}})),!(n.topGroupZIndex>=t)){for(var i=n.lf.graphModel.nodes.filter((function(e){return e.isGroup})),o=n.topGroupZIndex,r=0;ro&&(o=a.zIndex)}n.topGroupZIndex=o}},this.nodeSelected=function(e){var t=e.data,i=e.isMultiple,o=e.isSelected,r=n.lf.getNodeModelById(t.id);if(n.toFrontGroup(r),n.topGroupZIndex>-1e3){n.topGroupZIndex=Qp;for(var a=n.lf.graphModel.nodes.filter((function(e){return e.isGroup})).sort((function(e,t){return e.zIndex-t.zIndex})),s=0,l=0;l0&&(f=u.map((function(e){return e.x+=n,e.y+=n,e})));var p={type:a,startPoint:d,endPoint:h,sourceNodeId:o,targetNodeId:r,pointsList:f};return ft(c)&&!Xc(c)&&(p.text=v(v({},c),{x:(null==c?void 0:c.x)+n,y:(null==c?void 0:c.y)+n})),i.graphModel.addEdge(p)},e.prototype.getNodeAllChild=function(e){var t=this,n=[];return e.children&&e.children.forEach((function(e){n.push(e);var i=t.lf.getNodeModelById(e);(null==i?void 0:i.isGroup)&&(n=n.concat(t.getNodeAllChild(i)))})),n},e.prototype.getGroup=function(e,t){var n=this.lf.graphModel.nodes.filter((function(n){return n.isGroup&&n.isInRange(e)&&n.id!==t.id}));if(0!==n.length){if(1===n.length)return n[0];for(var i=n[n.length-1],o=n.length-2;o>=0;o--)n[o].zIndex>i.zIndex&&(i=n[o]);return i}},e.prototype.getNodeGroup=function(e){var t=this.nodeGroupMap.get(e);if(t)return this.lf.getNodeModelById(t)},e.prototype.render=function(){},e.prototype.destroy=function(){},e.pluginName="group",e}();function tg(){var e=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return g(n,e),n.prototype.getFoldIcon=function(){var e=this.props.model,n=e,i=n.x,o=n.y,r=n.width,a=n.height,s=n.properties,l=n.foldable,u=e.x-e.width/2+5,c=e.y-e.height/2+5;if(!l)return null;var d=t.h("path",{fill:"none",stroke:"#818281",strokeWidth:2,"pointer-events":"none",d:s.isFolded?"M ".concat(u+3,",").concat(c+6," ").concat(u+11,",").concat(c+6," M").concat(u+7,",").concat(c+2," ").concat(u+7,",").concat(c+10):"M ".concat(u+3,",").concat(c+6," ").concat(u+11,",").concat(c+6," ")});return t.h("g",{},[t.h("rect",{height:12,width:14,rx:2,ry:2,strokeWidth:1,fill:"#F4F5F6",stroke:"#CECECE",cursor:"pointer",x:i-r/2+5,y:o-a/2+5,onClick:function(t){var n,i;t.stopPropagation(),null===(i=(n=e).foldGroup)||void 0===i||i.call(n,!s.isFolded)}}),d])},n.prototype.getResizeShape=function(){var e=this.props.model,n=e.x,i=e.y,o=e.width,r=e.height,a=e.getNodeStyle(),s=v(v({},a),{x:n-o/2,y:i-r/2,width:o,height:r,stroke:"black",strokeWidth:2,strokeDasharray:"0 0"});return t.h("g",{},[t.h("rect",v({},s)),this.getFoldIcon()])},n}(Zp),n=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return g(t,e),t.prototype.initNodeData=function(t){e.prototype.initNodeData.call(this,t),this.foldable=!0,this.resizable=!0,this.width=400,this.height=200,this.resetWidthHeight(),this.isTaskNode=!0,this.boundaryEvents=[]},t.prototype.resetWidthHeight=function(){var e,t,n=null===(e=this.properties.iniProp)||void 0===e?void 0:e.width,i=null===(t=this.properties.iniProp)||void 0===t?void 0:t.height;n&&(this.width=n),i&&(this.height=i)},t.prototype.getNodeStyle=function(){var t=e.prototype.getNodeStyle.call(this);return t.stroke="#989891",t.strokeWidth=1,t.strokeDasharray="3 3",this.isSelected&&(t.stroke="rgb(124, 15, 255)"),this.properties.isBoundaryEventTouchingTask&&(t.stroke="#00acff",t.strokeWidth=2),t},t.prototype.addChild=function(t){var n=this.graphModel.getElement(t);null==n||n.setProperties({parent:this.id}),e.prototype.addChild.call(this,t)},t.prototype.getAnchorStyle=function(){var t=e.prototype.getAnchorStyle.call(this);return t.stroke="#000",t.fill="#fff",t.hover||(t.hover={}),t.hover.stroke="transparent",t},t.prototype.getOutlineStyle=function(){var t=e.prototype.getOutlineStyle.call(this);return t.stroke="transparent",t.hover||(t.hover={}),t.hover.stroke="transparent",t},t.prototype.setTouching=function(e){this.setProperty("isBoundaryEventTouchingTask",e)},t.prototype.addBoundaryEvent=function(e){if(this.setTouching(!1),this.boundaryEvents.find((function(t){return t===e})))return!1;var t=this.graphModel.getNodeModelById(e);return null==t||t.setProperties({attachedToRef:this.id}),this.boundaryEvents.push(e),!0},t.prototype.deleteBoundaryEvent=function(e){this.boundaryEvents=this.boundaryEvents.filter((function(t){return t!==e}))},t}($p);return{type:"bpmn:subProcess",view:e,model:n}}function ng(e){var t=Le("bpmn:serviceTask",Te),n=Le("bpmn:userTask",Ae);e.register(t),e.register(n),e.register(tg()),function(e){function t(e,t){var n=e.x,i=e.y,o=e.width,r=e.height,a=e.id,s=n-o/2,l=n+o/2,u=i-r/2,c=i+r/2,d=t.x,h=t.y;return d>s-5&&du-5&&hs+5&&du+5&&h"):"object"==typeof r&&r.constructor===Array?n[n.length]=this.array_to_xml(o,r):n[n.length]="object"==typeof r?this.hash_to_xml(o,r):this.scalar_to_xml(o,r):i[i.length]=" ".concat(o.substring(1),'="').concat(this.xml_escape(r),'"')}var a=i.join(""),s=n.join("");return void 0===e||null==e||(s=n.length>0?s.match(/\n/)?"<".concat(e).concat(a,">\n").concat(s,"\n"):"<".concat(e).concat(a,">").concat(s,"\n"):"<".concat(e).concat(a," />\n")),s},Tg.ObjTree.prototype.array_to_xml=function(e,t){for(var n=[],i=0;i"):"object"==typeof o&&o.constructor===Array?n[n.length]=this.array_to_xml(e,o):n[n.length]="object"==typeof o?this.hash_to_xml(e,o):this.scalar_to_xml(e,o)}return n.join("")},Tg.ObjTree.prototype.scalar_to_xml=function(e,t){return"#text"===e?this.xml_escape(t):"<".concat(e,">").concat(this.xml_escape(t),"\n")},Tg.ObjTree.prototype.xml_escape=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,'"')};function Ag(e){return Object.prototype.toString.call(e)}function kg(e){return" ".repeat(e)}function Rg(e){return"[object Object]"===Ag(e)?Object.keys(e).reduce((function(t,n){var i=n;return"-"===n.charAt(0)&&(i=n.substring(1)),t[i]=Rg(e[n]),t}),{}):Array.isArray(e)?e.map((function(e){return Rg(e)})):e}var Dg,Og="\t\n";function Pg(e,t,n){var i=kg(n),o="",r=Og+i;if("-json"===t)return"";if("#text"===t)return r+e;if("#cdata-section"===t)return"".concat(r,"");if("#comment"===t)return"".concat(r,"\x3c!--").concat(e,"--\x3e");if("-"==="".concat(t).charAt(0))return" ".concat(t.substring(1),'="').concat(function(e){var t=e;try{"string"!=typeof t&&(t=JSON.parse(e))}catch(n){t=JSON.stringify(Rg(e)).replace(/"/g,"'")}return t}(e),'"');if(Array.isArray(e))o+=e.map((function(e){return Pg(e,t,n+1)})).join("");else if("[object Object]"===Ag(e)){var a=Object.keys(e),s="",l=e["-json"]?Og+kg(n+1)+e["-json"]:"";o+="".concat(0===n?"":r,"<").concat(t),a.forEach((function(t){"-"===t.charAt(0)?s+=Pg(e[t],t,n+1):l+=Pg(e[t],t,n+1)})),o+=s+(""!==l?">".concat(l).concat(r,""):" />")}else o+="".concat(r,"<").concat(t,">").concat(e.toString(),"");return o}!function(e){e.START="bpmn:startEvent",e.END="bpmn:endEvent",e.INTERMEDIATE_CATCH="bpmn:intermediateCatchEvent",e.INTERMEDIATE_THROW="bpmn:intermediateThrowEvent",e.BOUNDARY="bpmn:boundaryEvent",e.PARALLEL_GATEWAY="bpmn:parallelGateway",e.INCLUSIVE_GATEWAY="bpmn:inclusiveGateway",e.EXCLUSIVE_GATEWAY="bpmn:exclusiveGateway",e.USER="bpmn:userTask",e.SYSTEM="bpmn:serviceTask",e.FLOW="bpmn:sequenceFlow",e.SUBPROCESS="bpmn:subProcess"}(Dg||(Dg={}));var Ig=["-name","-id","bpmn:incoming","bpmn:outgoing","-sourceRef","-targetRef","-children"],Lg=["properties","startPoint","endPoint","pointsList"],Bg={in:[],out:["properties.panels","properties.nodeSize","properties.definitionId","properties.timerValue","properties.timerType","properties.definitionType","properties.parent","properties.isBoundaryEventTouchingTask"]},jg=function(e,t){return Object.keys(t||{}).forEach((function(n){if(e[n]){var i=t[n],o=i.in,r=i.out;o&&(e[n].in=o),r&&(e[n].out=r)}else e[n]=t[n]})),e},Fg={"bpmn:startEvent":{out:function(e){var t,n,i=e.properties;return(null===(n=null===(t=Fg[i.definitionType])||void 0===t?void 0:t.out)||void 0===n?void 0:n.call(t,e))||{}}},"bpmn:intermediateCatchEvent":{out:function(e){var t,n,i=e.properties;return(null===(n=null===(t=Fg[i.definitionType])||void 0===t?void 0:t.out)||void 0===n?void 0:n.call(t,e))||{}}},"bpmn:intermediateThrowEvent":{out:function(e){var t,n,i=e.properties;return(null===(n=null===(t=Fg[i.definitionType])||void 0===t?void 0:t.out)||void 0===n?void 0:n.call(t,e))||{}}},"bpmn:boundaryEvent":{out:function(e){var t,n,i=e.properties;return(null===(n=null===(t=Fg[i.definitionType])||void 0===t?void 0:t.out)||void 0===n?void 0:n.call(t,e))||{}}},"bpmn:sequenceFlow":{out:function(e){var t=e.properties,n=t.expressionType,i=t.condition;return i?"cdata"===n?{json:'")}:{json:''.concat(i,"")}:{json:""}}},"bpmn:timerEventDefinition":{out:function(e){var t=e.properties,n=t.timerType,i=t.timerValue,o=t.definitionId;return{json:'".concat("').concat(i,""),""):"/>")}},in:function(e,t){var n,i,o,r=e,a=t["-id"],s="",l="";try{for(var u=w(Object.keys(t)),c=u.next();!c.done;c=u.next()){var d=c.value;d.includes("bpmn:")&&(s=E(d.split(":"),2)[1],l=null===(o=t[d])||void 0===o?void 0:o["#text"])}}catch(e){n={error:e}}finally{try{c&&!c.done&&(i=u.return)&&i.call(u)}finally{if(n)throw n.error}}return{"-definitionId":a,"-definitionType":r,"-timerType":s,"-timerValue":l}}},"bpmn:conditionExpression":{in:function(e,t){var n,i="",o="";return t["#cdata-section"]?(o="cdata",i=(null===(n=/^\$\{(.*)\}$/g.exec(t["#cdata-section"]))||void 0===n?void 0:n[1])||""):t["#text"]&&(o="normal",i=t["#text"]),{"-condition":i,"-expressionType":o}}}};function Hg(e){var t=null!=e?e:{},n=t.retainedAttrsFields,i=t.excludeFields,o=t.transformer,r=new Set(C(C([],E(Lg),!1),E(n||[]),!1)),a={in:new Set(C(C([],E(Bg.in),!1),E((null==i?void 0:i.in)||[]),!1)),out:new Set(C(C([],E(Bg.out),!1),E((null==i?void 0:i.out)||[]),!1))};return Fg=jg(Fg,o),function(e){var t=e.nodes,n=e.edges;return function e(i,o){var s,l;if(1!==(null==i?void 0:i.flag)){var u;if((u=Fg[i.type])&&u.out){var c=u.out(i),d=Object.keys(c);d.length>0&&d.forEach((function(e){i[e]=c[e]}))}(null==i?void 0:i.children)&&(i.children=i.children.map((function(e){return t.find((function(t){return t.id===e}))||n.find((function(t){return t.id===e}))||{}})));var h={};if("string"==typeof i)return i;if(Array.isArray(i))return i.map((function(t){return e(t,"")})).filter((function(e){return null!=e}));try{for(var f=w(Object.entries(i)),p=f.next();!p.done;p=f.next()){var g=E(p.value,2),v=g[0],m=g[1];if(1===(null==m?void 0:m.flag))return;var y=[o,v].filter((function(e){return e})).join(".");a.out.has(y)||("object"!=typeof m?0===v.indexOf("-")||["#text","#cdata-section","#comment"].includes(v)?h[v]=m:h["-".concat(v)]=m:r.has(y)?h["-".concat(v)]=e(m,y):h[v]=e(m,y))}}catch(e){s={error:e}}finally{try{p&&!p.done&&(l=f.return)&&l.call(f)}finally{if(s)throw s.error}}return h}}(e,"")}}function Wg(e){var t,n,i={};try{for(var o=w(Object.entries(e)),r=o.next();!r.done;r=o.next()){var a=E(r.value,2),s=a[0],l=a[1];0===s.indexOf("-")?i[s.substring(1)]=Rg(l):"string"==typeof l?i[s]=l:"[object Object]"===Object.prototype.toString.call(l)?i[s]=Wg(l):Array.isArray(l)?i[s]=l.map((function(e){return Wg(e)})):i[s]=l}}catch(e){t={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(t)throw t.error}}return i}function zg(e,t){e["bpmndi:BPMNEdge"]=t.edges.map((function(e){var t,n=e.id,i=e.pointsList.map((function(e){return{"-x":e.x,"-y":e.y}})),o={"-id":"".concat(n,"_di"),"-bpmnElement":n,"di:waypoint":i};return(null===(t=e.text)||void 0===t?void 0:t.value)&&(o["bpmndi:BPMNLabel"]={"dc:Bounds":{"-x":e.text.x-10*e.text.value.length/2,"-y":e.text.y-7,"-width":10*e.text.value.length,"-height":14}}),o})),e["bpmndi:BPMNShape"]=t.nodes.map((function(e){var t,n=e.id,i=100,o=80,r=e.x,a=e.y,s=Vg.shapeConfigMap.get(e.type);s&&(i=s.width,o=s.height),r-=i/2,a-=o/2;var l={"-id":"".concat(n,"_di"),"-bpmnElement":n,"dc:Bounds":{"-x":r,"-y":a,"-width":i,"-height":o}};return(null===(t=e.text)||void 0===t?void 0:t.value)&&(l["bpmndi:BPMNLabel"]={"dc:Bounds":{"-x":e.text.x-10*e.text.value.length/2,"-y":e.text.y-7,"-width":10*e.text.value.length,"-height":14}}),l}))}var Gg=["bpmn:incoming","bpmn:outgoing"];function Ug(e,t){var n=[],i=[],o=new Map,r=null!=t?t:{},a=r.transformer,s=r.excludeFields,l={in:new Set(C(C([],E(Bg.in),!1),E((null==s?void 0:s.in)||[]),!1)),out:new Set(C(C([],E(Bg.out),!1),E((null==s?void 0:s.out)||[]),!1))};Fg=jg(Fg,a);var u,c,d=e["bpmn:definitions"];if(d){var h=d["bpmn:process"];u=h,c=[function(e){function t(e){e["-children"]||(e["-children"]=[]),Object.keys(e).forEach((function(t){var n;0!==t.indexOf("bpmn:")||Gg.includes(t)||(h[t]||(h[t]=[]),!Array.isArray(h[t])&&(h[t]=[h[t]]),Array.isArray(e[t])?(n=h[t]).push.apply(n,C([],E(e[t]),!1)):h[t].push(e[t]),Array.isArray(e[t])?e[t].forEach((function(n){!t.includes("Flow")&&e["-children"].push(n["-id"])})):!t.includes("Flow")&&e["-children"].push(e[t]["-id"]),delete e[t])}))}if("bpmn:subProcess"===e){var n=h[e];Array.isArray(n)?n.forEach((function(n){"bpmn:subProcess"===e&&t(n)})):t(n)}},function(e){function t(e){var n;o.set(e["-id"],e),Array.isArray(e)?e.forEach((function(e){t(e)})):"object"==typeof e&&(n=e,Object.keys(n).forEach((function(e){var i,o;if(e.includes("bpmn:")){var r={};Fg[e]&&Fg[e].in?(r=null===(o=(i=Fg[e]).in)||void 0===o?void 0:o.call(i,e,pn.cloneDeep(n[e])),delete n[e]):t(n[e]);var a=void 0;(a=Reflect.ownKeys(r)).length>0&&a.forEach((function(e){Reflect.set(n,e,r[e])}))}})))}t(h[e])},function(e){if(0===e.indexOf("bpmn:")){var t=h[e];if("bpmn:sequenceFlow"===e){var r=d["bpmndi:BPMNDiagram"]["bpmndi:BPMNPlane"]["bpmndi:BPMNEdge"];i=function(e,t){var n=[];if(Array.isArray(e))e.forEach((function(e){var i;i=Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n.push(Xg(i,e))}));else{var i=void 0;i=Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n.push(Xg(i,e))}return n}(t,r)}else{var a=d["bpmndi:BPMNDiagram"]["bpmndi:BPMNPlane"]["bpmndi:BPMNShape"];if("bpmn:boundaryEvent"===e){var s=h[e],l=function(e){var t=e["-attachedToRef"],n=o.get(t);n["-boundaryEvents"]||(n["-boundaryEvents"]=[]),n["-boundaryEvents"].push(e["-id"])};Array.isArray(s)?s.forEach((function(e){l(e)})):l(s)}n=n.concat(function(e,t,n){var i=[];if(Array.isArray(e))e.forEach((function(e){var o=qg(Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n,e);i.push(o)}));else{var o=qg(Array.isArray(t)?t.find((function(t){return t["-bpmnElement"]===e["-id"]})):t,n,e);i.push(o)}return i}(t,a,e))}}}],c.forEach((function(e){try{Object.keys(u).forEach((function(t){try{e(t)}catch(e){}}))}catch(e){}}))}var f=function(e,t,n){Object.keys(e).forEach((function(i){var o=n?"".concat(n,".").concat(i):i;t.has(o)?delete e[i]:"object"==typeof e[i]&&f(e[i],t,o)}))};return n.forEach((function(e){var n,i;if(null===(n=null==t?void 0:t.mapping)||void 0===n?void 0:n.in){var o=null===(i=null==t?void 0:t.mapping)||void 0===i?void 0:i.in,r=e.type;o[r]&&(e.type=o[r])}f(e,l.in,"")})),i.forEach((function(e){var n,i;if(null===(n=null==t?void 0:t.mapping)||void 0===n?void 0:n.in){var o=null===(i=null==t?void 0:t.mapping)||void 0===i?void 0:i.in,r=e.type;o[r]&&(e.type=o[r])}f(e,l.in,"")})),{nodes:n,edges:i}}function qg(e,t,n){var i=Number(e["dc:Bounds"]["-x"]),o=Number(e["dc:Bounds"]["-y"]),r=n["-children"],a=n["-name"],s=Vg.shapeConfigMap.get(t);s&&(i+=s.width/2,o+=s.height/2);var l,u={};if(Object.entries(n).forEach((function(e){var t=E(e,2),n=t[0],i=t[1];Ig.includes(n)||(u[n]=i)})),u=Wg(u),a&&(l={x:i,y:o,value:a},e["bpmndi:BPMNLabel"]&&e["bpmndi:BPMNLabel"]["dc:Bounds"])){var c=e["bpmndi:BPMNLabel"]["dc:Bounds"];l.x=Number(c["-x"])+Number(c["-width"])/2,l.y=Number(c["-y"])+Number(c["-height"])/2}var d={id:e["-bpmnElement"],type:t,x:i,y:o,properties:u};return r&&(d.children=r),l&&(d.text=l),d}function Xg(e,t){var n,i=t["-name"]?"".concat(t["-name"]):"";if(i){var o=e["bpmndi:BPMNLabel"]["dc:Bounds"],r=0;i.split("\n").forEach((function(e){r=0&&e[i["-type"]].splice(s,1),o.delete(i["-id"]),t[i["-type"]]||(t[i["-type"]]=[]),t[i["-type"]].push(a)}));var r=n["bpmn:incoming"];n["bpmn:outgoing"].forEach((function(e){r.has(e)&&i.push(e)}));for(var s,l=function(e){var n=a.findIndex((function(t){return t["-id"]===i[e]}));n>=0?(t["bpmn:sequenceFlow"]||(t["bpmn:sequenceFlow"]=[]),t["bpmn:sequenceFlow"].push(a[n]),a.splice(n,1)):e++,s=e},u=0;u-1e3){var a=i.lf.graphModel.nodes;i.topGroupZIndex=iv;var s=Qh(Wu(a,(function(e){return!!e.isGroup})),"zIndex"),l=0;wu(s,(function(e){e.zIndex!==l&&(i.topGroupZIndex++,l=e.zIndex),e.setZIndex(i.topGroupZIndex)}))}if(n&&o)if(null==r?void 0:r.isGroup){var u=r.children;wu(Array.from(u),(function(e){var t=i.lf.getNodeModelById(e);null==t||t.setSelected(!1)}))}else{var c=i.nodeGroupMap.get(t.id);if(c){var d=i.lf.getNodeModelById(c);(null==d?void 0:d.isSelected)&&(null==r||r.setSelected(!1))}}},this.onNodeMove=function(e){var t=e.deltaX,n=e.deltaY,o=e.data,r=o.id,a=o.x,s=o.y,l=o.properties;if(l){var u=l.width,c=l.height,d=i.nodeGroupMap.get(r);if(d){var h=i.lf.getNodeModelById(d);if(h&&h.isRestrict&&h.autoResize){var f=a+t/2,p=s+n/2,g=f-u/2,v=p-c/2,m=f+u/2,y=p+c/2,b=!1,x=h.getBounds(),w=Object.assign({},x);if(gw.maxX&&(w.maxX=m,b=!0),y>w.maxY&&(w.maxY=y,b=!0),b){var E=w.minX+(w.maxX-w.minX)/2,C=w.minY+(w.maxY-w.minY)/2,N=w.maxX-w.minX,_=w.maxY-w.minY;h.moveTo(E,C),h.width=N,h.height=_}}}}},this.onGraphRendered=function(e){var t=e.data;wu(t.nodes,(function(e){e.children&&wu(e.children,(function(t){i.nodeGroupMap.set(t,e.id)}))})),i.calibrateTopGroupZIndex(t.nodes)},t.register(nv),this.lf=t,lo(this,n),this.init()}return e.prototype.getGroupByNodeId=function(e){var t=this.nodeGroupMap.get(e);if(t)return this.lf.getNodeModelById(t)},e.prototype.getGroupByBounds=function(e,t){var n=Wu(this.lf.graphModel.nodes,(function(n){return!!n.isGroup&&function(e,t){var n=e.minX,i=e.minY,o=e.maxX,r=e.maxY,a=t.x,s=t.y,l=t.width,u=t.height;return n>=a-l/2&&o<=a+l/2&&i>=s-u/2&&r<=s+u/2}(e,n)&&n.id!==t.id})),i=n.length;if(i<=1)return n[0];for(var o=n[i-1],r=i-2;r>=0;r--)n[r].zIndex>o.zIndex&&(o=n[r]);return o},e.prototype.sendNodeToFront=function(e){var t=this;if(e&&e.isGroup&&(this.topGroupZIndex++,e.setZIndex(this.topGroupZIndex),e.children)){var n=e.children;wu(Array.from(n),(function(e){var n=t.lf.getNodeModelById(e);t.sendNodeToFront(n)}))}},e.prototype.getMaxZIndex=function(e){var t=this,n=iv;if(e.isGroup&&(n=Math.max(n,e.zIndex)),e.children){var i=e.children;wu(Array.from(i),(function(e){var i=t.lf.getNodeModelById(e);if(null==i?void 0:i.isGroup){var o=t.getMaxZIndex(i);n=Math.max(n,o)}}))}return n},e.prototype.calibrateTopGroupZIndex=function(e){var t=this,n=iv;if(wu(e,(function(e){var i=t.lf.getNodeModelById(e.id);if(i){var o=t.getMaxZIndex(i);o>n&&(n=o)}})),!(this.topGroupZIndex>=n)){var i=Wu(this.lf.graphModel.nodes,(function(e){return!!e.isGroup})),o=this.topGroupZIndex;wu(i,(function(e){e.zIndex>o&&(o=e.zIndex)})),this.topGroupZIndex=o}},e.prototype.removeChildrenInGroupNodeData=function(e){var t,n=Bs(e);return delete n.children,(null===(t=n.properties)||void 0===t?void 0:t.children)&&delete n.properties.children,n},e.prototype.initGroupChildNodes=function(e,n,i,o){var r=this,a=[],s=[],l=[];wu(Array.from(n),(function(n){var u=r.lf.getNodeModelById(n);if(u){var c=u.children,d=u.getData(),h=t.EventType.NODE_GROUP_COPY||"node:group-copy-add",f=t.transformNodeData(r.removeChildrenInGroupNodeData(d),o),p=r.lf.addNode(f,h);if(i.addChild(p.id),e[n]=p.id,a.push(p),l.push.apply(l,C([],E(C(C([],E(p.incoming.edges),!1),E(p.outgoing.edges),!1)),!1)),c instanceof Set){var g=r.initGroupChildNodes(e,c,p,o),v=g.childNodes,m=g.edgesData;a.push.apply(a,C([],E(v),!1)),s.push.apply(s,C([],E(m),!1))}}}));var u=Qu(Wu(l,(function(t){return gc(e,t.sourceNodeId)&&gc(e,t.targetNodeId)})),(function(e){return e.getData()}));return{childNodes:a,edgesData:s.concat(u)}},e.prototype.createEdge=function(e,n,i){var o,r,a=e.sourceNodeId,s=e.targetNodeId,l=null!==(o=n[a])&&void 0!==o?o:a,u=null!==(r=n[s])&&void 0!==r?r:s,c=Bs(e);return e.id&&"object"==typeof e.text&&null!==e.text&&(c=t.transformEdgeData(e,i)),this.lf.graphModel.addEdge(v(v({},c),{sourceNodeId:l,targetNodeId:u}))},e.prototype.checkGroupBoundsWithChildren=function(e,t,n,i,o){if(e.children)for(var r=e.children,a=e.x+t/2,s=e.y+n/2,l=a-i/2,u=s-o/2,c=a+i/2,d=s+o/2,h=Array.from(r),f=0;f=b&&d>=x))return!1}}return!0},e.prototype.init=function(){var e=this,t=this.lf,n=t.graphModel;n.addNodeMoveRules((function(t,n,i){if(t.isGroup)return!0;var o=e.nodeGroupMap.get(t.id),r=e.lf.getNodeModelById(o);return!r||!r.isRestrict||(!!r.autoResize||function(e,t,n,i){var o=e.minX,r=e.minY,a=e.maxX,s=e.maxY,l=t.x,u=t.y,c=t.width,d=t.height;return{x:l+n>=o+c/2&&l+n<=a-c/2,y:u+i>=r+d/2&&u+i<=s-d/2}}(r.getBounds(),t,n,i))})),n.addNodeResizeRules((function(t,n,i,o,r){return!t.isGroup||!t.isRestrict||e.checkGroupBoundsWithChildren(t,n,i,o,r)})),n.dynamicGroup=this,t.on("node:add,node:drop,node:dnd-add",this.onNodeAddOrDrop),t.on("selection:drop",this.onSelectionDrop),t.on("node:delete",this.removeNodeFromGroup),t.on("node:drag,node:dnd-drag",this.onNodeDrag),t.on("selection:drag",this.onSelectionDrag),t.on("node:click",this.onNodeSelect),t.on("node:mousemove",this.onNodeMove),t.on("graph:rendered",this.onGraphRendered),t.on("group:add-node",this.onGroupAddNode),t.addElements=function(n,i){var o=n.nodes,r=n.edges;void 0===i&&(i=40);var a={},s={nodes:[],edges:[]},l=[];return wu(o,(function(n){var o,r,u=n.id,c=null!==(r=null===(o=n.properties)||void 0===o?void 0:o.children)&&void 0!==r?r:n.children,d=t.addNode(e.removeChildrenInGroupNodeData(n));if(u&&(a[u]=d.id),s.nodes.push(d),d.isGroup){var h=e.initGroupChildNodes(a,c,d,i).edgesData;l.push.apply(l,C([],E(h),!1))}})),wu(l,(function(t){e.createEdge(t,a,i)})),wu(r,(function(t){s.edges.push(e.createEdge(t,a,i))})),s},this.render()},e.prototype.render=function(){},e.prototype.destroy=function(){this.lf.off("node:add,node:drop,node:dnd-add",this.onNodeAddOrDrop),this.lf.off("selection:drop",this.onSelectionDrop),this.lf.off("node:delete",this.removeNodeFromGroup),this.lf.off("node:drag,node:dnd-drag",this.onNodeDrag),this.lf.off("selection:drag",this.onSelectionDrag),this.lf.off("node:click",this.onNodeSelect),this.lf.off("node:mousemove",this.onNodeMove),this.lf.off("graph:rendered",this.onGraphRendered),this.lf.off("group:add-node",this.onGroupAddNode)},e.pluginName="dynamicGroup",e}();!function(e){e.HORIZONTAL="horizontal",e.VERTICAL="vertical"}(tv||(tv={}));var rv=function(e,t,n,i){return void 0===i&&(i=0),lv(e,t,n)<=i};function av(e){return e*e}function sv(e,t){return av(e.x-t.x)+av(e.y-t.y)}var lv=function(e,t,n){return Math.sqrt(function(e,t,n){var i=sv(t,n);if(0===i)return sv(e,t);var o=((e.x-t.x)*(n.x-t.x)+(e.y-t.y)*(n.y-t.y))/i;return o=Math.max(0,Math.min(1,o)),sv(e,{x:t.x+o*(n.x-t.x),y:t.y+o*(n.y-t.y)})}(e,t,n))},uv=function(e,t,n){var i=function(e){var t=e.x,n=e.y,i=e.width,o=e.height;return{minX:t-i/2,minY:n-o/2,maxX:t+i/2,maxY:n+o/2,x:t,y:n,width:i,height:o,centerX:t,centerY:n}}(e),o=function(e,t){var n;return e.x===t.x?n=tv.VERTICAL:e.y===t.y&&(n=tv.HORIZONTAL),n}(t,n),r=Math.max(t.x,n.x),a=Math.min(t.x,n.x),s=Math.max(t.y,n.y),l=Math.min(t.y,n.y),u=e.x,c=e.y,d=e.width,h=e.height;if(o===tv.HORIZONTAL){if(r>=i.maxX&&a<=i.minX)return{startCrossPoint:{x:t.x>n.x?u+d/2:u-d/2,y:t.y},endCrossPoint:{x:t.x>n.x?u-d/2:u+d/2,y:t.y}}}else if(o===tv.VERTICAL&&s>=i.maxY&&l<=i.minY)return{startCrossPoint:{x:t.x,y:t.y>n.y?c+h/2:c-h/2},endCrossPoint:{x:t.x,y:t.y>n.y?c-h/2:c+h/2}}},cv=function(e,t,n){void 0===n&&(n=0);for(var i=e.x,o=e.y,r=t.pointsList,a=0;a=0){var c=i[a],d=c.sourceNodeId,h=c.targetNodeId,f=c.id,p=c.type,g=c.pointsList,v=c.sourceAnchorId,m=c.targetAnchorId,y=Bs(g[0]),b=Bs(u.startCrossPoint);this._lf.deleteEdge(f);var x=this.checkRuleBeforeInsetNode(d,h,v,m,e);if(this._lf.addEdge({type:p,sourceNodeId:d,targetNodeId:e.id,startPoint:y,endPoint:b,pointsList:C(C([],E(g.slice(0,l)),!1),[u.startCrossPoint],!1)}),this._lf.addEdge({type:p,sourceNodeId:e.id,targetNodeId:h,startPoint:Bs(u.endCrossPoint),endPoint:Bs(g[g.length-1]),pointsList:C([u.endCrossPoint],E(g.slice(l)),!1)}),x.isPass)break;this._lf.graphModel.eventCenter.emit(t.EventType.CONNECTION_NOT_ALLOWED,{data:e,msg:x.targetMsg||x.sourceMsg}),setTimeout((function(){n._lf.undo()}),200);break}}},e.pluginName="insertNodeInPolyline",e}(),hv="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},fv={};!function(e){!function(){var t={}.hasOwnProperty;function n(){for(var e="",t=0;t1?t:this.data.length),n,this.encoding)},r.toString=function(){return"[object Blob]"},r.close=function(){this.size=0,delete this.data},n}(e);e.Blob=function(e,n){var i=n&&n.type||"",o=new t;if(e)for(var r=0,a=e.length;r-1,isMac:t.navigator.platform.toUpperCase().indexOf("MAC")>=0,keyCode:{BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,SPACE:32,DELETE:46,K:75,M:77,V:86},isMetaCtrlKey:function(e){return!!(a.isMac&&e.metaKey||!a.isMac&&e.ctrlKey)},isKey:function(e,t){var n=a.getKeyCode(e);return!1===Array.isArray(t)?n===t:-1!==t.indexOf(n)},getKeyCode:function(e){var t=e.which;return null===t&&(t=null!==e.charCode?e.charCode:e.keyCode),t},blockContainerElementNames:["p","h1","h2","h3","h4","h5","h6","blockquote","pre","ul","li","ol","address","article","aside","audio","canvas","dd","dl","dt","fieldset","figcaption","figure","footer","form","header","hgroup","main","nav","noscript","output","section","video","table","thead","tbody","tfoot","tr","th","td"],emptyElementNames:["br","col","colgroup","hr","img","input","source","wbr"],extend:function(){var e=[!0].concat(Array.prototype.slice.call(arguments));return n.apply(this,e)},defaults:function(){var e=[!1].concat(Array.prototype.slice.call(arguments));return n.apply(this,e)},createLink:function(e,t,n,i){var o=e.createElement("a");return a.moveTextRangeIntoElement(t[0],t[t.length-1],o),o.setAttribute("href",n),i&&("_blank"===i&&o.setAttribute("rel","noopener noreferrer"),o.setAttribute("target",i)),o},findOrCreateMatchingTextNodes:function(e,t,n){for(var i=e.createTreeWalker(t,NodeFilter.SHOW_ALL,null,!1),o=[],r=0,s=!1,l=null,u=null;null!==(l=i.nextNode());)if(!(l.nodeType>3))if(3===l.nodeType){if(!s&&n.startn.end+1)throw new Error("PerformLinking overshot the target!");s&&o.push(u||l),r+=l.nodeValue.length,null!==u&&(r+=u.nodeValue.length,i.nextNode()),u=null}else"img"===l.tagName.toLowerCase()&&(!s&&n.start<=r&&(s=!0),s&&o.push(l));return o},splitStartNodeIfNeeded:function(e,t,n){return t!==n?e.splitText(t-n):null},splitEndNodeIfNeeded:function(e,t,n,i){var o,r;o=i+e.nodeValue.length+(t?t.nodeValue.length:0)-1,r=n-i-(t?e.nodeValue.length:0),o>=n&&i!==o&&0!==r&&(t||e).splitText(r)},splitByBlockElements:function(t){if(3!==t.nodeType&&1!==t.nodeType)return[];var n=[],i=e.util.blockContainerElementNames.join(",");if(3===t.nodeType||0===t.querySelectorAll(i).length)return[t];for(var o=0;o0)break;i=r.nextNode()}return i},findPreviousSibling:function(e){if(!e||a.isMediumEditorElement(e))return!1;for(var t=e.previousSibling;!t&&!a.isMediumEditorElement(e.parentNode);)t=(e=e.parentNode).previousSibling;return t},isDescendant:function(e,t,n){if(!e||!t)return!1;if(e===t)return!!n;if(1!==e.nodeType)return!1;if(i||3!==t.nodeType)return e.contains(t);for(var o=t.parentNode;null!==o;){if(o===e)return!0;o=o.parentNode}return!1},isElement:function(e){return!(!e||1!==e.nodeType)},throttle:function(e,t){var n,i,o,r=null,a=0,s=function(){a=Date.now(),r=null,o=e.apply(n,i),r||(n=i=null)};return t||0===t||(t=50),function(){var l=Date.now(),u=t-(l-a);return n=this,i=arguments,u<=0||u>t?(r&&(clearTimeout(r),r=null),a=l,o=e.apply(n,i),r||(n=i=null)):r||(r=setTimeout(s,u)),o}},traverseUp:function(e,t){if(!e)return!1;do{if(1===e.nodeType){if(t(e))return e;if(a.isMediumEditorElement(e))return!1}e=e.parentNode}while(e);return!1},htmlEntities:function(e){return String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")},insertHTMLCommand:function(t,n){var i,o,r,s,l,u,c,d=!1,h=["insertHTML",!1,n];if(!e.util.isEdge&&t.queryCommandSupported("insertHTML"))try{return t.execCommand.apply(t,h)}catch(e){}if((i=t.getSelection()).rangeCount){if(c=(o=i.getRangeAt(0)).commonAncestorContainer,a.isMediumEditorElement(c)&&!c.firstChild)o.selectNode(c.appendChild(t.createTextNode("")));else if(3===c.nodeType&&0===o.startOffset&&o.endOffset===c.nodeValue.length||3!==c.nodeType&&c.innerHTML===o.toString()){for(;!a.isMediumEditorElement(c)&&c.parentNode&&1===c.parentNode.childNodes.length&&!a.isMediumEditorElement(c.parentNode);)c=c.parentNode;o.selectNode(c)}for(o.deleteContents(),(r=t.createElement("div")).innerHTML=n,s=t.createDocumentFragment();r.firstChild;)l=r.firstChild,u=s.appendChild(l);o.insertNode(s),u&&((o=o.cloneRange()).setStartAfter(u),o.collapse(!0),e.selection.selectRange(t,o)),d=!0}return t.execCommand.callListeners&&t.execCommand.callListeners(h,d),d},execFormatBlock:function(t,n){var i=a.getTopBlockContainer(e.selection.getSelectionStart(t));if("blockquote"===n){if(i&&Array.prototype.slice.call(i.childNodes).some((function(e){return a.isBlockContainer(e)})))return t.execCommand("outdent",!1,null);if(a.isIE)return t.execCommand("indent",!1,n)}if(i&&n===i.nodeName.toLowerCase()&&(n="p"),a.isIE&&(n="<"+n+">"),i&&"blockquote"===i.nodeName.toLowerCase()){if(a.isIE&&"

"===n)return t.execCommand("outdent",!1,n);if((a.isFF||a.isEdge)&&"p"===n)return Array.prototype.slice.call(i.childNodes).some((function(e){return!a.isBlockContainer(e)}))&&t.execCommand("formatBlock",!1,n),t.execCommand("outdent",!1,n)}return t.execCommand("formatBlock",!1,n)},setTargetBlank:function(e,t){var n,i=t||!1;if("a"===e.nodeName.toLowerCase())e.target="_blank",e.rel="noopener noreferrer";else for(e=e.getElementsByTagName("a"),n=0;ni?(o=o.parentNode,n-=1):(r=r.parentNode,i-=1);for(;o!==r;)o=o.parentNode,r=r.parentNode;return o},isElementAtBeginningOfBlock:function(e){for(var t;!a.isBlockContainer(e)&&!a.isMediumEditorElement(e);){for(t=e;t=t.previousSibling;)if((3===t.nodeType?t.nodeValue:t.textContent).length>0)return!1;e=e.parentNode}return!0},isMediumEditorElement:function(e){return e&&e.getAttribute&&!!e.getAttribute("data-medium-editor-element")},getContainerEditorElement:function(e){return a.traverseUp(e,(function(e){return a.isMediumEditorElement(e)}))},isBlockContainer:function(e){return e&&3!==e.nodeType&&-1!==a.blockContainerElementNames.indexOf(e.nodeName.toLowerCase())},getClosestBlockContainer:function(e){return a.traverseUp(e,(function(e){return a.isBlockContainer(e)||a.isMediumEditorElement(e)}))},getTopBlockContainer:function(e){var t=!!a.isBlockContainer(e)&&e;return a.traverseUp(e,(function(e){return a.isBlockContainer(e)&&(t=e),!(t||!a.isMediumEditorElement(e))&&(t=e,!0)})),t},getFirstSelectableLeafNode:function(e){for(;e&&e.firstChild;)e=e.firstChild;if("table"===(e=a.traverseUp(e,(function(e){return-1===a.emptyElementNames.indexOf(e.nodeName.toLowerCase())}))).nodeName.toLowerCase()){var t=e.querySelector("th, td");t&&(e=t)}return e},getFirstTextNode:function(e){return a.warn("getFirstTextNode is deprecated and will be removed in version 6.0.0"),a._getFirstTextNode(e)},_getFirstTextNode:function(e){if(3===e.nodeType)return e;for(var t=0;t0){var o,r=i.getRangeAt(0),a=r.cloneRange();a.selectNodeContents(e),a.setEnd(r.startContainer,r.startOffset),n={start:o=a.toString().length,end:o+r.toString().length},this.doesRangeStartWithImages(r,t)&&(n.startsWithImage=!0);var s=this.getTrailingImageCount(e,n,r.endContainer,r.endOffset);if(s&&(n.trailingImageCount=s),0!==o){var l=this.getIndexRelativeToAdjacentEmptyBlocks(t,e,r.startContainer,r.startOffset);-1!==l&&(n.emptyBlocksIndex=l)}}return n},importSelection:function(e,t,n,i){if(e&&t){var o=n.createRange();o.setStart(t,0),o.collapse(!0);var r,a=t,s=[],l=0,u=!1,c=!1,d=0,h=!1,f=!1,p=null;for((i||e.startsWithImage||void 0!==e.emptyBlocksIndex)&&(f=!0);!h&&a;)if(a.nodeType>3)a=s.pop();else{if(3!==a.nodeType||c){if(e.trailingImageCount&&c&&("img"===a.nodeName.toLowerCase()&&d++,d===e.trailingImageCount)){for(var g=0;a.parentNode.childNodes[g]!==a;)g++;o.setEnd(a.parentNode,g+1),h=!0}if(!h&&1===a.nodeType)for(var v=a.childNodes.length-1;v>=0;)s.push(a.childNodes[v]),v-=1}else r=l+a.length,!u&&e.start>=l&&e.start<=r&&(f||e.start=l&&e.end<=r&&(e.trailingImageCount?c=!0:(o.setEnd(a,e.end-l),h=!0)),l=r;h||(a=s.pop())}!u&&p&&(o.setStart(p,p.length),o.setEnd(p,p.length)),void 0!==e.emptyBlocksIndex&&(o=this.importSelectionMoveCursorPastBlocks(n,t,e.emptyBlocksIndex,o)),i&&(o=this.importSelectionMoveCursorPastAnchor(e,o)),this.selectRange(n,o)}},importSelectionMoveCursorPastAnchor:function(t,n){if(t.start===t.end&&3===n.startContainer.nodeType&&n.startOffset===n.startContainer.nodeValue.length&&e.util.traverseUp(n.startContainer,(function(e){return"a"===e.nodeName.toLowerCase()}))){for(var i=n.startContainer,o=n.startContainer.parentNode;null!==o&&"a"!==o.nodeName.toLowerCase();)o.childNodes[o.childNodes.length-1]!==i?o=null:(i=o,o=o.parentNode);if(null!==o&&"a"===o.nodeName.toLowerCase()){for(var r=null,a=0;null===r&&a0)break}else a===l.currentNode&&(s=l.currentNode);return s||(s=a),r.setStart(e.util.getFirstSelectableLeafNode(s),0),r},getIndexRelativeToAdjacentEmptyBlocks:function(n,i,o,r){if(o.textContent.length>0&&r>0)return-1;var a=o;if(3!==a.nodeType&&(a=o.childNodes[r]),a){if(!e.util.isElementAtBeginningOfBlock(a))return-1;var s=e.util.findPreviousSibling(a);if(!s)return-1;if(s.nodeValue)return-1}for(var l=e.util.getClosestBlockContainer(o),u=n.createTreeWalker(i,NodeFilter.SHOW_ELEMENT,t,!1),c=0;u.nextNode();){var d=""===u.currentNode.textContent;if((d||c>0)&&(c+=1),u.currentNode===l)return c;d||(c=0)}return c},doesRangeStartWithImages:function(e,t){if(0!==e.startOffset||1!==e.startContainer.nodeType)return!1;if("img"===e.startContainer.nodeName.toLowerCase())return!0;var n=e.startContainer.querySelector("img");if(!n)return!1;for(var i=t.createTreeWalker(e.startContainer,NodeFilter.SHOW_ALL,null,!1);i.nextNode();){var o=i.currentNode;if(o===n)break;if(o.nodeValue)return!1}return!0},getTrailingImageCount:function(e,t,n,i){if(0===i||1!==n.nodeType)return 0;if("img"!==n.nodeName.toLowerCase()&&!n.querySelector("img"))return 0;for(var o=n.childNodes[i-1];o.hasChildNodes();)o=o.lastChild;for(var r,a=e,s=[],l=0,u=!1,c=!1,d=!1,h=0;!d&&a;)if(a.nodeType>3)a=s.pop();else{if(3!==a.nodeType||c){if("img"===a.nodeName.toLowerCase()&&h++,a===o)d=!0;else if(1===a.nodeType)for(var f=a.childNodes.length-1;f>=0;)s.push(a.childNodes[f]),f-=1}else h=0,r=l+a.length,!u&&t.start>=l&&t.start<=r&&(u=!0),u&&t.end>=l&&t.end<=r&&(c=!0),l=r;d||(a=s.pop())}return h},selectionContainsContent:function(e){var t=e.getSelection();if(!t||t.isCollapsed||!t.rangeCount)return!1;if(""!==t.toString().trim())return!0;var n=this.getSelectedParentElement(t.getRangeAt(0));return!(!n||!("img"===n.nodeName.toLowerCase()||1===n.nodeType&&n.querySelector("img")))},selectionInContentEditableFalse:function(e){var t,n=this.findMatchingSelectionParent((function(e){var n=e&&e.getAttribute("contenteditable");return"true"===n&&(t=!0),"#text"!==e.nodeName&&"false"===n}),e);return!t&&n},getSelectionHtml:function(e){var t,n,i,o="",r=e.getSelection();if(r.rangeCount){for(i=e.createElement("div"),t=0,n=r.rangeCount;t-1?[t]:t,Array.prototype.forEach.call(t,function(e){e.addEventListener(n,i,o),this.events.push([e,n,i,o])}.bind(this))},detachDOMEvent:function(t,n,i,o){var r,a,s=this.base.options.contentWindow,l=this.base.options.ownerDocument;t&&(t=e.util.isElement(t)||[s,l].indexOf(t)>-1?[t]:t,Array.prototype.forEach.call(t,function(e){-1!==(r=this.indexOfListener(e,n,i,o))&&(a=this.events.splice(r,1)[0])[0].removeEventListener(a[1],a[2],a[3])}.bind(this)))},indexOfListener:function(e,t,n,i){var o,r,a;for(o=0,r=this.events.length;o0&&(i=-1!==o.indexOf(e.nodeName.toLowerCase())),!i&&this.style&&(t=this.style.value.split("|"),n=this.window.getComputedStyle(e,null).getPropertyValue(this.style.prop),t.forEach((function(e){this.knownState||((i=-1!==n.indexOf(e))||"text-decoration"!==this.style.prop)&&(this.knownState=i)}),this)),i)}}),n.isBuiltInButton=function(t){return"string"==typeof t&&e.extensions.button.prototype.defaults.hasOwnProperty(t)},e.extensions.button=n,e.extensions.button.prototype.defaults={bold:{name:"bold",action:"bold",aria:"bold",tagNames:["b","strong"],style:{prop:"font-weight",value:"700|bold"},useQueryState:!0,contentDefault:"B",contentFA:''},italic:{name:"italic",action:"italic",aria:"italic",tagNames:["i","em"],style:{prop:"font-style",value:"italic"},useQueryState:!0,contentDefault:"I",contentFA:''},underline:{name:"underline",action:"underline",aria:"underline",tagNames:["u"],style:{prop:"text-decoration",value:"underline"},useQueryState:!0,contentDefault:"U",contentFA:''},strikethrough:{name:"strikethrough",action:"strikethrough",aria:"strike through",tagNames:["strike"],style:{prop:"text-decoration",value:"line-through"},useQueryState:!0,contentDefault:"A",contentFA:''},superscript:{name:"superscript",action:"superscript",aria:"superscript",tagNames:["sup"],contentDefault:"x1",contentFA:''},subscript:{name:"subscript",action:"subscript",aria:"subscript",tagNames:["sub"],contentDefault:"x1",contentFA:''},image:{name:"image",action:"image",aria:"image",tagNames:["img"],contentDefault:"image",contentFA:''},html:{name:"html",action:"html",aria:"evaluate html",tagNames:["iframe","object"],contentDefault:"html",contentFA:''},orderedlist:{name:"orderedlist",action:"insertorderedlist",aria:"ordered list",tagNames:["ol"],useQueryState:!0,contentDefault:"1.",contentFA:''},unorderedlist:{name:"unorderedlist",action:"insertunorderedlist",aria:"unordered list",tagNames:["ul"],useQueryState:!0,contentDefault:"",contentFA:''},indent:{name:"indent",action:"indent",aria:"indent",tagNames:[],contentDefault:"",contentFA:''},outdent:{name:"outdent",action:"outdent",aria:"outdent",tagNames:[],contentDefault:"",contentFA:''},justifyCenter:{name:"justifyCenter",action:"justifyCenter",aria:"center justify",tagNames:[],style:{prop:"text-align",value:"center"},contentDefault:"C",contentFA:''},justifyFull:{name:"justifyFull",action:"justifyFull",aria:"full justify",tagNames:[],style:{prop:"text-align",value:"justify"},contentDefault:"J",contentFA:''},justifyLeft:{name:"justifyLeft",action:"justifyLeft",aria:"left justify",tagNames:[],style:{prop:"text-align",value:"left"},contentDefault:"L",contentFA:''},justifyRight:{name:"justifyRight",action:"justifyRight",aria:"right justify",tagNames:[],style:{prop:"text-align",value:"right"},contentDefault:"R",contentFA:''},removeFormat:{name:"removeFormat",aria:"remove formatting",action:"removeFormat",contentDefault:"X",contentFA:''},quote:{name:"quote",action:"append-blockquote",aria:"blockquote",tagNames:["blockquote"],contentDefault:"",contentFA:''},pre:{name:"pre",action:"append-pre",aria:"preformatted text",tagNames:["pre"],contentDefault:"0101",contentFA:''},h1:{name:"h1",action:"append-h1",aria:"header type one",tagNames:["h1"],contentDefault:"H1",contentFA:'1'},h2:{name:"h2",action:"append-h2",aria:"header type two",tagNames:["h2"],contentDefault:"H2",contentFA:'2'},h3:{name:"h3",action:"append-h3",aria:"header type three",tagNames:["h3"],contentDefault:"H3",contentFA:'3'},h4:{name:"h4",action:"append-h4",aria:"header type four",tagNames:["h4"],contentDefault:"H4",contentFA:'4'},h5:{name:"h5",action:"append-h5",aria:"header type five",tagNames:["h5"],contentDefault:"H5",contentFA:'5'},h6:{name:"h6",action:"append-h6",aria:"header type six",tagNames:["h6"],contentDefault:"H6",contentFA:'6'}},i=e.extensions.button.extend({init:function(){e.extensions.button.prototype.init.apply(this,arguments)},formSaveLabel:"✓",formCloseLabel:"×",activeClass:"medium-editor-toolbar-form-active",hasForm:!0,getForm:function(){},isDisplayed:function(){return!!this.hasForm&&this.getForm().classList.contains(this.activeClass)},showForm:function(){this.hasForm&&this.getForm().classList.add(this.activeClass)},hideForm:function(){this.hasForm&&this.getForm().classList.remove(this.activeClass)},showToolbarDefaultActions:function(){var e=this.base.getExtensionByName("toolbar");e&&e.showToolbarDefaultActions()},hideToolbarDefaultActions:function(){var e=this.base.getExtensionByName("toolbar");e&&e.hideToolbarDefaultActions()},setToolbarPosition:function(){var e=this.base.getExtensionByName("toolbar");e&&e.setToolbarPosition()}}),e.extensions.form=i,o=e.extensions.form.extend({customClassOption:null,customClassOptionText:"Button",linkValidation:!1,placeholderText:"Paste or type a link",targetCheckbox:!1,targetCheckboxText:"Open in new window",name:"anchor",action:"createLink",aria:"link",tagNames:["a"],contentDefault:"#",contentFA:'',init:function(){e.extensions.form.prototype.init.apply(this,arguments),this.subscribe("editableKeydown",this.handleKeydown.bind(this))},handleClick:function(t){t.preventDefault(),t.stopPropagation();var n=e.selection.getSelectionRange(this.document);return"a"===n.startContainer.nodeName.toLowerCase()||"a"===n.endContainer.nodeName.toLowerCase()||e.util.getClosestTag(e.selection.getSelectedParentElement(n),"a")?this.execAction("unlink"):(this.isDisplayed()||this.showForm(),!1)},handleKeydown:function(t){e.util.isKey(t,e.util.keyCode.K)&&e.util.isMetaCtrlKey(t)&&!t.shiftKey&&this.handleClick(t)},getForm:function(){return this.form||(this.form=this.createForm()),this.form},getTemplate:function(){var e=[''];return e.push('',"fontawesome"===this.getEditorOption("buttonLabels")?'':this.formSaveLabel,""),e.push('',"fontawesome"===this.getEditorOption("buttonLabels")?'':this.formCloseLabel,""),this.targetCheckbox&&e.push('

','','","
"),this.customClassOption&&e.push('
','',"","
"),e.join("")},isDisplayed:function(){return e.extensions.form.prototype.isDisplayed.apply(this)},hideForm:function(){e.extensions.form.prototype.hideForm.apply(this),this.getInput().value=""},showForm:function(t){var n=this.getInput(),i=this.getAnchorTargetCheckbox(),o=this.getAnchorButtonCheckbox();if("string"==typeof(t=t||{value:""})&&(t={value:t}),this.base.saveSelection(),this.hideToolbarDefaultActions(),e.extensions.form.prototype.showForm.apply(this),this.setToolbarPosition(),n.value=t.value,n.focus(),i&&(i.checked="_blank"===t.target),o){var r=t.buttonClass?t.buttonClass.split(" "):[];o.checked=-1!==r.indexOf(this.customClassOption)}},destroy:function(){if(!this.form)return!1;this.form.parentNode&&this.form.parentNode.removeChild(this.form),delete this.form},getFormOpts:function(){var e=this.getAnchorTargetCheckbox(),t=this.getAnchorButtonCheckbox(),n={value:this.getInput().value.trim()};return this.linkValidation&&(n.value=this.checkLinkFormat(n.value)),n.target="_self",e&&e.checked&&(n.target="_blank"),t&&t.checked&&(n.buttonClass=this.customClassOption),n},doFormSave:function(){var e=this.getFormOpts();this.completeFormSave(e)},completeFormSave:function(e){this.base.restoreSelection(),this.execAction(this.action,e),this.base.checkSelection()},ensureEncodedUri:function(e){return e===decodeURI(e)?encodeURI(e):e},ensureEncodedUriComponent:function(e){return e===decodeURIComponent(e)?encodeURIComponent(e):e},ensureEncodedParam:function(e){var t=e.split("="),n=t[0],i=t[1];return n+(void 0===i?"":"="+this.ensureEncodedUriComponent(i))},ensureEncodedQuery:function(e){return e.split("&").map(this.ensureEncodedParam.bind(this)).join("&")},checkLinkFormat:function(e){var t=/^([a-z]+:)?\/\/|^(mailto|tel|maps):|^\#/i.test(e),n="",i=e.match(/^(.*?)(?:\?(.*?))?(?:#(.*))?$/),o=i[1],r=i[2],a=i[3];if(/^\+?\s?\(?(?:\d\s?\-?\)?){3,20}$/.test(e))return"tel:"+e;if(!t){var s=o.split("/")[0];(s.match(/.+(\.|:).+/)||"localhost"===s)&&(n="http://")}return n+this.ensureEncodedUri(o)+(void 0===r?"":"?"+this.ensureEncodedQuery(r))+(void 0===a?"":"#"+a)},doFormCancel:function(){this.base.restoreSelection(),this.base.checkSelection()},attachFormEvents:function(e){var t=e.querySelector(".medium-editor-toolbar-close"),n=e.querySelector(".medium-editor-toolbar-save"),i=e.querySelector(".medium-editor-toolbar-input");this.on(e,"click",this.handleFormClick.bind(this)),this.on(i,"keyup",this.handleTextboxKeyup.bind(this)),this.on(t,"click",this.handleCloseClick.bind(this)),this.on(n,"click",this.handleSaveClick.bind(this),!0)},createForm:function(){var e=this.document.createElement("div");return e.className="medium-editor-toolbar-form",e.id="medium-editor-toolbar-form-anchor-"+this.getEditorId(),e.innerHTML=this.getTemplate(),this.attachFormEvents(e),e},getInput:function(){return this.getForm().querySelector("input.medium-editor-toolbar-input")},getAnchorTargetCheckbox:function(){return this.getForm().querySelector(".medium-editor-toolbar-anchor-target")},getAnchorButtonCheckbox:function(){return this.getForm().querySelector(".medium-editor-toolbar-anchor-button")},handleTextboxKeyup:function(t){if(t.keyCode===e.util.keyCode.ENTER)return t.preventDefault(),void this.doFormSave();t.keyCode===e.util.keyCode.ESCAPE&&(t.preventDefault(),this.doFormCancel())},handleFormClick:function(e){e.stopPropagation()},handleSaveClick:function(e){e.preventDefault(),this.doFormSave()},handleCloseClick:function(e){e.preventDefault(),this.doFormCancel()}}),e.extensions.anchor=o,r=e.Extension.extend({name:"anchor-preview",hideDelay:500,previewValueSelector:"a",showWhenToolbarIsVisible:!1,showOnEmptyLinks:!0,init:function(){this.anchorPreview=this.createPreview(),this.getEditorOption("elementsContainer").appendChild(this.anchorPreview),this.attachToEditables()},getInteractionElements:function(){return this.getPreviewElement()},getPreviewElement:function(){return this.anchorPreview},createPreview:function(){var e=this.document.createElement("div");return e.id="medium-editor-anchor-preview-"+this.getEditorId(),e.className="medium-editor-anchor-preview",e.innerHTML=this.getTemplate(),this.on(e,"click",this.handleClick.bind(this)),e},getTemplate:function(){return'
'},destroy:function(){this.anchorPreview&&(this.anchorPreview.parentNode&&this.anchorPreview.parentNode.removeChild(this.anchorPreview),delete this.anchorPreview)},hidePreview:function(){this.anchorPreview&&this.anchorPreview.classList.remove("medium-editor-anchor-preview-active"),this.activeAnchor=null},showPreview:function(e){return!(!this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")&&!e.getAttribute("data-disable-preview"))||(this.previewValueSelector&&(this.anchorPreview.querySelector(this.previewValueSelector).textContent=e.attributes.href.value,this.anchorPreview.querySelector(this.previewValueSelector).href=e.attributes.href.value),this.anchorPreview.classList.add("medium-toolbar-arrow-over"),this.anchorPreview.classList.remove("medium-toolbar-arrow-under"),this.anchorPreview.classList.contains("medium-editor-anchor-preview-active")||this.anchorPreview.classList.add("medium-editor-anchor-preview-active"),this.activeAnchor=e,this.positionPreview(),this.attachPreviewHandlers(),this)},positionPreview:function(e){e=e||this.activeAnchor;var t,n,i,o,r,a=this.window.innerWidth,s=this.anchorPreview.offsetHeight,l=e.getBoundingClientRect(),u=this.diffLeft,c=this.diffTop,d=this.getEditorOption("elementsContainer"),h=["absolute","fixed"].indexOf(window.getComputedStyle(d).getPropertyValue("position"))>-1,f={};t=this.anchorPreview.offsetWidth/2;var p=this.base.getExtensionByName("toolbar");p&&(u=p.diffLeft,c=p.diffTop),n=u-t,h?(o=d.getBoundingClientRect(),["top","left"].forEach((function(e){f[e]=l[e]-o[e]})),f.width=l.width,f.height=l.height,l=f,a=o.width,r=d.scrollTop):r=this.window.pageYOffset,i=l.left+l.width/2,r+=s+l.top+l.height-c-this.anchorPreview.offsetHeight,this.anchorPreview.style.top=Math.round(r)+"px",this.anchorPreview.style.right="initial",ithis.hideDelay&&this.detachPreviewHandlers()},detachPreviewHandlers:function(){clearInterval(this.intervalTimer),this.instanceHandlePreviewMouseover&&(this.off(this.anchorPreview,"mouseover",this.instanceHandlePreviewMouseover),this.off(this.anchorPreview,"mouseout",this.instanceHandlePreviewMouseout),this.activeAnchor&&(this.off(this.activeAnchor,"mouseover",this.instanceHandlePreviewMouseover),this.off(this.activeAnchor,"mouseout",this.instanceHandlePreviewMouseout))),this.hidePreview(),this.hovering=this.instanceHandlePreviewMouseover=this.instanceHandlePreviewMouseout=null},attachPreviewHandlers:function(){this.lastOver=(new Date).getTime(),this.hovering=!0,this.instanceHandlePreviewMouseover=this.handlePreviewMouseover.bind(this),this.instanceHandlePreviewMouseout=this.handlePreviewMouseout.bind(this),this.intervalTimer=setInterval(this.updatePreview.bind(this),200),this.on(this.anchorPreview,"mouseover",this.instanceHandlePreviewMouseover),this.on(this.anchorPreview,"mouseout",this.instanceHandlePreviewMouseout),this.on(this.activeAnchor,"mouseover",this.instanceHandlePreviewMouseover),this.on(this.activeAnchor,"mouseout",this.instanceHandlePreviewMouseout)}}),e.extensions.anchorPreview=r,function(){var t,n,i,o,r;function a(t){return!e.util.getClosestTag(t,"a")}t=[" ","\t","\n","\r"," "," "," "," "," ","\u2028","\u2029"],i="(((?:(https?://|ftps?://|nntp://)|www\\d{0,3}[.]|[a-z0-9.\\-]+[.]("+(n="com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw")+")\\/)\\S+(?:[^\\s`!\\[\\]{};:'\".,?«»“”‘’])))|(([a-z0-9\\-]+\\.)?[a-z0-9\\-]+\\.("+n+"))",o=new RegExp("^("+n+")$","i"),r=new RegExp(i,"gi");var s=e.Extension.extend({init:function(){e.Extension.prototype.init.apply(this,arguments),this.disableEventHandling=!1,this.subscribe("editableKeypress",this.onKeypress.bind(this)),this.subscribe("editableBlur",this.onBlur.bind(this)),this.document.execCommand("AutoUrlDetect",!1,!1)},isLastInstance:function(){for(var e=0,t=0;t0&&null!==o;)(i=(n=r.currentNode).nodeValue).length>t?(o=n.splitText(i.length-t),t=0):(o=r.previousNode(),t-=i.length);return o},performLinkingWithinElement:function(t){for(var n=this.findLinkableText(t),i=0;i1;)o.appendChild(i.childNodes[1])}});e.extensions.autoLink=s}(),function(){var t="medium-editor-dragover";function n(n){var i=e.util.getContainerEditorElement(n);Array.prototype.slice.call(i.parentElement.querySelectorAll("."+t)).forEach((function(e){e.classList.remove(t)}))}var i=e.Extension.extend({name:"fileDragging",allowedTypes:["image"],init:function(){e.Extension.prototype.init.apply(this,arguments),this.subscribe("editableDrag",this.handleDrag.bind(this)),this.subscribe("editableDrop",this.handleDrop.bind(this))},handleDrag:function(e){e.preventDefault(),e.dataTransfer.dropEffect="copy";var i=e.target.classList?e.target:e.target.parentElement;n(i),"dragover"===e.type&&i.classList.add(t)},handleDrop:function(e){e.preventDefault(),e.stopPropagation(),this.base.selectElement(e.target);var t=this.base.exportSelection();t.start=t.end,this.base.importSelection(t),e.dataTransfer.files&&Array.prototype.slice.call(e.dataTransfer.files).forEach((function(e){this.isAllowedFile(e)&&e.type.match("image")&&this.insertImageFile(e)}),this),n(e.target)},isAllowedFile:function(e){return this.allowedTypes.some((function(t){return!!e.type.match(t)}))},insertImageFile:function(t){if("function"==typeof FileReader){var n=new FileReader;n.readAsDataURL(t),n.addEventListener("load",function(t){var n=this.document.createElement("img");n.src=t.target.result,e.util.insertHTMLCommand(this.document,n.outerHTML)}.bind(this))}}});e.extensions.fileDragging=i}(),a=e.Extension.extend({name:"keyboard-commands",commands:[{command:"bold",key:"B",meta:!0,shift:!1,alt:!1},{command:"italic",key:"I",meta:!0,shift:!1,alt:!1},{command:"underline",key:"U",meta:!0,shift:!1,alt:!1}],init:function(){e.Extension.prototype.init.apply(this,arguments),this.subscribe("editableKeydown",this.handleKeydown.bind(this)),this.keys={},this.commands.forEach((function(e){var t=e.key.charCodeAt(0);this.keys[t]||(this.keys[t]=[]),this.keys[t].push(e)}),this)},handleKeydown:function(t){var n=e.util.getKeyCode(t);if(this.keys[n]){var i=e.util.isMetaCtrlKey(t),o=!!t.shiftKey,r=!!t.altKey;this.keys[n].forEach((function(e){e.meta!==i||e.shift!==o||e.alt!==r&&void 0!==e.alt||(t.preventDefault(),t.stopPropagation(),"function"==typeof e.command?e.command.apply(this):!1!==e.command&&this.execAction(e.command))}),this)}}}),e.extensions.keyboardCommands=a,s=e.extensions.form.extend({name:"fontname",action:"fontName",aria:"change font name",contentDefault:"±",contentFA:'',fonts:["","Arial","Verdana","Times New Roman"],init:function(){e.extensions.form.prototype.init.apply(this,arguments)},handleClick:function(e){if(e.preventDefault(),e.stopPropagation(),!this.isDisplayed()){var t=this.document.queryCommandValue("fontName")+"";this.showForm(t)}return!1},getForm:function(){return this.form||(this.form=this.createForm()),this.form},isDisplayed:function(){return"block"===this.getForm().style.display},hideForm:function(){this.getForm().style.display="none",this.getSelect().value=""},showForm:function(e){var t=this.getSelect();this.base.saveSelection(),this.hideToolbarDefaultActions(),this.getForm().style.display="block",this.setToolbarPosition(),t.value=e||"",t.focus()},destroy:function(){if(!this.form)return!1;this.form.parentNode&&this.form.parentNode.removeChild(this.form),delete this.form},doFormSave:function(){this.base.restoreSelection(),this.base.checkSelection()},doFormCancel:function(){this.base.restoreSelection(),this.clearFontName(),this.base.checkSelection()},createForm:function(){var e,t=this.document,n=t.createElement("div"),i=t.createElement("select"),o=t.createElement("a"),r=t.createElement("a");n.className="medium-editor-toolbar-form",n.id="medium-editor-toolbar-form-fontname-"+this.getEditorId(),this.on(n,"click",this.handleFormClick.bind(this));for(var a=0;a
':"✓",n.appendChild(r),this.on(r,"click",this.handleSaveClick.bind(this),!0),o.setAttribute("href","#"),o.className="medium-editor-toobar-close",o.innerHTML="fontawesome"===this.getEditorOption("buttonLabels")?'':"×",n.appendChild(o),this.on(o,"click",this.handleCloseClick.bind(this)),n},getSelect:function(){return this.getForm().querySelector("select.medium-editor-toolbar-select")},clearFontName:function(){e.selection.getSelectedElements(this.document).forEach((function(e){"font"===e.nodeName.toLowerCase()&&e.hasAttribute("face")&&e.removeAttribute("face")}))},handleFontChange:function(){var e=this.getSelect().value;""===e?this.clearFontName():this.execAction("fontName",{value:e})},handleFormClick:function(e){e.stopPropagation()},handleSaveClick:function(e){e.preventDefault(),this.doFormSave()},handleCloseClick:function(e){e.preventDefault(),this.doFormCancel()}}),e.extensions.fontName=s,l=e.extensions.form.extend({name:"fontsize",action:"fontSize",aria:"increase/decrease font size",contentDefault:"±",contentFA:'',init:function(){e.extensions.form.prototype.init.apply(this,arguments)},handleClick:function(e){if(e.preventDefault(),e.stopPropagation(),!this.isDisplayed()){var t=this.document.queryCommandValue("fontSize")+"";this.showForm(t)}return!1},getForm:function(){return this.form||(this.form=this.createForm()),this.form},isDisplayed:function(){return"block"===this.getForm().style.display},hideForm:function(){this.getForm().style.display="none",this.getInput().value=""},showForm:function(e){var t=this.getInput();this.base.saveSelection(),this.hideToolbarDefaultActions(),this.getForm().style.display="block",this.setToolbarPosition(),t.value=e||"",t.focus()},destroy:function(){if(!this.form)return!1;this.form.parentNode&&this.form.parentNode.removeChild(this.form),delete this.form},doFormSave:function(){this.base.restoreSelection(),this.base.checkSelection()},doFormCancel:function(){this.base.restoreSelection(),this.clearFontSize(),this.base.checkSelection()},createForm:function(){var e=this.document,t=e.createElement("div"),n=e.createElement("input"),i=e.createElement("a"),o=e.createElement("a");return t.className="medium-editor-toolbar-form",t.id="medium-editor-toolbar-form-fontsize-"+this.getEditorId(),this.on(t,"click",this.handleFormClick.bind(this)),n.setAttribute("type","range"),n.setAttribute("min","1"),n.setAttribute("max","7"),n.className="medium-editor-toolbar-input",t.appendChild(n),this.on(n,"change",this.handleSliderChange.bind(this)),o.setAttribute("href","#"),o.className="medium-editor-toobar-save",o.innerHTML="fontawesome"===this.getEditorOption("buttonLabels")?'':"✓",t.appendChild(o),this.on(o,"click",this.handleSaveClick.bind(this),!0),i.setAttribute("href","#"),i.className="medium-editor-toobar-close",i.innerHTML="fontawesome"===this.getEditorOption("buttonLabels")?'':"×",t.appendChild(i),this.on(i,"click",this.handleCloseClick.bind(this)),t},getInput:function(){return this.getForm().querySelector("input.medium-editor-toolbar-input")},clearFontSize:function(){e.selection.getSelectedElements(this.document).forEach((function(e){"font"===e.nodeName.toLowerCase()&&e.hasAttribute("size")&&e.removeAttribute("size")}))},handleSliderChange:function(){var e=this.getInput().value;"4"===e?this.clearFontSize():this.execAction("fontSize",{value:e})},handleFormClick:function(e){e.stopPropagation()},handleSaveClick:function(e){e.preventDefault(),this.doFormSave()},handleCloseClick:function(e){e.preventDefault(),this.doFormCancel()}}),e.extensions.fontSize=l,function(){var t="%ME_PASTEBIN%",n=null,i=null,o=function(e){e.stopPropagation()};function r(e,t,n){var i=e.clipboardData||t.clipboardData||n.dataTransfer,o={};if(!i)return o;if(i.getData){var r=i.getData("Text");r&&r.length>0&&(o["text/plain"]=r)}if(i.types)for(var a=0;a1)for(r=0;r"+e.util.htmlEntities(o[r])+"

");else a=e.util.htmlEntities(o[0]);e.util.insertHTMLCommand(this.document,a)}},handlePasteBinPaste:function(e){if(e.defaultPrevented)this.removePasteBin();else{var t=r(e,this.window,this.document),n=t["text/html"],o=t["text/plain"],a=i;if(!this.cleanPastedHTML||n)return e.preventDefault(),this.removePasteBin(),this.doPaste(n,o,a),void this.trigger("editablePaste",{currentTarget:a,target:a},a);setTimeout(function(){this.cleanPastedHTML&&(n=this.getPasteBinHtml()),this.removePasteBin(),this.doPaste(n,o,a),this.trigger("editablePaste",{currentTarget:a,target:a},a)}.bind(this),0)}},handleKeydown:function(t,n){e.util.isKey(t,e.util.keyCode.V)&&e.util.isMetaCtrlKey(t)&&(t.stopImmediatePropagation(),this.removePasteBin(),this.createPasteBin(n))},createPasteBin:function(r){var a,s=e.selection.getSelectionRange(this.document),l=this.window.pageYOffset;i=r,s&&((a=s.getClientRects()).length?l+=a[0].top:void 0!==s.startContainer.getBoundingClientRect?l+=s.startContainer.getBoundingClientRect().top:l+=s.getBoundingClientRect().top),n=s;var u=this.document.createElement("div");u.id=this.pasteBinId="medium-editor-pastebin-"+ +Date.now(),u.setAttribute("style","border: 1px red solid; position: absolute; top: "+l+"px; width: 10px; height: 10px; overflow: hidden; opacity: 0"),u.setAttribute("contentEditable",!0),u.innerHTML=t,this.document.body.appendChild(u),this.on(u,"focus",o),this.on(u,"focusin",o),this.on(u,"focusout",o),u.focus(),e.selection.selectNode(u,this.document),this.boundHandlePaste||(this.boundHandlePaste=this.handlePasteBinPaste.bind(this)),this.on(u,"paste",this.boundHandlePaste)},removePasteBin:function(){null!==n&&(e.selection.selectRange(this.document,n),n=null),null!==i&&(i=null);var t=this.getPasteBin();t&&t&&(this.off(t,"focus",o),this.off(t,"focusin",o),this.off(t,"focusout",o),this.off(t,"paste",this.boundHandlePaste),t.parentElement.removeChild(t))},getPasteBin:function(){return this.document.getElementById(this.pasteBinId)},getPasteBinHtml:function(){var e=this.getPasteBin();if(!e)return!1;if(e.firstChild&&"mcepastebin"===e.firstChild.id)return!1;var n=e.innerHTML;return!(!n||n===t)&&n},cleanPaste:function(e){var t,n,i,o,r=/]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g),""],[new RegExp(/|/g),""],[new RegExp(/
$/i),""],[new RegExp(/<[^>]*docs-internal-guid[^>]*>/gi),""],[new RegExp(/<\/b>(]*>)?$/gi),""],[new RegExp(/\s+<\/span>/g)," "],[new RegExp(/
/g),"
"],[new RegExp(/]*(font-style:italic;font-weight:(bold|700)|font-weight:(bold|700);font-style:italic)[^>]*>/gi),''],[new RegExp(/]*font-style:italic[^>]*>/gi),''],[new RegExp(/]*font-weight:(bold|700)[^>]*>/gi),''],[new RegExp(/<(\/?)(i|b|a)>/gi),"<$1$2>"],[new RegExp(/<a(?:(?!href).)+href=(?:"|”|“|"|“|”)(((?!"|”|“|"|“|”).)*)(?:"|”|“|"|“|”)(?:(?!>).)*>/gi),''],[new RegExp(/<\/p>\n+/gi),"

"],[new RegExp(/\n+

/gi),""],[new RegExp(/(((?!/gi),"$1"]],this.cleanReplacements||[]);for(t=0;t"+e.split("

").join("

")+"

",n=i.querySelectorAll("a,p,div,br"),t=0;t"+i.innerHTML+"
":o.innerHTML=i.innerHTML,i.parentNode.replaceChild(o,i);for(r=t.querySelectorAll("span"),n=0;n0&&(i[0].classList.add(this.firstButtonClass),i[i.length-1].classList.add(this.lastButtonClass)),s},destroy:function(){this.toolbar&&(this.toolbar.parentNode&&this.toolbar.parentNode.removeChild(this.toolbar),delete this.toolbar)},getInteractionElements:function(){return this.getToolbarElement()},getToolbarElement:function(){return this.toolbar||(this.toolbar=this.createToolbar()),this.toolbar},getToolbarActionsElement:function(){return this.getToolbarElement().querySelector(".medium-editor-toolbar-actions")},initThrottledMethods:function(){this.throttledPositionToolbar=e.util.throttle(function(){this.base.isActive&&this.positionToolbarIfShown()}.bind(this))},attachEventHandlers:function(){this.subscribe("blur",this.handleBlur.bind(this)),this.subscribe("focus",this.handleFocus.bind(this)),this.subscribe("editableClick",this.handleEditableClick.bind(this)),this.subscribe("editableKeyup",this.handleEditableKeyup.bind(this)),this.on(this.document.documentElement,"mouseup",this.handleDocumentMouseup.bind(this)),this.static&&this.sticky&&this.on(this.window,"scroll",this.handleWindowScroll.bind(this),!0),this.on(this.window,"resize",this.handleWindowResize.bind(this))},handleWindowScroll:function(){this.positionToolbarIfShown()},handleWindowResize:function(){this.throttledPositionToolbar()},handleDocumentMouseup:function(t){if(t&&t.target&&e.util.isDescendant(this.getToolbarElement(),t.target))return!1;this.checkState()},handleEditableClick:function(){setTimeout(function(){this.checkState()}.bind(this),0)},handleEditableKeyup:function(){this.checkState()},handleBlur:function(){clearTimeout(this.hideTimeout),clearTimeout(this.delayShowTimeout),this.hideTimeout=setTimeout(function(){this.hideToolbar()}.bind(this),1)},handleFocus:function(){this.checkState()},isDisplayed:function(){return this.getToolbarElement().classList.contains("medium-editor-toolbar-active")},showToolbar:function(){clearTimeout(this.hideTimeout),this.isDisplayed()||(this.getToolbarElement().classList.add("medium-editor-toolbar-active"),this.trigger("showToolbar",{},this.base.getFocusedElement()))},hideToolbar:function(){this.isDisplayed()&&(this.getToolbarElement().classList.remove("medium-editor-toolbar-active"),this.trigger("hideToolbar",{},this.base.getFocusedElement()))},isToolbarDefaultActionsDisplayed:function(){return"block"===this.getToolbarActionsElement().style.display},hideToolbarDefaultActions:function(){this.isToolbarDefaultActionsDisplayed()&&(this.getToolbarActionsElement().style.display="none")},showToolbarDefaultActions:function(){this.hideExtensionForms(),this.isToolbarDefaultActionsDisplayed()||(this.getToolbarActionsElement().style.display="block"),this.delayShowTimeout=this.base.delay(function(){this.showToolbar()}.bind(this))},hideExtensionForms:function(){this.forEachExtension((function(e){e.hasForm&&e.isDisplayed()&&e.hideForm()}))},multipleBlockElementsSelected:function(){var t=new RegExp("<("+e.util.blockContainerElementNames.join("|")+")[^>]*>","g"),n=e.selection.getSelectionHtml(this.document).replace(/<[^\/>][^>]*><\/[^>]+>/gim,"").match(t);return!!n&&n.length>1},modifySelection:function(){var t=this.window.getSelection().getRangeAt(0);if(this.standardizeSelectionStart&&t.startContainer.nodeValue&&t.startOffset===t.startContainer.nodeValue.length){var n=e.util.findAdjacentTextNodeWithContent(e.selection.getSelectionElement(this.window),t.startContainer,this.document);if(n){for(var i=0;0===n.nodeValue.substr(i,1).trim().length;)i+=1;t=e.selection.select(this.document,n,i,t.endContainer,t.endOffset)}}},checkState:function(){if(!this.base.preventSelectionUpdates){if(!this.base.getFocusedElement()||e.selection.selectionInContentEditableFalse(this.window))return this.hideToolbar();var t=e.selection.getSelectionElement(this.window);return!t||-1===this.getEditorElements().indexOf(t)||t.getAttribute("data-disable-toolbar")?this.hideToolbar():this.updateOnEmptySelection&&this.static?this.showAndUpdateToolbar():!e.selection.selectionContainsContent(this.document)||!1===this.allowMultiParagraphSelection&&this.multipleBlockElementsSelected()?this.hideToolbar():void this.showAndUpdateToolbar()}},showAndUpdateToolbar:function(){this.modifySelection(),this.setToolbarButtonStates(),this.trigger("positionToolbar",{},this.base.getFocusedElement()),this.showToolbarDefaultActions(),this.setToolbarPosition()},setToolbarButtonStates:function(){this.forEachExtension((function(e){"function"==typeof e.isActive&&"function"==typeof e.setInactive&&e.setInactive()})),this.checkActiveButtons()},checkActiveButtons:function(){var t,n=[],i=null,o=e.selection.getSelectionRange(this.document),r=function(e){"function"==typeof e.checkState?e.checkState(t):"function"==typeof e.isActive&&"function"==typeof e.isAlreadyApplied&&"function"==typeof e.setActive&&!e.isActive()&&e.isAlreadyApplied(t)&&e.setActive()};if(o&&(this.forEachExtension((function(e){"function"!=typeof e.queryCommandState||null===(i=e.queryCommandState())?n.push(e):i&&"function"==typeof e.setActive&&e.setActive()})),t=e.selection.getSelectedParentElement(o),this.getEditorElements().some((function(n){return e.util.isDescendant(n,t,!0)}))))for(;t&&(n.forEach(r),!e.util.isMediumEditorElement(t));)t=t.parentNode},positionToolbarIfShown:function(){this.isDisplayed()&&this.setToolbarPosition()},setToolbarPosition:function(){var e=this.base.getFocusedElement(),t=this.window.getSelection();if(!e)return this;!this.static&&t.isCollapsed||(this.showToolbar(),this.relativeContainer||(this.static?this.positionStaticToolbar(e):this.positionToolbar(t)),this.trigger("positionedToolbar",{},this.base.getFocusedElement()))},positionStaticToolbar:function(e){this.getToolbarElement().style.left="0";var t,n=this.document.documentElement&&this.document.documentElement.scrollTop||this.document.body.scrollTop,i=this.window.innerWidth,o=this.getToolbarElement(),r=e.getBoundingClientRect(),a=r.top+n,s=r.left+r.width/2,l=o.offsetHeight,u=o.offsetWidth,c=u/2;switch(this.sticky?n>a+e.offsetHeight-l-this.stickyTopOffset?(o.style.top=a+e.offsetHeight-l+"px",o.classList.remove("medium-editor-sticky-toolbar")):n>a-l-this.stickyTopOffset?(o.classList.add("medium-editor-sticky-toolbar"),o.style.top=this.stickyTopOffset+"px"):(o.classList.remove("medium-editor-sticky-toolbar"),o.style.top=a-l+"px"):o.style.top=a-l+"px",this.align){case"left":t=r.left;break;case"right":t=r.right-u;break;case"center":t=s-c}t<0?t=0:t+u>i&&(t=i-Math.ceil(u)-1),o.style.left=t+"px"},positionToolbar:function(e){this.getToolbarElement().style.left="0",this.getToolbarElement().style.right="initial";var t=e.getRangeAt(0),n=t.getBoundingClientRect();(!n||0===n.height&&0===n.width&&t.startContainer===t.endContainer)&&(n=1===t.startContainer.nodeType&&t.startContainer.querySelector("img")?t.startContainer.querySelector("img").getBoundingClientRect():t.startContainer.getBoundingClientRect());var i,o,r=this.window.innerWidth,a=this.getToolbarElement(),s=a.offsetHeight,l=a.offsetWidth/2,u=this.diffLeft-l,c=this.getEditorOption("elementsContainer"),d=["absolute","fixed"].indexOf(window.getComputedStyle(c).getPropertyValue("position"))>-1,h={},f={};d?(o=c.getBoundingClientRect(),["top","left"].forEach((function(e){f[e]=n[e]-o[e]})),f.width=n.width,f.height=n.height,n=f,r=o.width,h.top=c.scrollTop):h.top=this.window.pageYOffset,i=n.left+n.width/2,h.top+=n.top-s,n.top<50?(a.classList.add("medium-toolbar-arrow-over"),a.classList.remove("medium-toolbar-arrow-under"),h.top+=50+n.height-this.diffTop):(a.classList.add("medium-toolbar-arrow-under"),a.classList.remove("medium-toolbar-arrow-over"),h.top+=this.diffTop),i'),n.onload=function(){var e=this.document.getElementById(i);e&&(e.removeAttribute("id"),e.removeAttribute("class"),e.src=n.result)}.bind(this))}.bind(this)),t.target.classList.remove("medium-editor-dragover")}}),e.extensions.imageDragging=d,function(){function t(t){var n=e.selection.getSelectionStart(this.options.ownerDocument),i=n.textContent,o=e.selection.getCaretOffsets(n);(void 0===i[o.left-1]||""===i[o.left-1].trim()||void 0!==i[o.left]&&""===i[o.left].trim())&&t.preventDefault()}function n(t,n){if(this.options.disableReturn||n.getAttribute("data-disable-return"))t.preventDefault();else if(this.options.disableDoubleReturn||n.getAttribute("data-disable-double-return")){var i=e.selection.getSelectionStart(this.options.ownerDocument);(i&&""===i.textContent.trim()&&"li"!==i.nodeName.toLowerCase()||i.previousElementSibling&&"br"!==i.previousElementSibling.nodeName.toLowerCase()&&""===i.previousElementSibling.textContent.trim())&&t.preventDefault()}}function i(t){var n=e.selection.getSelectionStart(this.options.ownerDocument);"pre"===(n&&n.nodeName.toLowerCase())&&(t.preventDefault(),e.util.insertHTMLCommand(this.options.ownerDocument," ")),e.util.isListItem(n)&&(t.preventDefault(),t.shiftKey?this.options.ownerDocument.execCommand("outdent",!1,null):this.options.ownerDocument.execCommand("indent",!1,null))}function o(t){var n,i=e.selection.getSelectionStart(this.options.ownerDocument),o=i.nodeName.toLowerCase(),r=/^(\s+|)?$/i,a=/h\d/i;e.util.isKey(t,[e.util.keyCode.BACKSPACE,e.util.keyCode.ENTER])&&i.previousElementSibling&&a.test(o)&&0===e.selection.getCaretOffsets(i).left?e.util.isKey(t,e.util.keyCode.BACKSPACE)&&r.test(i.previousElementSibling.innerHTML)?(i.previousElementSibling.parentNode.removeChild(i.previousElementSibling),t.preventDefault()):!this.options.disableDoubleReturn&&e.util.isKey(t,e.util.keyCode.ENTER)&&((n=this.options.ownerDocument.createElement("p")).innerHTML="
",i.previousElementSibling.parentNode.insertBefore(n,i),t.preventDefault()):e.util.isKey(t,e.util.keyCode.DELETE)&&i.nextElementSibling&&i.previousElementSibling&&!a.test(o)&&r.test(i.innerHTML)&&a.test(i.nextElementSibling.nodeName.toLowerCase())?(e.selection.moveCursor(this.options.ownerDocument,i.nextElementSibling),i.previousElementSibling.parentNode.removeChild(i),t.preventDefault()):e.util.isKey(t,e.util.keyCode.BACKSPACE)&&"li"===o&&r.test(i.innerHTML)&&!i.previousElementSibling&&!i.parentElement.previousElementSibling&&i.nextElementSibling&&"li"===i.nextElementSibling.nodeName.toLowerCase()?((n=this.options.ownerDocument.createElement("p")).innerHTML="
",i.parentElement.parentElement.insertBefore(n,i.parentElement),e.selection.moveCursor(this.options.ownerDocument,n),i.parentElement.removeChild(i),t.preventDefault()):e.util.isKey(t,e.util.keyCode.BACKSPACE)&&!1!==e.util.getClosestTag(i,"blockquote")&&0===e.selection.getCaretOffsets(i).left?(t.preventDefault(),e.util.execFormatBlock(this.options.ownerDocument,"p")):e.util.isKey(t,e.util.keyCode.ENTER)&&!1!==e.util.getClosestTag(i,"blockquote")&&0===e.selection.getCaretOffsets(i).right?((n=this.options.ownerDocument.createElement("p")).innerHTML="
",i.parentElement.insertBefore(n,i.nextSibling),e.selection.moveCursor(this.options.ownerDocument,n),t.preventDefault()):e.util.isKey(t,e.util.keyCode.BACKSPACE)&&e.util.isMediumEditorElement(i.parentElement)&&!i.previousElementSibling&&i.nextElementSibling&&r.test(i.innerHTML)&&(t.preventDefault(),e.selection.moveCursor(this.options.ownerDocument,i.nextSibling),i.parentElement.removeChild(i))}function r(t){var n=e.selection.getSelectionStart(this.options.ownerDocument);n&&(e.util.isMediumEditorElement(n)&&0===n.children.length&&!e.util.isBlockContainer(n)&&this.options.ownerDocument.execCommand("formatBlock",!1,"p"),!e.util.isKey(t,e.util.keyCode.ENTER)||e.util.isListItem(n)||e.util.isBlockContainer(n)||("a"===n.nodeName.toLowerCase()?this.options.ownerDocument.execCommand("unlink",!1,null):t.shiftKey||t.ctrlKey||this.options.ownerDocument.execCommand("formatBlock",!1,"p")))}function a(e,t){var n=t.parentNode.querySelector('textarea[medium-editor-textarea-id="'+t.getAttribute("medium-editor-textarea-id")+'"]');n&&(n.value=t.innerHTML.trim())}function s(e){e._mediumEditors||(e._mediumEditors=[null]),this.id||(this.id=e._mediumEditors.length),e._mediumEditors[this.id]=this}function l(e){e._mediumEditors&&e._mediumEditors[this.id]&&(e._mediumEditors[this.id]=null)}function u(t,n,i){var o=[];if(t||(t=[]),"string"==typeof t&&(t=n.querySelectorAll(t)),e.util.isElement(t)&&(t=[t]),i)for(var r=0;r=0&&(i=e.selection.exportSelection(t,this.options.ownerDocument)),null!==i&&0!==n&&(i.editableElementIndex=n),i},saveSelection:function(){this.selectionState=this.exportSelection()},importSelection:function(t,n){if(t){var i=this.elements[t.editableElementIndex||0];e.selection.importSelection(t,i,this.options.ownerDocument,n)}},restoreSelection:function(){this.importSelection(this.selectionState)},createLink:function(t){var n,i=e.selection.getSelectionElement(this.options.contentWindow),o={};if(-1!==this.elements.indexOf(i)){try{if(this.events.disableCustomEvent("editableInput"),t.url&&e.util.deprecated(".url option for createLink",".value","6.0.0"),(n=t.url||t.value)&&n.trim().length>0){var r=this.options.contentWindow.getSelection();if(r){var a,s,l,u,c=r.getRangeAt(0),d=c.commonAncestorContainer;if(3===c.endContainer.nodeType&&3!==c.startContainer.nodeType&&0===c.startOffset&&c.startContainer.firstChild===c.endContainer&&(d=c.endContainer),s=e.util.getClosestBlockContainer(c.startContainer),l=e.util.getClosestBlockContainer(c.endContainer),3!==d.nodeType&&0!==d.textContent.length&&s===l){var h=s||i,f=this.options.ownerDocument.createDocumentFragment();this.execAction("unlink"),a=this.exportSelection(),f.appendChild(h.cloneNode(!0)),i===h?e.selection.select(this.options.ownerDocument,h.firstChild,0,h.lastChild,3===h.lastChild.nodeType?h.lastChild.nodeValue.length:h.lastChild.childNodes.length):e.selection.select(this.options.ownerDocument,h,0,h,h.childNodes.length);var p=this.exportSelection();0===(u=e.util.findOrCreateMatchingTextNodes(this.options.ownerDocument,f,{start:a.start-p.start,end:a.end-p.start,editableElementIndex:a.editableElementIndex})).length&&((f=this.options.ownerDocument.createDocumentFragment()).appendChild(d.cloneNode(!0)),u=[f.firstChild.firstChild,f.firstChild.lastChild]),e.util.createLink(this.options.ownerDocument,u,n.trim());var g=(f.firstChild.innerHTML.match(/^\s+/)||[""])[0].length;e.util.insertHTMLCommand(this.options.ownerDocument,f.firstChild.innerHTML.replace(/^\s+/,"")),a.start-=g,a.end-=g,this.importSelection(a)}else this.options.ownerDocument.execCommand("createLink",!1,n);this.options.targetBlank||"_blank"===t.target?e.util.setTargetBlank(e.selection.getSelectionStart(this.options.ownerDocument),n):e.util.removeTargetBlank(e.selection.getSelectionStart(this.options.ownerDocument),n),t.buttonClass&&e.util.addClassToAnchors(e.selection.getSelectionStart(this.options.ownerDocument),t.buttonClass)}}if(this.options.targetBlank||"_blank"===t.target||t.buttonClass){(o=this.options.ownerDocument.createEvent("HTMLEvents")).initEvent("input",!0,!0,this.options.contentWindow);for(var v=0,m=this.elements.length;v1?t[1]:"";return{major:parseInt(n[0],10),minor:parseInt(n[1],10),revision:parseInt(n[2],10),preRelease:i,toString:function(){return[n[0],n[1],n[2]].join(".")+(i?"-"+i:"")}}},e.version=e.parseVersionString.call(this,"5.23.3"),e}())}({get exports(){return yv},set exports(e){yv=e}});var bv=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},xv=function(){function e(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:1;return(t>0?e.toFixed(t).replace(/0+$/,"").replace(/\.$/,""):e.toString())||"0"}var Nv=function(){function e(t,n,i,o){bv(this,e);var r=this;if(void 0===t);else if(Array.isArray(t))this.rgba=t;else if(void 0===i){var a=t&&""+t;a&&function(t){if(t.startsWith("hsl")){var n=t.match(/([\-\d\.e]+)/g).map(Number),i=wv(n,4),o=i[0],a=i[1],s=i[2],l=i[3];void 0===l&&(l=1),o/=360,a/=100,s/=100,r.hsla=[o,a,s,l]}else if(t.startsWith("rgb")){var u=t.match(/([\-\d\.e]+)/g).map(Number),c=wv(u,4),d=c[0],h=c[1],f=c[2],p=c[3];void 0===p&&(p=1),r.rgba=[d,h,f,p]}else t.startsWith("#")?r.rgba=e.hexToRgb(t):r.rgba=e.nameToRgb(t)||e.hexToRgb(t)}(a.toLowerCase())}else this.rgba=[t,n,i,void 0===o?1:o]}return xv(e,[{key:"printRGB",value:function(e){var t=(e?this.rgba:this.rgba.slice(0,3)).map((function(e,t){return Cv(e,3===t?3:0)}));return e?"rgba("+t+")":"rgb("+t+")"}},{key:"printHSL",value:function(e){var t=[360,100,100,1],n=["","%","%",""],i=(e?this.hsla:this.hsla.slice(0,3)).map((function(e,i){return Cv(e*t[i],3===i?3:1)+n[i]}));return e?"hsla("+i+")":"hsl("+i+")"}},{key:"printHex",value:function(e){var t=this.hex;return e?t:t.substring(0,7)}},{key:"rgba",get:function(){if(this._rgba)return this._rgba;if(!this._hsla)throw new Error("No color is set");return this._rgba=e.hslToRgb(this._hsla)},set:function(e){3===e.length&&(e[3]=1),this._rgba=e,this._hsla=null}},{key:"rgbString",get:function(){return this.printRGB()}},{key:"rgbaString",get:function(){return this.printRGB(!0)}},{key:"hsla",get:function(){if(this._hsla)return this._hsla;if(!this._rgba)throw new Error("No color is set");return this._hsla=e.rgbToHsl(this._rgba)},set:function(e){3===e.length&&(e[3]=1),this._hsla=e,this._rgba=null}},{key:"hslString",get:function(){return this.printHSL()}},{key:"hslaString",get:function(){return this.printHSL(!0)}},{key:"hex",get:function(){return"#"+this.rgba.map((function(e,t){return t<3?e.toString(16):Math.round(255*e).toString(16)})).map((function(e){return e.padStart(2,"0")})).join("")},set:function(t){this.rgba=e.hexToRgb(t)}}],[{key:"hexToRgb",value:function(e){var t=(e.startsWith("#")?e.slice(1):e).replace(/^(\w{3})$/,"$1F").replace(/^(\w)(\w)(\w)(\w)$/,"$1$1$2$2$3$3$4$4").replace(/^(\w{6})$/,"$1FF");if(!t.match(/^([0-9a-fA-F]{8})$/))throw new Error("Unknown hex color; "+e);var n=t.match(/^(\w\w)(\w\w)(\w\w)(\w\w)$/).slice(1).map((function(e){return parseInt(e,16)}));return n[3]=n[3]/255,n}},{key:"nameToRgb",value:function(t){var n=t.toLowerCase().replace("at","T").replace(/[aeiouyldf]/g,"").replace("ght","L").replace("rk","D").slice(-5,4),i=Ev[n];return void 0===i?i:e.hexToRgb(i.replace(/\-/g,"00").padStart(6,"f"))}},{key:"rgbToHsl",value:function(e){var t=wv(e,4),n=t[0],i=t[1],o=t[2],r=t[3];n/=255,i/=255,o/=255;var a=Math.max(n,i,o),s=Math.min(n,i,o),l=void 0,u=void 0,c=(a+s)/2;if(a===s)l=u=0;else{var d=a-s;switch(u=c>.5?d/(2-a-s):d/(a+s),a){case n:l=(i-o)/d+(i1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e},c=o<.5?o*(1+i):o+i-o*i,d=2*o-c;a=u(d,c,n+1/3),s=u(d,c,n),l=u(d,c,n-1/3)}var h=[255*a,255*s,255*l].map(Math.round);return h[3]=r,h}}]),e}(),_v=function(){function e(){bv(this,e),this._events=[]}return xv(e,[{key:"add",value:function(e,t,n){e.addEventListener(t,n,!1),this._events.push({target:e,type:t,handler:n})}},{key:"remove",value:function(t,n,i){this._events=this._events.filter((function(o){var r=!0;return t&&t!==o.target&&(r=!1),n&&n!==o.type&&(r=!1),i&&i!==o.handler&&(r=!1),r&&e._doRemove(o.target,o.type,o.handler),!r}))}},{key:"destroy",value:function(){this._events.forEach((function(t){return e._doRemove(t.target,t.type,t.handler)})),this._events=[]}}],[{key:"_doRemove",value:function(e,t,n){e.removeEventListener(t,n,!1)}}]),e}();function Sv(e,t,n){var i=!1;function o(e,t,n){return Math.max(t,Math.min(e,n))}function r(e,r,a){if(a&&(i=!0),i){e.preventDefault();var s=t.getBoundingClientRect(),l=s.width,u=s.height,c=r.clientX,d=r.clientY,h=o(c-s.left,0,l),f=o(d-s.top,0,u);n(h/l,f/u)}}function a(e,t){1===(void 0===e.buttons?e.which:e.buttons)?r(e,e,t):i=!1}function s(e,t){1===e.touches.length?r(e,e.touches[0],t):i=!1}e.add(t,"mousedown",(function(e){a(e,!0)})),e.add(t,"touchstart",(function(e){s(e,!0)})),e.add(window,"mousemove",a),e.add(t,"touchmove",s),e.add(window,"mouseup",(function(e){i=!1})),e.add(t,"touchend",(function(e){i=!1})),e.add(t,"touchcancel",(function(e){i=!1}))}var Mv="keydown",Tv="mousedown",Av="focusin";function kv(e,t){return(t||document).querySelector(e)}function Rv(e,t,n,i,o){e.add(t,Mv,(function(e){n.indexOf(e.key)>=0&&i(e)}))}var Dv=function(){function e(t){bv(this,e),this.settings={popup:"right",layout:"default",alpha:!0,editor:!0,editorFormat:"hex",cancelButton:!1,defaultColor:"#0cf"},this._events=new _v,this.onChange=null,this.onDone=null,this.onOpen=null,this.onClose=null,this.setOptions(t)}return xv(e,[{key:"setOptions",value:function(e){var t=this;if(e){var n=this.settings;if(e instanceof HTMLElement)n.parent=e;else{n.parent&&e.parent&&n.parent!==e.parent&&(this._events.remove(n.parent),this._popupInited=!1),function(e,t){for(var n in e)t[n]=e[n]}(e,n),e.onChange&&(this.onChange=e.onChange),e.onDone&&(this.onDone=e.onDone),e.onOpen&&(this.onOpen=e.onOpen),e.onClose&&(this.onClose=e.onClose);var i=e.color||e.colour;i&&this._setColor(i)}var o=n.parent;if(o&&n.popup&&!this._popupInited){var r=function(e){return t.openHandler(e)};this._events.add(o,"click",r),Rv(this._events,o,[" ","Spacebar","Enter"],r),this._popupInited=!0}else e.parent&&!n.popup&&this.show()}}},{key:"openHandler",value:function(e){if(this.show()){e&&e.preventDefault(),this.settings.parent.style.pointerEvents="none";var t=e&&e.type===Mv?this._domEdit:this.domElement;setTimeout((function(){return t.focus()}),100),this.onOpen&&this.onOpen(this.colour)}}},{key:"closeHandler",value:function(e){var t=e&&e.type,n=!1;if(e)if(t===Tv||t===Av){var i=(this.__containedEvent||0)+100;e.timeStamp>i&&(n=!0)}else!function(e){e.preventDefault(),e.stopPropagation()}(e),n=!0;else n=!0;n&&this.hide()&&(this.settings.parent.style.pointerEvents="",t!==Tv&&this.settings.parent.focus(),this.onClose&&this.onClose(this.colour))}},{key:"movePopup",value:function(e,t){this.closeHandler(),this.setOptions(e),t&&this.openHandler()}},{key:"setColor",value:function(e,t){this._setColor(e,{silent:t})}},{key:"_setColor",value:function(e,t){if("string"==typeof e&&(e=e.trim()),e){t=t||{};var n=void 0;try{n=new Nv(e)}catch(e){if(t.failSilently)return;throw e}if(!this.settings.alpha){var i=n.hsla;i[3]=1,n.hsla=i}this.colour=this.color=n,this._setHSLA(null,null,null,null,t)}}},{key:"setColour",value:function(e,t){this.setColor(e,t)}},{key:"show",value:function(){if(!this.settings.parent)return!1;if(this.domElement){var e=this._toggleDOM(!0);return this._setPosition(),e}var t,n,i=this.settings.template||'
',o=(t=i,(n=document.createElement("div")).innerHTML=t,n.firstElementChild);return this.domElement=o,this._domH=kv(".picker_hue",o),this._domSL=kv(".picker_sl",o),this._domA=kv(".picker_alpha",o),this._domEdit=kv(".picker_editor input",o),this._domSample=kv(".picker_sample",o),this._domOkay=kv(".picker_done button",o),this._domCancel=kv(".picker_cancel button",o),o.classList.add("layout_"+this.settings.layout),this.settings.alpha||o.classList.add("no_alpha"),this.settings.editor||o.classList.add("no_editor"),this.settings.cancelButton||o.classList.add("no_cancel"),this._ifPopup((function(){return o.classList.add("popup")})),this._setPosition(),this.colour?this._updateUI():this._setColor(this.settings.defaultColor),this._bindEvents(),!0}},{key:"hide",value:function(){return this._toggleDOM(!1)}},{key:"destroy",value:function(){this._events.destroy(),this.domElement&&this.settings.parent.removeChild(this.domElement)}},{key:"_bindEvents",value:function(){var e=this,t=this,n=this.domElement,i=this._events;function o(e,t,n){i.add(e,t,n)}o(n,"click",(function(e){return e.preventDefault()})),Sv(i,this._domH,(function(e,n){return t._setHSLA(e)})),Sv(i,this._domSL,(function(e,n){return t._setHSLA(null,e,1-n)})),this.settings.alpha&&Sv(i,this._domA,(function(e,n){return t._setHSLA(null,null,null,1-n)}));var r=this._domEdit;o(r,"input",(function(e){t._setColor(this.value,{fromEditor:!0,failSilently:!0})})),o(r,"focus",(function(e){var t=this;t.selectionStart===t.selectionEnd&&t.select()})),this._ifPopup((function(){var t=function(t){return e.closeHandler(t)};o(window,Tv,t),o(window,Av,t),Rv(i,n,["Esc","Escape"],t);var r=function(t){e.__containedEvent=t.timeStamp};o(n,Tv,r),o(n,Av,r),o(e._domCancel,"click",t)}));var a=function(t){e._ifPopup((function(){return e.closeHandler(t)})),e.onDone&&e.onDone(e.colour)};o(this._domOkay,"click",a),Rv(i,n,["Enter"],a)}},{key:"_setPosition",value:function(){var e=this.settings.parent,t=this.domElement;e!==t.parentNode&&e.appendChild(t),this._ifPopup((function(n){"static"===getComputedStyle(e).position&&(e.style.position="relative");var i=!0===n?"popup_right":"popup_"+n;["popup_top","popup_bottom","popup_left","popup_right"].forEach((function(e){e===i?t.classList.add(e):t.classList.remove(e)})),t.classList.add(i)}))}},{key:"_setHSLA",value:function(e,t,n,i,o){o=o||{};var r=this.colour,a=r.hsla;[e,t,n,i].forEach((function(e,t){(e||0===e)&&(a[t]=e)})),r.hsla=a,this._updateUI(o),this.onChange&&!o.silent&&this.onChange(r)}},{key:"_updateUI",value:function(e){if(this.domElement){e=e||{};var t=this.colour,n=t.hsla,i="hsl("+360*n[0]+", 100%, 50%)",o=t.hslString,r=t.hslaString,a=this._domH,s=this._domSL,l=this._domA,u=kv(".picker_selector",a),c=kv(".picker_selector",s),d=kv(".picker_selector",l);y(0,u,n[0]),this._domSL.style.backgroundColor=this._domH.style.color=i,y(0,c,n[1]),b(0,c,1-n[2]),s.style.color=o,b(0,d,1-n[3]);var h=o,f=h.replace("hsl","hsla").replace(")",", 0)"),p="linear-gradient("+[h,f]+")";if(this._domA.style.background=p+", linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0 / 2em 2em,\n linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em / 2em 2em",!e.fromEditor){var g=this.settings.editorFormat,v=this.settings.alpha,m=void 0;switch(g){case"rgb":m=t.printRGB(v);break;case"hsl":m=t.printHSL(v);break;default:m=t.printHex(v)}this._domEdit.value=m}this._domSample.style.color=r}function y(e,t,n){t.style.left=100*n+"%"}function b(e,t,n){t.style.top=100*n+"%"}}},{key:"_ifPopup",value:function(e,t){this.settings.parent&&this.settings.popup?e&&e(this.settings.popup):t&&t()}},{key:"_toggleDOM",value:function(e){var t=this.domElement;if(!t)return!1;var n=e?"":"none",i=t.style.display!==n;return i&&(t.style.display=n),i}}]),e}(),Ov=document.createElement("style");Ov.textContent='.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{position:absolute;z-index:-1;opacity:0}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{display:flex;flex-flow:row wrap;justify-content:space-between;align-items:stretch;font-size:10px;width:25em;padding:.5em}.layout_default.picker_wrapper input,.layout_default.picker_wrapper button{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper::before{content:"";display:block;width:100%;height:0;order:1}.layout_default .picker_slider,.layout_default .picker_selector{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl::before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{width:100%;height:100%}.layout_default .picker_sample{order:1;flex:1 1 auto}.layout_default .picker_done,.layout_default .picker_cancel{order:1}.picker_wrapper{box-sizing:border-box;background:#f2f2f2;box-shadow:0 0 0 1px silver;cursor:default;font-family:sans-serif;color:#444;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{box-sizing:border-box;border:none;box-shadow:0 0 0 1px silver;outline:none}.picker_wrapper button:focus,.picker_wrapper button:active,.picker_wrapper input:focus,.picker_wrapper input:active{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{padding:.4em .6em;cursor:pointer;background-color:#f5f5f5;background-image:linear-gradient(0deg, gainsboro, transparent)}.picker_wrapper button:active{background-image:linear-gradient(0deg, transparent, gainsboro)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{position:absolute;z-index:1;display:block;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;background:currentColor;cursor:pointer}.picker_slider .picker_selector{border-radius:2px}.picker_hue{position:relative;background-image:linear-gradient(90deg, red, yellow, lime, cyan, blue, magenta, red);box-shadow:0 0 0 1px silver}.picker_sl{position:relative;box-shadow:0 0 0 1px silver;background-image:linear-gradient(180deg, white, rgba(255, 255, 255, 0) 50%),linear-gradient(0deg, black, rgba(0, 0, 0, 0) 50%),linear-gradient(90deg, #808080, rgba(128, 128, 128, 0))}.picker_alpha,.picker_sample{position:relative;background:linear-gradient(45deg, lightgrey 25%, transparent 25%, transparent 75%, lightgrey 75%) 0 0/2em 2em,linear-gradient(45deg, lightgrey 25%, white 25%, white 75%, lightgrey 75%) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample::before{content:"";position:absolute;display:block;width:100%;height:100%;background:currentColor}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{position:absolute;z-index:2;margin:1.5em}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{width:3em;height:3em;margin:0}.picker_wrapper.popup .picker_arrow::before,.picker_wrapper.popup .picker_arrow::after{content:"";display:block;position:absolute;top:0;left:0;z-index:-99}.picker_wrapper.popup .picker_arrow::before{width:100%;height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%}.picker_wrapper.popup .picker_arrow::after{width:150%;height:150%;box-shadow:none}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{top:100%;left:0}.popup.popup_bottom .picker_arrow{top:0;left:0;-webkit-transform:rotate(90deg) scale(1, -1);transform:rotate(90deg) scale(1, -1)}.popup.popup_left{top:0;right:100%}.popup.popup_left .picker_arrow{top:0;right:0;-webkit-transform:scale(-1, 1);transform:scale(-1, 1)}.popup.popup_right{top:0;left:100%}.popup.popup_right .picker_arrow{top:0;left:0}',document.documentElement.firstElementChild.appendChild(Ov),Dv.StyleElement=Ov;var Pv={};!function(e){e.exports=function(){var e="object",t="function",n="undefined",i=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],o=["setStart","setStartBefore","setStartAfter","setEnd","setEndBefore","setEndAfter","collapse","selectNode","selectNodeContents","compareBoundaryPoints","deleteContents","extractContents","cloneContents","insertNode","surroundContents","cloneRange","toString","detach"],r=["boundingHeight","boundingLeft","boundingTop","boundingWidth","htmlText","text"],a=["collapse","compareEndPoints","duplicate","moveToElementText","parentElement","select","setEndPoint","getBoundingClientRect"];function s(n,i){var o=typeof n[i];return o==t||!(o!=e||!n[i])||"unknown"==o}function l(t,n){return!(typeof t[n]!=e||!t[n])}function u(e,t){return typeof e[t]!=n}function c(e){return function(t,n){for(var i=n.length;i--;)if(!e(t,n[i]))return!1;return!0}}var d=c(s),h=c(l),f=c(u);function p(e){return e&&d(e,a)&&f(e,r)}function g(e){return l(e,"body")?e.body:e.getElementsByTagName("body")[0]}var v,m,y=[].forEach?function(e,t){e.forEach(t)}:function(e,t){for(var n=0,i=e.length;nt?(o.node=i,o.offset-=t):o.node==e.parentNode&&o.offset>c(e)&&++o.offset;return i}function x(e){if(9==e.nodeType)return e;if(typeof e.ownerDocument!=n)return e.ownerDocument;if(typeof e.document!=n)return e.document;if(e.parentNode)return x(e.parentNode);throw t.createError("getDocument: no document found for node")}function w(e){var i=x(e);if(typeof i.defaultView!=n)return i.defaultView;if(typeof i.parentWindow!=n)return i.parentWindow;throw t.createError("Cannot get a window object for node")}function E(e){if(typeof e.contentDocument!=n)return e.contentDocument;if(typeof e.contentWindow!=n)return e.contentWindow.document;throw t.createError("getIframeDocument: No Document object found for iframe element")}function C(e){if(typeof e.contentWindow!=n)return e.contentWindow;if(typeof e.contentDocument!=n)return e.contentDocument.defaultView;throw t.createError("getIframeWindow: No Window object found for iframe element")}function N(e){return e&&i.isHostMethod(e,"setTimeout")&&i.isHostObject(e,"document")}function _(e,t,n){var o;if(e?i.isHostProperty(e,"nodeType")?o=1==e.nodeType&&"iframe"==e.tagName.toLowerCase()?E(e):x(e):N(e)&&(o=e.document):o=document,!o)throw t.createError(n+"(): Parameter must be a Window object or DOM node");return o}function S(e){for(var t;t=e.parentNode;)e=t;return e}function M(e,n,i,o){var r,a,s,l,u;if(e==i)return n===o?0:n[index:"+c(e)+",length:"+e.childNodes.length+"]["+(e.innerHTML||"[innerHTML not supported]").slice(0,25)+"]"}return e.nodeName}function D(e){for(var t,n=x(e).createDocumentFragment();t=e.firstChild;)n.appendChild(t);return n}function O(e,t,n){var i=o(e),r=e.createElement("div");r.contentEditable=""+!!n,t&&(r.innerHTML=t);var a=i.firstChild;return a?i.insertBefore(r,a):i.appendChild(r),r}function P(e){return e.parentNode.removeChild(e)}function I(e){this.root=e,this._next=e}function L(e){return new I(e)}function B(e,t){this.node=e,this.offset=t}function j(e){this.code=this[e],this.codeName=e,this.message="DOMException: "+this.codeName}!function(){var t=document.createElement("b");t.innerHTML="1";var n=t.firstChild;t.innerHTML="
",A=k(n),e.features.crashyTextNodes=A}(),typeof window.getComputedStyle!=n?T=function(e,t){return w(e).getComputedStyle(e,null)[t]}:typeof document.documentElement.currentStyle!=n?T=function(e,t){return e.currentStyle?e.currentStyle[t]:""}:t.fail("No means of obtaining computed style properties found"),I.prototype={_current:null,hasNext:function(){return!!this._next},next:function(){var e,t,n=this._current=this._next;if(this._current)if(e=n.firstChild)this._next=e;else{for(t=null;n!==this.root&&!(t=n.nextSibling);)n=n.parentNode;this._next=t}return this._current},detach:function(){this._current=this._next=this.root=null}},B.prototype={equals:function(e){return!!e&&this.node===e.node&&this.offset==e.offset},inspect:function(){return"[DomPosition("+R(this.node)+":"+this.offset+")]"},toString:function(){return this.inspect()}},j.prototype={INDEX_SIZE_ERR:1,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INVALID_STATE_ERR:11,INVALID_NODE_TYPE_ERR:24},j.prototype.toString=function(){return this.message},e.dom={arrayContains:s,isHtmlNamespace:l,parentElement:u,getNodeIndex:c,getNodeLength:d,getCommonAncestor:h,isAncestorOf:f,isOrIsAncestorOf:p,getClosestAncestorIn:g,isCharacterDataNode:v,isTextOrCommentNode:m,insertAfter:y,splitDataNode:b,getDocument:x,getWindow:w,getIframeWindow:C,getIframeDocument:E,getBody:o,isWindow:N,getContentDocument:_,getRootContainer:S,comparePoints:M,isBrokenNode:k,inspectNode:R,getComputedStyleProperty:T,createTestElement:O,removeNode:P,fragmentFromNodeChildren:D,createIterator:L,DomPosition:B},e.DOMException=j})),E.createCoreModule("DomRange",["DomUtil"],(function(e,t){var n=e.dom,i=e.util,o=n.DomPosition,r=e.DOMException,a=n.isCharacterDataNode,s=n.getNodeIndex,l=n.isOrIsAncestorOf,u=n.getDocument,c=n.comparePoints,d=n.splitDataNode,h=n.getClosestAncestorIn,f=n.getNodeLength,p=n.arrayContains,g=n.getRootContainer,v=e.features.crashyTextNodes,m=n.removeNode;function y(e,t){return 3!=e.nodeType&&(l(e,t.startContainer)||l(e,t.endContainer))}function b(e){return e.document||u(e.startContainer)}function x(e){return g(e.startContainer)}function w(e){return new o(e.parentNode,s(e))}function E(e){return new o(e.parentNode,s(e)+1)}function C(e,t,i){var o=11==e.nodeType?e.firstChild:e;return a(t)?i==t.length?n.insertAfter(e,t):t.parentNode.insertBefore(e,0==i?t:d(t,i)):i>=t.childNodes.length?t.appendChild(e):t.insertBefore(e,t.childNodes[i]),o}function N(e,t,n){if($(e),$(t),b(t)!=b(e))throw new r("WRONG_DOCUMENT_ERR");var i=c(e.startContainer,e.startOffset,t.endContainer,t.endOffset),o=c(e.endContainer,e.endOffset,t.startContainer,t.startOffset);return n?i<=0&&o>=0:i<0&&o>0}function _(e){for(var t,n,i,o=b(e.range).createDocumentFragment();n=e.next();){if(t=e.isPartiallySelectedSubtree(),n=n.cloneNode(!t),t&&(i=e.getSubtreeIterator(),n.appendChild(_(i)),i.detach()),10==n.nodeType)throw new r("HIERARCHY_REQUEST_ERR");o.appendChild(n)}return o}function S(e,t,i){var o,r,a,s;for(i=i||{stop:!1};a=e.next();)if(e.isPartiallySelectedSubtree()){if(!1===t(a))return void(i.stop=!0);if(S(s=e.getSubtreeIterator(),t,i),s.detach(),i.stop)return}else for(o=n.createIterator(a);r=o.next();)if(!1===t(r))return void(i.stop=!0)}function M(e){for(var t;e.next();)e.isPartiallySelectedSubtree()?(M(t=e.getSubtreeIterator()),t.detach()):e.remove()}function T(e){for(var t,n,i=b(e.range).createDocumentFragment();t=e.next();){if(e.isPartiallySelectedSubtree()?(t=t.cloneNode(!1),n=e.getSubtreeIterator(),t.appendChild(T(n)),n.detach()):e.remove(),10==t.nodeType)throw new r("HIERARCHY_REQUEST_ERR");i.appendChild(t)}return i}function A(e,t,n){var i,o=!(!t||!t.length),r=!!n;o&&(i=new RegExp("^("+t.join("|")+")$"));var s=[];return S(new R(e,!1),(function(t){if((!o||i.test(t.nodeType))&&(!r||n(t))){var l=e.startContainer;if(t!=l||!a(l)||e.startOffset!=l.length){var u=e.endContainer;t==u&&a(u)&&0==e.endOffset||s.push(t)}}})),s}function k(e){return"["+(void 0===e.getName?"Range":e.getName())+"("+n.inspectNode(e.startContainer)+":"+e.startOffset+", "+n.inspectNode(e.endContainer)+":"+e.endOffset+")]"}function R(e,t){if(this.range=e,this.clonePartiallySelectedTextNodes=t,!e.collapsed){this.sc=e.startContainer,this.so=e.startOffset,this.ec=e.endContainer,this.eo=e.endOffset;var n=e.commonAncestorContainer;this.sc===this.ec&&a(this.sc)?(this.isSingleCharacterDataNode=!0,this._first=this._last=this._next=this.sc):(this._first=this._next=this.sc!==n||a(this.sc)?h(this.sc,n,!0):this.sc.childNodes[this.so],this._last=this.ec!==n||a(this.ec)?h(this.ec,n,!0):this.ec.childNodes[this.eo-1])}}R.prototype={_current:null,_next:null,_first:null,_last:null,isSingleCharacterDataNode:!1,reset:function(){this._current=null,this._next=this._first},hasNext:function(){return!!this._next},next:function(){var e=this._current=this._next;return e&&(this._next=e!==this._last?e.nextSibling:null,a(e)&&this.clonePartiallySelectedTextNodes&&(e===this.ec&&(e=e.cloneNode(!0)).deleteData(this.eo,e.length-this.eo),this._current===this.sc&&(e=e.cloneNode(!0)).deleteData(0,this.so))),e},remove:function(){var e,t,n=this._current;!a(n)||n!==this.sc&&n!==this.ec?n.parentNode&&m(n):(e=n===this.sc?this.so:0)!=(t=n===this.ec?this.eo:n.length)&&n.deleteData(e,t-e)},isPartiallySelectedSubtree:function(){return y(this._current,this.range)},getSubtreeIterator:function(){var e;if(this.isSingleCharacterDataNode)(e=this.range.cloneRange()).collapse(!1);else{e=new me(b(this.range));var t=this._current,n=t,i=0,o=t,r=f(t);l(t,this.sc)&&(n=this.sc,i=this.so),l(t,this.ec)&&(o=this.ec,r=this.eo),ve(e,n,i,o,r)}return new R(e,this.clonePartiallySelectedTextNodes)},detach:function(){this.range=this._current=this._next=this._first=this._last=this.sc=this.so=this.ec=this.eo=null}};var D=[1,3,4,5,7,8,10],O=[2,9,11],P=[5,6,10,12],I=[1,3,4,5,7,8,10,11],L=[1,3,4,5,7,8];function B(e){return function(t,n){for(var i,o=n?t:t.parentNode;o;){if(i=o.nodeType,p(e,i))return o;o=o.parentNode}return null}}var j=B([9,11]),F=B(P),H=B([6,10,12]),W=B([1]);function z(e,t){if(H(e,t))throw new r("INVALID_NODE_TYPE_ERR")}function G(e,t){if(!p(t,e.nodeType))throw new r("INVALID_NODE_TYPE_ERR")}function U(e,t){if(t<0||t>(a(e)?e.length:e.childNodes.length))throw new r("INDEX_SIZE_ERR")}function q(e,t){if(j(e,!0)!==j(t,!0))throw new r("WRONG_DOCUMENT_ERR")}function X(e){if(F(e,!0))throw new r("NO_MODIFICATION_ALLOWED_ERR")}function V(e,t){if(!e)throw new r(t)}function K(e,t){return t<=(a(e)?e.length:e.childNodes.length)}function Y(e){return!!e.startContainer&&!!e.endContainer&&!(v&&(n.isBrokenNode(e.startContainer)||n.isBrokenNode(e.endContainer)))&&g(e.startContainer)==g(e.endContainer)&&K(e.startContainer,e.startOffset)&&K(e.endContainer,e.endOffset)}function $(e){if(!Y(e))throw new Error("Range error: Range is not valid. This usually happens after DOM mutation. Range: ("+e.inspect()+")")}var Z=document.createElement("style"),J=!1;try{Z.innerHTML="x",J=3==Z.firstChild.nodeType}catch(e){}e.features.htmlParsingConforms=J;var Q=J?function(e){var t=this.startContainer,i=u(t);if(!t)throw new r("INVALID_STATE_ERR");var o=null;return 1==t.nodeType?o=t:a(t)&&(o=n.parentElement(t)),(o=null===o||"HTML"==o.nodeName&&n.isHtmlNamespace(u(o).documentElement)&&n.isHtmlNamespace(o)?i.createElement("body"):o.cloneNode(!1)).innerHTML=e,n.fragmentFromNodeChildren(o)}:function(e){var t=b(this).createElement("body");return t.innerHTML=e,n.fragmentFromNodeChildren(t)};function ee(e,t){$(e);var n=e.startContainer,i=e.startOffset,o=e.endContainer,r=e.endOffset,l=n===o;a(o)&&r>0&&r0&&i=s(n)&&r++,i=0),e.setStartAndEnd(n,i,o,r)}function te(e){$(e);var t=e.commonAncestorContainer.parentNode.cloneNode(!1);return t.appendChild(e.cloneContents()),t.innerHTML}var ne=["startContainer","startOffset","endContainer","endOffset","collapsed","commonAncestorContainer"],ie=0,oe=1,re=2,ae=3,se=0,le=1,ue=2,ce=3;function de(e){e.START_TO_START=ie,e.START_TO_END=oe,e.END_TO_END=re,e.END_TO_START=ae,e.NODE_BEFORE=se,e.NODE_AFTER=le,e.NODE_BEFORE_AND_AFTER=ue,e.NODE_INSIDE=ce}function he(e){de(e),de(e.prototype)}function fe(e,t){return function(){$(this);var n,i=this.startContainer,o=this.startOffset,r=this.commonAncestorContainer,a=new R(this,!0);i!==r&&(i=(n=E(h(i,r,!0))).node,o=n.offset),S(a,X),a.reset();var s=e(a);return a.detach(),t(this,i,o,i,o),s}}function pe(t,n){function o(e,t){return function(n){G(n,D),G(g(n),O);var i=(e?w:E)(n);(t?r:l)(this,i.node,i.offset)}}function r(e,t,i){var o=e.endContainer,r=e.endOffset;t===e.startContainer&&i===e.startOffset||(g(t)==g(o)&&1!=c(t,i,o,r)||(o=t,r=i),n(e,t,i,o,r))}function l(e,t,i){var o=e.startContainer,r=e.startOffset;t===e.endContainer&&i===e.endOffset||(g(t)==g(o)&&-1!=c(t,i,o,r)||(o=t,r=i),n(e,o,r,t,i))}var u=function(){};u.prototype=e.rangePrototype,t.prototype=new u,i.extend(t.prototype,{setStart:function(e,t){z(e,!0),U(e,t),r(this,e,t)},setEnd:function(e,t){z(e,!0),U(e,t),l(this,e,t)},setStartAndEnd:function(){var e=arguments,t=e[0],i=e[1],o=t,r=i;switch(e.length){case 3:r=e[2];break;case 4:o=e[2],r=e[3]}z(t,!0),U(t,i),z(o,!0),U(o,r),n(this,t,i,o,r)},setBoundary:function(e,t,n){this["set"+(n?"Start":"End")](e,t)},setStartBefore:o(!0,!0),setStartAfter:o(!1,!0),setEndBefore:o(!0,!1),setEndAfter:o(!1,!1),collapse:function(e){$(this),e?n(this,this.startContainer,this.startOffset,this.startContainer,this.startOffset):n(this,this.endContainer,this.endOffset,this.endContainer,this.endOffset)},selectNodeContents:function(e){z(e,!0),n(this,e,0,e,f(e))},selectNode:function(e){z(e,!1),G(e,D);var t=w(e),i=E(e);n(this,t.node,t.offset,i.node,i.offset)},extractContents:fe(T,n),deleteContents:fe(M,n),canSurroundContents:function(){$(this),X(this.startContainer),X(this.endContainer);var e=new R(this,!0),t=e._first&&y(e._first,this)||e._last&&y(e._last,this);return e.detach(),!t},splitBoundaries:function(){ee(this)},splitBoundariesPreservingPositions:function(e){ee(this,e)},normalizeBoundaries:function(){$(this);var e,t=this.startContainer,i=this.startOffset,o=this.endContainer,r=this.endOffset,l=function(e){var t=e.nextSibling;t&&t.nodeType==e.nodeType&&(o=e,r=e.length,e.appendData(t.data),m(t))},u=function(e){var n=e.previousSibling;if(n&&n.nodeType==e.nodeType){t=e;var a=e.length;if(i=n.length,e.insertData(0,n.data),m(n),t==o)r+=i,o=t;else if(o==e.parentNode){var l=s(e);r==l?(o=e,r=a):r>l&&r--}}},c=!0;if(a(o))r==o.length?l(o):0==r&&(e=o.previousSibling)&&e.nodeType==o.nodeType&&(r=e.length,t==o&&(c=!1),e.appendData(o.data),m(o),o=e);else{if(r>0){var d=o.childNodes[r-1];d&&a(d)&&l(d)}c=!this.collapsed}if(c){if(a(t))0==i?u(t):i==t.length&&(e=t.nextSibling)&&e.nodeType==t.nodeType&&(o==e&&(o=t,r+=t.length),t.appendData(e.data),m(e));else if(i0?ue:se:o>0?le:ce},comparePoint:function(e,t){return $(this),V(e,"HIERARCHY_REQUEST_ERR"),q(e,this.startContainer),c(e,t,this.startContainer,this.startOffset)<0?-1:c(e,t,this.endContainer,this.endOffset)>0?1:0},createContextualFragment:Q,toHtml:function(){return te(this)},intersectsNode:function(e,t){if($(this),g(e)!=x(this))return!1;var n=e.parentNode,i=s(e);if(!n)return!0;var o=c(n,i,this.endContainer,this.endOffset),r=c(n,i+1,this.startContainer,this.startOffset);return t?o<=0&&r>=0:o<0&&r>0},isPointInRange:function(e,t){return $(this),V(e,"HIERARCHY_REQUEST_ERR"),q(e,this.startContainer),c(e,t,this.startContainer,this.startOffset)>=0&&c(e,t,this.endContainer,this.endOffset)<=0},intersectsRange:function(e){return N(this,e,!1)},intersectsOrTouchesRange:function(e){return N(this,e,!0)},intersection:function(e){if(this.intersectsRange(e)){var t=c(this.startContainer,this.startOffset,e.startContainer,e.startOffset),n=c(this.endContainer,this.endOffset,e.endContainer,e.endOffset),i=this.cloneRange();return-1==t&&i.setStart(e.startContainer,e.startOffset),1==n&&i.setEnd(e.endContainer,e.endOffset),i}return null},union:function(e){if(this.intersectsOrTouchesRange(e)){var t=this.cloneRange();return-1==c(e.startContainer,e.startOffset,this.startContainer,this.startOffset)&&t.setStart(e.startContainer,e.startOffset),1==c(e.endContainer,e.endOffset,this.endContainer,this.endOffset)&&t.setEnd(e.endContainer,e.endOffset),t}throw new r("Ranges do not intersect")},containsNode:function(e,t){return t?this.intersectsNode(e,!1):this.compareNode(e)==ce},containsNodeContents:function(e){return this.comparePoint(e,0)>=0&&this.comparePoint(e,f(e))<=0},containsRange:function(e){var t=this.intersection(e);return null!==t&&e.equals(t)},containsNodeText:function(e){var t=this.cloneRange();t.selectNode(e);var n=t.getNodes([3]);if(n.length>0){t.setStart(n[0],0);var i=n.pop();return t.setEnd(i,i.length),this.containsRange(t)}return this.containsNodeContents(e)},getNodes:function(e,t){return $(this),A(this,e,t)},getDocument:function(){return b(this)},collapseBefore:function(e){this.setEndBefore(e),this.collapse(!1)},collapseAfter:function(e){this.setStartAfter(e),this.collapse(!0)},getBookmark:function(t){var i=b(this),o=e.createRange(i);t=t||n.getBody(i),o.selectNodeContents(t);var r=this.intersection(o),a=0,s=0;return r&&(o.setEnd(r.startContainer,r.startOffset),s=(a=o.toString().length)+r.toString().length),{start:a,end:s,containerNode:t}},moveToBookmark:function(e){var t=e.containerNode,n=0;this.setStart(t,0),this.collapse(!0);for(var i,o,r,a,s=[t],l=!1,u=!1;!u&&(i=s.pop());)if(3==i.nodeType)o=n+i.length,!l&&e.start>=n&&e.start<=o&&(this.setStart(i,e.start-n),l=!0),l&&e.end>=n&&e.end<=o&&(this.setEnd(i,e.end-n),u=!0),n=o;else for(r=(a=i.childNodes).length;r--;)s.push(a[r])},getName:function(){return"DomRange"},equals:function(e){return me.rangesEqual(this,e)},isValid:function(){return Y(this)},inspect:function(){return k(this)},detach:function(){}}),pe(me,ve),i.extend(me,{rangeProperties:ne,RangeIterator:R,copyComparisonConstants:he,createPrototypeRange:pe,inspect:k,toHtml:te,getRangeDocument:b,rangesEqual:function(e,t){return e.startContainer===t.startContainer&&e.startOffset===t.startOffset&&e.endContainer===t.endContainer&&e.endOffset===t.endOffset}}),e.DomRange=me})),E.createCoreModule("WrappedRange",["DomRange"],(function(e,t){var n,i,o=e.dom,r=e.util,a=o.DomPosition,s=e.DomRange,l=o.getBody,u=o.getContentDocument,c=o.isCharacterDataNode;if(e.features.implementsDomRange&&function(){var i,a,c=s.rangeProperties;function d(e){for(var t,n=c.length;n--;)e[t=c[n]]=e.nativeRange[t];e.collapsed=e.startContainer===e.endContainer&&e.startOffset===e.endOffset}function h(e,t,n,i,o){var r=e.startContainer!==t||e.startOffset!=n,a=e.endContainer!==i||e.endOffset!=o,s=!e.equals(e.nativeRange);(r||a||s)&&(e.setEnd(i,o),e.setStart(t,n))}n=function(e){if(!e)throw t.createError("WrappedRange: Range must be specified");this.nativeRange=e,d(this)},s.createPrototypeRange(n,h),(i=n.prototype).selectNode=function(e){this.nativeRange.selectNode(e),d(this)},i.cloneContents=function(){return this.nativeRange.cloneContents()},i.surroundContents=function(e){this.nativeRange.surroundContents(e),d(this)},i.collapse=function(e){this.nativeRange.collapse(e),d(this)},i.cloneRange=function(){return new n(this.nativeRange.cloneRange())},i.refresh=function(){d(this)},i.toString=function(){return this.nativeRange.toString()};var f=document.createTextNode("test");l(document).appendChild(f);var p=document.createRange();p.setStart(f,0),p.setEnd(f,0);try{p.setStart(f,1),i.setStart=function(e,t){this.nativeRange.setStart(e,t),d(this)},i.setEnd=function(e,t){this.nativeRange.setEnd(e,t),d(this)},a=function(e){return function(t){this.nativeRange[e](t),d(this)}}}catch(e){i.setStart=function(e,t){try{this.nativeRange.setStart(e,t)}catch(n){this.nativeRange.setEnd(e,t),this.nativeRange.setStart(e,t)}d(this)},i.setEnd=function(e,t){try{this.nativeRange.setEnd(e,t)}catch(n){this.nativeRange.setStart(e,t),this.nativeRange.setEnd(e,t)}d(this)},a=function(e,t){return function(n){try{this.nativeRange[e](n)}catch(i){this.nativeRange[t](n),this.nativeRange[e](n)}d(this)}}}i.setStartBefore=a("setStartBefore","setEndBefore"),i.setStartAfter=a("setStartAfter","setEndAfter"),i.setEndBefore=a("setEndBefore","setStartBefore"),i.setEndAfter=a("setEndAfter","setStartAfter"),i.selectNodeContents=function(e){this.setStartAndEnd(e,0,o.getNodeLength(e))},p.selectNodeContents(f),p.setEnd(f,3);var g=document.createRange();g.selectNodeContents(f),g.setEnd(f,4),g.setStart(f,2),-1==p.compareBoundaryPoints(p.START_TO_END,g)&&1==p.compareBoundaryPoints(p.END_TO_START,g)?i.compareBoundaryPoints=function(e,t){return e==(t=t.nativeRange||t).START_TO_END?e=t.END_TO_START:e==t.END_TO_START&&(e=t.START_TO_END),this.nativeRange.compareBoundaryPoints(e,t)}:i.compareBoundaryPoints=function(e,t){return this.nativeRange.compareBoundaryPoints(e,t.nativeRange||t)};var v=document.createElement("div");v.innerHTML="123";var m=v.firstChild,y=l(document);y.appendChild(v),p.setStart(m,1),p.setEnd(m,2),p.deleteContents(),"13"==m.data&&(i.deleteContents=function(){this.nativeRange.deleteContents(),d(this)},i.extractContents=function(){var e=this.nativeRange.extractContents();return d(this),e}),y.removeChild(v),y=null,r.isHostMethod(p,"createContextualFragment")&&(i.createContextualFragment=function(e){return this.nativeRange.createContextualFragment(e)}),l(document).removeChild(f),i.getName=function(){return"WrappedRange"},e.WrappedRange=n,e.createNativeRange=function(e){return(e=u(e,t,"createNativeRange")).createRange()}}(),e.features.implementsTextRange){var d=function(e){var t=e.parentElement(),n=e.duplicate();n.collapse(!0);var i=n.parentElement();(n=e.duplicate()).collapse(!1);var r=n.parentElement(),a=i==r?i:o.getCommonAncestor(i,r);return a==t?a:o.getCommonAncestor(t,a)},h=function(e){return 0==e.compareEndPoints("StartToEnd",e)},f=function(e,t,n,i,r){var s=e.duplicate();s.collapse(n);var l=s.parentElement();if(o.isOrIsAncestorOf(t,l)||(l=t),!l.canHaveHTML){var u=new a(l.parentNode,o.getNodeIndex(l));return{boundaryPosition:u,nodeInfo:{nodeIndex:u.offset,containerElement:u.node}}}var d=o.getDocument(l).createElement("span");d.parentNode&&o.removeNode(d);for(var h,f,p,g,v,m=n?"StartToStart":"StartToEnd",y=r&&r.containerElement==l?r.nodeIndex:0,b=l.childNodes.length,x=b,w=x;w==b?l.appendChild(d):l.insertBefore(d,l.childNodes[w]),s.moveToElementText(d),0!=(h=s.compareEndPoints(m,e))&&y!=x;){if(-1==h){if(x==y+1)break;y=w}else x=x==y+1?y:w;w=Math.floor((y+x)/2),l.removeChild(d)}if(v=d.nextSibling,-1==h&&v&&c(v)){var E;if(s.setEndPoint(n?"EndToStart":"EndToEnd",e),/[\r\n]/.test(v.data)){var C=s.duplicate(),N=C.text.replace(/\r\n/g,"\r").length;for(E=C.moveStart("character",N);-1==(h=C.compareEndPoints("StartToEnd",C));)E++,C.moveStart("character",1)}else E=s.text.length;g=new a(v,E)}else f=(i||!n)&&d.previousSibling,g=(p=(i||n)&&d.nextSibling)&&c(p)?new a(p,0):f&&c(f)?new a(f,f.data.length):new a(l,o.getNodeIndex(d));return o.removeNode(d),{boundaryPosition:g,nodeInfo:{nodeIndex:w,containerElement:l}}},p=function(e,t){var n,i,r,a,s=e.offset,u=o.getDocument(e.node),d=l(u).createTextRange(),h=c(e.node);return h?i=(n=e.node).parentNode:(n=s<(a=e.node.childNodes).length?a[s]:null,i=e.node),(r=u.createElement("span")).innerHTML="&#feff;",n?i.insertBefore(r,n):i.appendChild(r),d.moveToElementText(r),d.collapse(!t),i.removeChild(r),h&&d[t?"moveStart":"moveEnd"]("character",s),d};(i=function(e){this.textRange=e,this.refresh()}).prototype=new s(document),i.prototype.refresh=function(){var e,t,n,i=d(this.textRange);h(this.textRange)?t=e=f(this.textRange,i,!0,!0).boundaryPosition:(e=(n=f(this.textRange,i,!0,!1)).boundaryPosition,t=f(this.textRange,i,!1,!1,n.nodeInfo).boundaryPosition),this.setStart(e.node,e.offset),this.setEnd(t.node,t.offset)},i.prototype.getName=function(){return"WrappedTextRange"},s.copyComparisonConstants(i);var g=function(e){if(e.collapsed)return p(new a(e.startContainer,e.startOffset),!0);var t=p(new a(e.startContainer,e.startOffset),!0),n=p(new a(e.endContainer,e.endOffset),!1),i=l(s.getRangeDocument(e)).createTextRange();return i.setEndPoint("StartToStart",t),i.setEndPoint("EndToEnd",n),i};if(i.rangeToTextRange=g,i.prototype.toTextRange=function(){return g(this)},e.WrappedTextRange=i,!e.features.implementsDomRange||e.config.preferTextRange){var v=Function("return this;")();void 0===v.Range&&(v.Range=i),e.createNativeRange=function(e){return e=u(e,t,"createNativeRange"),l(e).createTextRange()},e.WrappedRange=i}}e.createRange=function(n){return n=u(n,t,"createRange"),new e.WrappedRange(e.createNativeRange(n))},e.createRangyRange=function(e){return e=u(e,t,"createRangyRange"),new s(e)},r.createAliasForDeprecatedMethod(e,"createIframeRange","createRange"),r.createAliasForDeprecatedMethod(e,"createIframeRangyRange","createRangyRange"),e.addShimListener((function(t){var n=t.document;void 0===n.createRange&&(n.createRange=function(){return e.createRange(n)}),n=t=null}))})),E.createCoreModule("WrappedSelection",["DomRange","WrappedRange"],(function(e,t){e.config.checkSelectionRanges=!0;var n,i,o="boolean",r="number",a=e.dom,s=e.util,l=s.isHostMethod,u=e.DomRange,c=e.WrappedRange,d=e.DOMException,h=a.DomPosition,f=e.features,p="Control",g=a.getDocument,v=a.getBody,m=u.rangesEqual;function y(e){return"string"==typeof e?/^backward(s)?$/i.test(e):!!e}function b(e,n){if(e){if(a.isWindow(e))return e;if(e instanceof $)return e.win;var i=a.getContentDocument(e,t,n);return a.getWindow(i)}return window}function x(e){return b(e,"getWinSelection").getSelection()}function w(e){return b(e,"getDocSelection").document.selection}function E(e){var t=!1;return e.anchorNode&&(t=1==a.comparePoints(e.anchorNode,e.anchorOffset,e.focusNode,e.focusOffset)),t}var C=l(window,"getSelection"),N=s.isHostObject(document,"selection");f.implementsWinGetSelection=C,f.implementsDocSelection=N;var _=N&&(!C||e.config.preferTextRange);if(_)n=w,e.isSelectionValid=function(e){var t=b(e,"isSelectionValid").document,n=t.selection;return"None"!=n.type||g(n.createRange().parentElement())==t};else{if(!C)return t.fail("Neither document.selection or window.getSelection() detected."),!1;n=x,e.isSelectionValid=function(){return!0}}e.getNativeSelection=n;var S=n();if(!S)return t.fail("Native selection was null (possibly issue 138?)"),!1;var M=e.createNativeRange(document),T=v(document),A=s.areHostProperties(S,["anchorNode","focusNode","anchorOffset","focusOffset"]);f.selectionHasAnchorAndFocus=A;var k=l(S,"extend");f.selectionHasExtend=k;var R=l(S,"setBaseAndExtent");f.selectionHasSetBaseAndExtent=R;var D=typeof S.rangeCount==r;f.selectionHasRangeCount=D;var O=!1,P=!0,I=k?function(t,n){var i=u.getRangeDocument(n),o=e.createRange(i);o.collapseToPoint(n.endContainer,n.endOffset),t.addRange(G(o)),t.extend(n.startContainer,n.startOffset)}:null;s.areHostMethods(S,["addRange","getRangeAt","removeAllRanges"])&&typeof S.rangeCount==r&&f.implementsDomRange&&function(){var t=window.getSelection();if(t){for(var n=t.rangeCount,i=n>1,o=[],r=E(t),s=0;s=36)O=!1;else{var h=c.cloneRange();c.setStart(u,0),h.setEnd(u,3),h.setStart(u,2),t.addRange(c),t.addRange(h),O=2==t.rangeCount}}for(a.removeNode(l),t.removeAllRanges(),s=0;s1)ie(this,e);else{this.removeAllRanges();for(var t=0,n=e.length;t1?ie(this,e):t&&this.addRange(e[0])}}if(ne.getRangeAt=function(e){if(e<0||e>=this.rangeCount)throw new d("INDEX_SIZE_ERR");return this._ranges[e].cloneRange()},_)te=function(t){var n;e.isSelectionValid(t.win)?n=t.docSelection.createRange():(n=v(t.win.document).createTextRange()).collapse(!0),t.docSelection.type==p?K(t):X(n)?V(t,n):W(t)};else if(l(S,"getRangeAt")&&typeof S.rangeCount==r)te=function(t){if(j&&N&&t.docSelection.type==p)K(t);else if(t._ranges.length=t.rangeCount=t.nativeSelection.rangeCount,t.rangeCount){for(var n=0,o=t.rangeCount;n(a.isCharacterDataNode(e)?e.length:e.childNodes.length))throw new d("INDEX_SIZE_ERR")}function ue(t){return function(n,i){var o;this.rangeCount?(o=this.getRangeAt(0))["set"+(t?"Start":"End")](n,i):(o=e.createRange(this.win.document)).setStartAndEnd(n,i),this.setSingleRange(o,this.isBackward())}}function ce(e){var t=[],n=new h(e.anchorNode,e.anchorOffset),i=new h(e.focusNode,e.focusOffset),o="function"==typeof e.getName?e.getName():"Selection";if(void 0!==e.rangeCount)for(var r=0,a=e.rangeCount;r0)return e.WrappedTextRange.rangeToTextRange(this.getRangeAt(0));throw t.createError("getNativeTextRange: selection contains no range")}),ne.getName=function(){return"WrappedSelection"},ne.inspect=function(){return ce(this)},ne.detach=function(){Q(this.win,"delete"),Z(this)},$.detachAll=function(){Q(null,"deleteAll")},$.inspect=ce,$.isDirectionBackward=y,e.Selection=$,e.selectionPrototype=ne,e.addShimListener((function(e){void 0===e.getSelection&&(e.getSelection=function(){return ee(e)}),e=null}))}));var j=!1,F=function(e){j||(j=!0,!E.initialized&&E.config.autoInitialize&&A())};return x&&("complete"==document.readyState?F():(s(document,"addEventListener")&&document.addEventListener("DOMContentLoaded",F,!1),m(window,"load",F))),E}()}({get exports(){return Pv},set exports(e){Pv=e}});var Iv={};!function(e){var t;e.exports=((t=Pv).createModule("ClassApplier",["WrappedSelection"],(function(e,t){var n=e.dom,i=n.DomPosition,o=n.arrayContains,r=e.util,a=r.forEach,s="span",l=r.isHostMethod(document,"createElementNS");function u(e,t){for(var n in e)if(e.hasOwnProperty(n)&&!1===t(n,e[n]))return!1;return!0}function c(e){return e.replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function d(e,t){return!!e&&new RegExp("(?:^|\\s)"+t+"(?:\\s|$)").test(e)}function h(e,t){return"object"==typeof e.classList?e.classList.contains(t):d("string"==typeof e.className?e.className:e.getAttribute("class"),t)}function f(e,t){if("object"==typeof e.classList)e.classList.add(t);else{var n="string"==typeof e.className,i=n?e.className:e.getAttribute("class");i?d(i,t)||(i+=" "+t):i=t,n?e.className=i:e.setAttribute("class",i)}}var p=function(){function e(e,t,n){return t&&n?" ":""}return function(t,n){if("object"==typeof t.classList)t.classList.remove(n);else{var i="string"==typeof t.className,o=i?t.className:t.getAttribute("class");o=o.replace(new RegExp("(^|\\s)"+n+"(\\s|$)"),e),i?t.className=o:t.setAttribute("class",o)}}}();function g(e){return"string"==typeof e.className?e.className:e.getAttribute("class")}function v(e){return e&&e.split(/\s+/).sort().join(" ")}function m(e){return v(g(e))}function y(e,t){return m(e)==m(t)}function b(e,t){for(var n=t.split(/\s+/),i=0,o=n.length;io&&++l,r!=t||a!=n&&a!=n+1||(s=i,l+=o-n),r==t&&a>n+1&&--l,e.node=s,e.offset=l}function E(e,t,n){e.node==t&&e.offset>n&&--e.offset}function C(e,t,i,o){-1==i&&(i=t.childNodes.length);var r=e.parentNode,s=n.getNodeIndex(e);a(o,(function(e){w(e,r,s,t,i)})),t.childNodes.length==i?t.appendChild(e):t.insertBefore(e,t.childNodes[i])}function N(e,t){var i=e.parentNode,o=n.getNodeIndex(e);a(t,(function(e){E(e,i,o)})),n.removeNode(e)}function _(e,t,n,i,o){for(var r,a=[];r=e.firstChild;)C(r,t,n++,o),a.push(r);return N(e,o),a}function S(e,t){return _(e,e.parentNode,n.getNodeIndex(e),!0,t)}function M(e,t){var n=e.cloneRange();n.selectNodeContents(t);var i=n.intersection(e);return""!=(i?i.toString():"")}function T(e){for(var t,n=e.getNodes([3]),i=0;(t=n[i])&&!M(e,t);)++i;for(var o=n.length-1;(t=n[o])&&!M(e,t);)--o;return n.slice(i,o+1)}function A(e,t){if(e.attributes.length!=t.attributes.length)return!1;for(var n,i,o,r=0,a=e.attributes.length;r0&&t1){var o,r=n.getNodeIndex(i),s=[],l=0;a(t,(function(u,c){o=u.parentNode,c>0&&(o.removeChild(u),o.hasChildNodes()||n.removeNode(o),e&&a(e,(function(e){e.node==u&&(e.node=i,e.offset+=l),e.node==o&&e.offset>r&&(--e.offset,e.offset==r+1&&cColor",aria:"Color Picker",action:"colorPicker",init:function(){var e=this;Pv.init(),yv.extensions.button.prototype.init.call(this),this.colorPicker=new Dv({parent:this.button,color:"#000",onDone:function(t){e.coloredText&&e.coloredText.isAppliedToSelection()&&e.coloredText.undoToSelection(),e.coloredText=Pv.createClassApplier("colored",{elementTagName:"span",elementProperties:{style:{color:t.hex}},normalize:!0}),e.coloredText.toggleSelection(),e.base.checkContentChanged(),e.setInactive()}})},getButton:function(){return this.button},handleClick:function(){this.setActive(),this.colorPicker.show()},isAlreadyApplied:function(e){return"mark"===e.nodeName.toLowerCase()},isActive:function(){return this.button.classList.contains("medium-editor-button-active")},setInactive:function(){this.button.classList.remove("medium-editor-button-active")},setActive:function(){this.button.classList.add("medium-editor-button-active")}}),jv=function(e){function n(t){var n=e.call(this,t)||this;n.labelMap=new Map;var i=t.lf,o=t.graphModel;return n.lf=i,n.graphModel=o,n.state={tick:0},n}return g(n,e),n.prototype.componentDidMount=function(){var e=this,t=this.props.graphModel;this.editor=new yv(".lf-label-editor",yd(Lv,{autoLink:!0,extensions:{colorPicker:new Bv}})),t.eventCenter.on("text:update,node:mousemove,node:resize,node:rotate,node:drag,label:drop,node:drop",(function(){})),t.eventCenter.on("node:properties-change,node:properties-delete",(function(){e.setState({tick:e.state.tick+1})}))},n.prototype.componentDidUpdate=function(){var e;this.editor&&this.editor.elements.length>0?this.editor.addElements(".lf-label-editor"):(null===(e=this.editor)||void 0===e||e.destroy(),this.editor=new yv(".lf-label-editor",yd(Lv,{autoLink:!0,extensions:{colorPicker:new Bv}})))},n.prototype.componentWillUnmount=function(){var e;null===(e=this.editor)||void 0===e||e.destroy()},n.prototype.getLabels=function(){var e=this,t=this.props,n=t.lf.extension,i=t.graphModel,o=C(C([],E(i.nodes),!1),E(i.edges),!1);if(n.label){var r=[];return wu(o,(function(t){var n,o;wu(null!==(o=null===(n=t.getData().properties)||void 0===n?void 0:n._label)&&void 0!==o?o:[],(function(n){var o=e.labelMap,a=new mv(n,t,i);o.set(a.id,a),r.push(Op(gv,{label:a,element:t,graphModel:i},a.id))}))})),r}return null},n.prototype.render=function(){return Op("foreignObject",{id:"lf-label-overlay",class:"lf-label-overlay",children:this.getLabels()})},n.toolName="label-edit-tool",n=y([t.observer],n)}(t.Component),Fv=function(){function e(e){var n,i,o,r=e.lf,a=e.options;this.labelInitPositionMap=new Map,this.lf=r,this.options=null!=a?a:{},this.textOverflowMode=null!==(n=a.textOverflowMode)&&void 0!==n?n:"default",this.isMultiple=null===(i=a.isMultiple)||void 0===i||i,this.labelWidth=a.labelWidth,this.maxCount=null!==(o=a.maxCount)&&void 0!==o?o:1/0,r.graphModel.editConfigModel.updateTextMode(t.TextMode.LABEL),this.addEventListeners(),this.rewriteShortcut(),r.tool.registerTool(jv.toolName,jv),r.tool.disableTool("text-edit-tool")}return e.prototype.formatConfig=function(e,n){var i=e.editConfigModel,o=i.nodeTextEdit,r=i.edgeTextEdit,a=i.nodeTextDraggable,s=i.edgeTextDraggable,l=this,u=l.textOverflowMode,c=l.isMultiple,d=l.maxCount,h=l.labelWidth,f=n.text,p=n.zIndex,g=n.properties,m=g._label,y=g._labelOption,b=m,x=void 0===y?{}:y,w=x.isMultiple,E=x.maxCount,C=[];if(nt(b)){var N=null!=E?E:d;C=c&&w?b.length>N?b.slice(0,N):b:[b[0]]}else if(ft(b))C=[b];else if("string"==typeof b||!b){var _=v(v({},f),{content:b||(null==f?void 0:f.value),draggable:"edge"===n.BaseType?s:a});C=_.value?[_]:[]}return"edge"===n.BaseType&&(C=Qu(C,(function(e){return e}))),Qu(C,(function(e){e.id||(e.id=t.createUuid());var i=e.value,l=e.content,c=e.vertical,d=e.editable,f=e.draggable,g=e.textOverflowMode,m="node"===n.BaseType?o:r,y="node"===n.BaseType?a:s;return v(v({},e),{zIndex:p,labelWidth:h,content:null!=l?l:i,vertical:null!=c&&c,editable:Boolean(m)&&d,draggable:Boolean(y)&&f,textOverflowMode:null!=g?g:u})}))},e.prototype.setupLabels=function(e){var t=this;wu(e.sortElements,(function(n){t.rewriteInnerMethods(n);var i=t.formatConfig(e,n);n.setProperty("_label",i)}))},e.prototype.addLabel=function(e,n){var i,o,r,a=this.isMultiple,s=this.maxCount,l=e.properties,u=null!==(i=l._label)&&void 0!==i?i:[],c=null!==(o=l._labelOption)&&void 0!==o?o:{},d=u.length,h={id:t.createUuid(),x:n.x,y:n.y,content:"Label".concat(d+1),value:"Label".concat(d+1),style:{},draggable:!0,editable:!0,vertical:!1};!a||a&&!1===c.isMultiple||d>=(null!==(r=null==c?void 0:c.maxCount)&&void 0!==r?r:s)||(u.push(h),e.setProperty("_label",u))},e.prototype.addEventListeners=function(){var e=this,n=this.lf.graphModel,i=n.eventCenter,o=n.editConfigModel;i.on("graph:rendered",(function(t){var n=t.graphModel;e.setupLabels(n)})),i.on("node:dbclick,edge:dbclick",(function(i){var r=i.e,a=i.data,s=n.getElement(a.id),l=n.getPointByClient({x:r.clientX,y:r.clientY}).canvasOverlayPosition,u={x:l.x,y:l.y};s&&o.textMode===t.TextMode.LABEL&&e.addLabel(s,u)})),i.on("node:resize",(function(e){var t,n,i=e.preData,o=e.data,r=e.model,a=null!==(t=i.properties)&&void 0!==t?t:{},s=a.width,l=a.height,u=a._label,c=void 0===u?[]:u,d=null!==(n=o.properties)&&void 0!==n?n:{},h=d.width,f=d.height;if(s&&l&&h&&f){var p={x:i.x,y:i.y,width:s,height:l},g={x:o.x,y:o.y,width:h,height:f},m=Qu(c,(function(e){var t,n,i,o,r,a,s,l,u,c,d,h=e.x,f=e.y,m=(n=g,i={x:h,y:f},o=(t=p).x,r=t.y,a=t.width,s=t.height,l=n.x,u=n.y,c=n.width,d=n.height,{x:l+(i.x-o)/a*c,y:u+(i.y-r)/s*d});return v(v({},e),m)}));r.setProperty("_label",m)}})),i.on("node:rotate",(function(t){var n=t.model,i=n.x,o=n.y,r=n.rotate,a=n.properties._label,s={x:i,y:o},l=Qu(void 0===a?[]:a,(function(t){if(!t.id)return t;var n={x:t.x,y:t.y};e.labelInitPositionMap.has(t.id)?n=e.labelInitPositionMap.get(t.id):e.labelInitPositionMap.set(t.id,n);var i=r*(180/Math.PI);i<0&&(i+=360);var o=i*(Math.PI/180),a=Jg(n,s,o);return v(v(v({},t),a),{rotate:i})}));n.setProperty("_label",l)})),i.on("node:dnd-add,node:add,edge:add",(function(t){var i=t.data,o=n.getElement(i.id);if(o){e.rewriteInnerMethods(o);var r=o.properties._label;if(!nt(r)||0===r.length||!r[0].id){var a=e.formatConfig(n,i);o.setProperty("_label",a)}}}))},e.prototype.rewriteInnerMethods=function(e){e.moveText=function(t,n){if(e.text){var i=e.text,o=i.x,r=i.y,a=i.value,s=i.draggable,l=i.editable;e.text={value:a,editable:l,draggable:s,x:o+t,y:r+n};var u=Bs(e.getProperties());if(nt(u._label)){var c=Qu(u._label,(function(e){return v(v({},e),{x:e.x+t,y:e.y+n})}));null==e||e.setProperty("_label",c)}}}},e.prototype.rewriteShortcut=function(){var e=this,n=this.lf,i=n.keyboard,o=n.graphModel,r=i.options.keyboard;i.off(["backspace"]),i.on(["backspace"],(function(){if(!(null==r?void 0:r.enabled))return!0;if(o.textEditElement)return!0;var n=o.getSelectElements(!0);e.lf.clearSelectElements();var i=e.lf.graphModel.editConfigModel;return n.edges.forEach((function(n){var r=n.properties;if(r&&!Xc(r._label)&&i.textMode===t.TextMode.LABEL){var a=r._label.filter((function(e){return!e.isSelected}));if(!Vc(a.length,r._label.length)){var s=o.getEdgeModelById(n.id);return void(null==s||s.setProperty("_label",a))}}n.id&&e.lf.deleteEdge(n.id)})),n.nodes.forEach((function(n){var r=n.properties;if(r&&!Xc(r._label)&&i.textMode===t.TextMode.LABEL){var a=r._label.filter((function(e){return!e.isSelected}));if(!Vc(a.length,r._label.length)){var s=o.getNodeModelById(n.id);return void(null==s||s.setProperty("_label",a))}}n.id&&e.lf.deleteNode(n.id)})),!1}))},e.prototype.updateTextMode=function(e){var n=this.lf.graphModel.editConfigModel;e!==n.textMode&&(n.updateTextMode(e),e===t.TextMode.LABEL?(this.lf.tool.enableTool(jv.toolName),this.lf.tool.disableTool("text-edit-tool")):e===t.TextMode.TEXT&&(this.lf.tool.enableTool("text-edit-tool"),this.lf.tool.disableTool(jv.toolName)))},e.prototype.render=function(){},e.prototype.destroy=function(){},e.pluginName="label",e}(),Hv={};function Wv(e){return e.startsWith("data:text/plain")}function zv(e){return b(this,void 0,void 0,(function(){return x(this,(function(t){return Hv[e]?[2,Hv[e]]:[2,new Promise((function(t,n){try{fetch(e).then((function(e){return e.blob()})).then((function(i){var o=new FileReader;o.onloadend=function(){t(Hv[e]=o.result)},o.onerror=n,o.readAsDataURL(i)})).catch((function(){t(Hv[e]=e)}))}catch(t){return Hv[e]=e}}))]}))}))}function Gv(e,t){return b(this,void 0,void 0,(function(){var n,i;return x(this,(function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),(n=e.getAttribute(t)||"").startsWith("data:")?[2]:[4,zv(n)];case 1:return Wv(i=o.sent())?[2]:(e.setAttribute(t,i),[3,3]);case 2:return o.sent(),[3,3];case 3:return[2]}}))}))}function Uv(e,t){return b(this,void 0,void 0,(function(){var n;return x(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),t.startsWith("data:")?[2]:[4,zv(t)];case 1:return Wv(n=i.sent())?[2]:(e.style.backgroundImage="url(".concat(n,")"),[3,3]);case 2:return i.sent(),[3,3];case 3:return[2]}}))}))}function qv(e){return b(this,void 0,void 0,(function(){var t,n,i,o,r,a,s,l,u;return x(this,(function(c){switch(c.label){case 0:for(t=[e],i=[];t.length;)(n=t.shift()).children.length&&t.push.apply(t,C([],E(n.children),!1)),n instanceof HTMLElement&&(o=n.style,r=o.background,a=o.backgroundImage,(s=r.match(/url\(["']?(.*?)["']?\)/))&&s[1]&&(u=s[1],i.push(Uv(n,u))),(l=a.match(/url\(["']?(.*?)["']?\)/))&&l[1]&&(u=l[1],i.push(Uv(n,u)))),n instanceof HTMLImageElement?i.push(Gv(n,"src")):n instanceof SVGImageElement&&i.push(Gv(n,"href"));return[4,Promise.all(i)];case 1:return c.sent(),[2]}}))}))}function Xv(e,t,n){var i=document.createElement("canvas");i.width=t,i.height=n;var o=i.getContext("2d");return o&&o.drawImage(e,0,0,e.width,e.height,0,0,t,n),i}var Vv=function(){function e(e){var t=e.lf,n=this;this.lf=t,this.customCssRules="",this.useGlobalRules=!0,t.getSnapshot=function(e,t){return b(n,void 0,void 0,(function(){return x(this,(function(n){switch(n.label){case 0:return[4,this.getSnapshot(e,t)];case 1:return[2,n.sent()]}}))}))},t.getSnapshotBlob=function(e,t,i){return b(n,void 0,void 0,(function(){return x(this,(function(n){switch(n.label){case 0:return[4,this.getSnapshotBlob(e,t,i)];case 1:return[2,n.sent()]}}))}))},t.getSnapshotBase64=function(e,t,i){return b(n,void 0,void 0,(function(){return x(this,(function(n){switch(n.label){case 0:return[4,this.getSnapshotBase64(e,t,i)];case 1:return[2,n.sent()]}}))}))}}return e.prototype.getSvgRootElement=function(e){return e.container.querySelector(".lf-canvas-overlay")},e.prototype.triggerDownload=function(e){var t=new MouseEvent("click",{view:document.defaultView,bubbles:!1,cancelable:!0}),n=document.createElement("a");n.setAttribute("download",this.fileName),n.setAttribute("href",e),n.setAttribute("target","_blank"),n.dispatchEvent(t)},e.prototype.removeAnchor=function(e){for(var t=e.childNodes,n=e.childNodes&&e.childNodes.length,i=0;i-1&&(e.removeChild(e.childNodes[i]),n--,i--)}},e.prototype.removeRotateControl=function(e){for(var t=e.childNodes,n=e.childNodes&&e.childNodes.length,i=0;i-1&&(e.removeChild(e.childNodes[i]),n--,i--)}},e.prototype.convertImageToBase64=function(e){return b(this,void 0,void 0,(function(){return x(this,(function(t){return[2,new Promise((function(t,n){var i=new Image;i.crossOrigin="anonymous",i.onload=function(){var e=document.createElement("canvas");e.width=i.width,e.height=i.height;var n=e.getContext("2d");null==n||n.drawImage(i,0,0);var o=e.toDataURL("image/png");t(o)},i.onerror=function(){n(new Error("Failed to load image: ".concat(e)))},i.src=e}))]}))}))},e.prototype.isRelativePath=function(e){return!(e.startsWith("data:")||e.startsWith("http://")||e.startsWith("https://")||e.startsWith("//"))},e.prototype.processImages=function(e){return b(this,void 0,void 0,(function(){var t,n,i,o,r,a,s,l,u,c;return x(this,(function(d){switch(d.label){case 0:t=e.getElementsByTagName("image"),o=0,d.label=1;case 1:if(!(o(k=T)&&O>R?(P=k/D,I=R/O):D>R&&O>k?(P=R/D,I=k/O):D>k&&Ok&&(I=P=k/O),(P<1||I<1)&&(D=Math.floor(D*P),O=Math.floor(O*I)),s.lastChild.style.transform="matrix(".concat(P,", 0, 0, ").concat(I,", ").concat((-f+b)*(1/m)*P+a/l,", ").concat((-p+w)*(1/y)*I+a/l,")"),S.width=D,S.height=O,(L=S.getContext("2d"))&&(L.clearRect(0,0,S.width,S.height),L.scale(l*P,l*I),o?(L.fillStyle=o,L.fillRect(0,0,S.width,S.height)):L.clearRect(0,0,S.width,S.height)),B=new Image,(j=document.createElement("style")).innerHTML=this.getClassRules(),(F=document.createElement("foreignObject")).appendChild(j),s.appendChild(F),[2,new Promise((function(e){B.onload=function(){var t=navigator.userAgent.indexOf("Firefox")>-1;try{t?createImageBitmap(B,{resizeWidth:n&&i?Xv(S,n,i).width:S.width,resizeHeight:n&&i?Xv(S,n,i).height:S.height}).then((function(t){null==L||L.drawImage(t,0,0),e(n&&i?Xv(S,n,i):S)})):(null==L||L.drawImage(B,0,0),e(n&&i?Xv(S,n,i):S))}catch(t){null==L||L.drawImage(B,0,0),e(n&&i?Xv(S,n,i):S)}};var t="data:image/svg+xml;charset=utf-8,".concat((new XMLSerializer).serializeToString(s)).replace(/\n/g,"").replace(/\t/g,"").replace(/#/g,"%23");B.src=t}))]}}))}))},e.prototype.withExportPreparation=function(e,t){return b(this,void 0,void 0,(function(){var n,i,o,r,a,s=this;return x(this,(function(l){switch(l.label){case 0:n=this.lf.graphModel.getPartial(),i=(null!=t?t:{}).partial,o=void 0===i?n:i,r=this.lf.getEditConfig(),this.lf.updateEditConfig({isSilentMode:!0,stopScrollGraph:!0,stopMoveGraph:!0}),l.label=1;case 1:return l.trys.push([1,,6,7]),n===o?[3,3]:(this.lf.graphModel.setPartial(o),[4,new Promise((function(t){s.lf.graphModel.eventCenter.once("graph:updated",(function(){return b(s,void 0,void 0,(function(){var i;return x(this,(function(o){switch(o.label){case 0:return[4,e()];case 1:return i=o.sent(),this.lf.graphModel.setPartial(n),t(i),[2]}}))}))}))}))]);case 2:return a=l.sent(),[3,5];case 3:return[4,e()];case 4:a=l.sent(),l.label=5;case 5:return[3,7];case 6:return this.lf.updateEditConfig(r),[7];case 7:return[2,a]}}))}))},e.prototype.getSnapshot=function(e,t){return b(this,void 0,void 0,(function(){var n=this;return x(this,(function(i){switch(i.label){case 0:return[4,this.withExportPreparation((function(){return n.snapshot(e,t)}),t)];case 1:return i.sent(),[2]}}))}))},e.prototype.snapshot=function(e,t){return b(this,void 0,void 0,(function(){var n,i,o,r,a,s,l,u,c,d=this;return x(this,(function(h){switch(h.label){case 0:return i=(n=null!=t?t:{}).fileType,o=void 0===i?"png":i,r=n.quality,this.fileName="".concat(null!=e?e:"logic-flow.".concat(Date.now()),".").concat(o),[4,qv(a=this.getSvgRootElement(this.lf))];case 1:return h.sent(),"svg"!==o?[3,3]:[4,this.cloneSvg(a)];case 2:return s=h.sent(),l=(new XMLSerializer).serializeToString(s),u=new Blob([l],{type:"image/svg+xml;charset=utf-8"}),c=URL.createObjectURL(u),this.triggerDownload(c),[3,4];case 3:this.getCanvasData(a,null!=t?t:{}).then((function(e){var t=e.toDataURL("image/".concat(o),r).replace("image/".concat(o),"image/octet-stream");d.triggerDownload(t)})),h.label=4;case 4:return[2]}}))}))},e.prototype.getSnapshotBlob=function(e,t,n){return b(this,void 0,void 0,(function(){var i=this;return x(this,(function(o){switch(o.label){case 0:return[4,this.withExportPreparation((function(){return i.snapshotBlob(n,t,e)}),n)];case 1:return[2,o.sent()]}}))}))},e.prototype.snapshotBlob=function(e,t,n){return b(this,void 0,void 0,(function(){var i,o,r,a=this;return x(this,(function(s){switch(s.label){case 0:return i=(null!=e?e:{}).fileType,o=void 0===i?t:i,[4,qv(r=this.getSvgRootElement(this.lf))];case 1:return s.sent(),[2,new Promise((function(t){a.getCanvasData(r,v({backgroundColor:n},null!=e?e:{})).then((function(e){e.toBlob((function(n){t({data:n,width:e.width,height:e.height})}),"image/".concat(null!=o?o:"png"))}))}))]}}))}))},e.prototype.getSnapshotBase64=function(e,t,n){return b(this,void 0,void 0,(function(){var i=this;return x(this,(function(o){switch(o.label){case 0:return[4,this.withExportPreparation((function(){return i._getSnapshotBase64(e,t,n)}),n)];case 1:return[2,o.sent()]}}))}))},e.prototype._getSnapshotBase64=function(e,t,n){return b(this,void 0,void 0,(function(){var i,o,r,a=this;return x(this,(function(s){switch(s.label){case 0:return i=(null!=n?n:{}).fileType,o=void 0===i?t:i,[4,qv(r=this.getSvgRootElement(this.lf))];case 1:return s.sent(),[2,new Promise((function(t){a.getCanvasData(r,v({backgroundColor:e},null!=n?n:{})).then((function(e){var n=e.toDataURL("image/".concat(null!=o?o:"png"));t({data:n,width:e.width,height:e.height})}))}))]}}))}))},e.pluginName="snapshot",e}(),Kv=function(){function e(e){var t=e.lf,n=this;this.lf=t,this.paths=[],t.getPathes=function(){if(!n.startNodeType)throw new Error("需要预先指定开始节点类型");return n.getPathes()},t.setRawPaths=function(e){n.setPathes(e)},t.getRawPathes=function(){return n.paths},t.setStartNodeType=function(e){n.startNodeType=e}}return e.prototype.setPathes=function(e){this.paths=e.map((function(e){return{routeId:e.routeId,name:e.name,elements:e.elements,type:e.type,similarElement:null,weight:0}}))},e.prototype.getPathes=function(){var e=this,t=this.lf.getGraphRawData(),n=new Map,i=[];t.nodes.forEach((function(t){n.set(t.id,{id:t.id,data:t,nextNodes:[]}),t.type===e.startNodeType&&i.push(t.id)})),t.edges.forEach((function(e){var t=n.get(e.sourceNodeId);null==t||t.nextNodes.push(e.targetNodeId)}));var o=[];return i.forEach((function(t){var i=n.get(t);i&&(o=o.concat(e.findPathElements(i,n,[])))})),this.getNewPathes(o)},e.prototype.findPathElements=function(e,t,n){void 0===n&&(n=[]);var i=C([],E(n),!1);if(i.push(e.id),0===e.nextNodes.length)return[i];for(var o=[],r=0;re.weight&&i.weight<=r&&(e.weight=r,e.similarElement=i,r===i.weight&&i.similarElement?(i.similarElement.similarElement=null,i.similarElement.weight=0,i.similarElement=null,i.weight=0):(i.similarElement=e,i.weight=r))}})),n.forEach((function(e){e.similarElement&&e.similarElement.similarElement===e&&(e.routeId=e.similarElement.routeId,e.name=e.similarElement.name),delete e.similarElement,delete e.weight})),this.setPathes(n),n},e.prototype.similar2Path=function(e,t){var n=0,i=e.length+t.length;e.sort(),t.sort();for(var o=e.shift(),r=t.shift();void 0!==o&&void 0!==r;)o===r?(n++,o=e.shift(),r=t.shift()):or&&(r=t.shift());return n/i*200},e.prototype.getNewId=function(e){return"".concat(e,"_").concat(S())},e.prototype.isLoopPath=function(e){var t=e.length;return e.indexOf(e[t-1])!==t-1?1:0},e.pluginName="flowPath",e}(),Yv=-1,$v=0,Zv=1,Jv=function(){function e(e){var t=e.lf,n=this;this.levelHeight=[],this.newNodeMap=new Map,this.lf=t,this.trunk=[],t.layout=function(e){var t=n.lf.getGraphRawData();n.lf.setStartNodeType(e);var i=n.lf.getPathes();return n.levelHeight=[],n.newNodeMap=new Map,n.layout(t,i)}}return e.prototype.layout=function(e,t){var n=this,i=[];t.forEach((function(e){var t=e.elements;t.length>i.length?i=t:t.length===i.length&&JSON.stringify(t)===JSON.stringify(n.trunk)&&(i=n.trunk)})),this.trunk=i;for(var o=this.formatData(e),r={nodes:[],edges:[]},a=i.length-1;a>=0;a--)this.setNodePosition(i[a],o,r,a,1);this.lf.graphModel.graphDataToModel(r)},e.prototype.setNodePosition=function(e,t,n,i,o){var r=this,a=t[e],s=a.text,l=a.type,u=a.next,c=a.properties,d=160*i+40,h=120*o,f={id:e,x:d,text:s,y:h,type:l,properties:c};return s&&"object"==typeof s&&(f.text=v(v({},s),{x:d+s.x,y:h+s.y})),this.newNodeMap.set(f.id,{x:f.x,y:f.y,type:l}),n.nodes.push(f),a.isFixed=!0,this.addLevelHeight(i,1),u&&u.length>0&&u.forEach((function(o){if(!t[o.nodeId].isFixed){var a=r.getLevelHeight(i+1);r.addLevelHeight(i,1),r.setNodePosition(o.nodeId,t,n,i+1,a+1)}n.edges.push(v({id:o.edgeId,type:o.edgeType,sourceNodeId:e,targetNodeId:o.nodeId,properties:o.properties,text:o.text},r.getEdgeDataPoints(e,o.nodeId)))})),f},e.prototype.getEdgeDataPoints=function(e,t){var n=this.newNodeMap.get(e),i=this.newNodeMap.get(t),o=this.getShape(e),r=o.width,a=o.height,s=this.getShape(t),l=s.width,u=s.height,c=this.getRelativePosition(n,i),d={x:n.x,y:n.y},h={x:i.x,y:i.y};switch(c){case $v:d.x=n.x+r/2,h.x=i.x-l/2;break;case Yv:d.y=n.y+a/2,h.x=i.x-l/2;break;case Zv:d.x=n.x+r/2,h.y=i.y+u/2}return{startPoint:d,endPoint:h}},e.prototype.getRelativePosition=function(e,t){var n=e.y,i=t.y;return nthis.thresholdDistance&&(this.lf.deleteEdge(r),this.virtualEdge=void 0)}this.currentNode&&this.findClosestAnchorOfNode(this.currentNode,e),this.currentDistancethis.thresholdDistance&&(this.lf.deleteEdge(d),this.virtualEdge=void 0)}this.findClosestAnchorOfAnchor(s,l),this.currentDistance"))e.innerHTML=o;else if(o.includes(" ")||o.startsWith(".")){var a=o.replace(/^\./,"").split(" ");(i=e.classList).add.apply(i,C([],E(a),!1))}else e.classList.add(o)}},e.prototype.__getMenuDom=function(e){var t=this,n=[];return e&&e.length>0&&e.forEach((function(e){var i=document.createElement("li");if(e.className?i.className="lf-menu-item ".concat(e.disabled?"lf-menu-item__disabled":""," ").concat(e.className):i.className="lf-menu-item ".concat(e.disabled?"lf-menu-item__disabled":""),e.icon){var o=document.createElement("span");o.className="lf-menu-item-icon",t.processIcon(o,e.icon,e.text),i.appendChild(o)}var r=document.createElement("span");r.className="lf-menu-item-text",e.text&&(r.innerText=e.text),i.appendChild(r),e.disabled&&i.setAttribute("disabled","true"),i.onclickCallback=e.callback,n.push(i)})),n},e.prototype.updateMenuItemDOMStatus=function(e,t){if(this.__menuDOM&&"none"!==this.__menuDOM.style.display){var n=Array.from(this.__menuDOM.querySelectorAll(".lf-menu-item")).find((function(t){var n=t.querySelector(".lf-menu-item-text");return(null==n?void 0:n.textContent)===e}));if(n){var i=n;t?(i.classList.add("lf-menu-item__disabled"),i.setAttribute("disabled","true")):(i.classList.remove("lf-menu-item__disabled"),i.removeAttribute("disabled"))}}},e.prototype.setupSilentModeListener=function(){var e=this;this.__editConfigChangeHandler=function(t){var n=t.data.isSilentMode;n!==e.__isSilentMode&&(e.__isSilentMode=n,e.updateMenuVisibility(!n))},this.lf.on("editConfig:changed",this.__editConfigChangeHandler)},e.prototype.updateMenuVisibility=function(e){this.__menuDOM&&(e?this.__currentData&&(this.__menuDOM.style.display="block"):(this.__menuDOM.style.display="none",this.__currentData=null))},e.prototype.refreshCurrentMenu=function(){var e,t,n,i,o,r,a,s,l,u,c;if(this.__menuDOM&&"none"!==this.__menuDOM.style.display&&this.__currentData){var d=this.__menuDOM.style,h=d.left,f=d.top,p=[];if(this.__currentData&&"object"==typeof this.__currentData)if("sourceNodeId"in this.__currentData&&"targetNodeId"in this.__currentData){if(v=this.lf.graphModel.getEdgeModelById(this.__currentData.id)){var g=null===(t=this.menuTypeMap)||void 0===t?void 0:t.get(v.type);p=v.menu&&Array.isArray(v.menu)?v.menu:g||(null!==(i=null===(n=this.menuTypeMap)||void 0===n?void 0:n.get(nm))&&void 0!==i?i:[])}}else if("id"in this.__currentData&&"type"in this.__currentData){var v;if(v=this.lf.graphModel.getNodeModelById(this.__currentData.id)){g=null===(o=this.menuTypeMap)||void 0===o?void 0:o.get(v.type);p=v.menu&&Array.isArray(v.menu)?v.menu:g||(null!==(a=null===(r=this.menuTypeMap)||void 0===r?void 0:r.get(tm))&&void 0!==a?a:[])}}else p="nodes"in this.__currentData&&"edges"in this.__currentData?null!==(l=null===(s=this.menuTypeMap)||void 0===s?void 0:s.get(om))&&void 0!==l?l:[]:null!==(c=null===(u=this.menuTypeMap)||void 0===u?void 0:u.get(im))&&void 0!==c?c:[];p&&p.length>0?(this.__menuDOM.innerHTML="",(e=this.__menuDOM).append.apply(e,C([],E(this.__getMenuDom(p)),!1)),h&&(this.__menuDOM.style.left=h),f&&(this.__menuDOM.style.top=f)):(this.__menuDOM.style.display="none",this.__currentData=null)}},e.prototype.setMenuByType=function(e){var t,n=e.type,i=e.menu;n&&i&&(null===(t=this.menuTypeMap)||void 0===t||t.set(n,i),this.refreshCurrentMenu())},e.prototype.getMenuConfig=function(e){var t,n;return null!==(n=null===(t=this.menuTypeMap)||void 0===t?void 0:t.get(rm[e]))&&void 0!==n?n:[]},e.prototype.resetMenuConfigByType=function(e){var t;this.setMenuConfig(((t={})[e]=am[e],t))},e.prototype.resetAllMenuConfig=function(){this.setMenuConfig(am)},e.prototype.setMenuConfig=function(e){this.processMenuConfig(e,"set"),this.refreshCurrentMenu()},e.prototype.addMenuConfig=function(e){this.processMenuConfig(e,"add"),this.refreshCurrentMenu()},e.prototype.changeMenuItem=function(e,t){if("add"===e)this.addMenuConfig(t);else{if("reset"!==e)throw new Error("The first parameter of changeMenuConfig should be 'add' or 'reset'");this.setMenuConfig(t)}},e.prototype.changeMenuItemDisableStatus=function(e,t,n){var i,o;if(e&&t){var r=null!==(o=null===(i=this.menuTypeMap)||void 0===i?void 0:i.get(rm[e]))&&void 0!==o?o:[];if(r.length){var a=r.find((function(e){return e.text===t}));a&&(a.disabled=n,this.updateMenuItemDOMStatus(t,n))}}},e.prototype.render=function(e,t){var n=this;e.graphModel.editConfigModel.isSilentMode||(this.__container=t,this.__currentData=null,this.setupSilentModeListener(),this.__menuDOM&&(this.__menuDOM.className="lf-menu",t.appendChild(this.__menuDOM),this.__menuDOM.addEventListener("click",(function(e){e.stopPropagation();for(var t=e.target;-1===Array.from(t.classList).indexOf("lf-menu-item")&&-1===Array.from(t.classList).indexOf("lf-menu");)t=null==t?void 0:t.parentElement;Array.from(t.classList).indexOf("lf-menu-item__disabled")>-1||Array.from(t.classList).indexOf("lf-menu-item")>-1&&(t.onclickCallback(n.__currentData,t),n.__menuDOM&&(n.__menuDOM.style.display="none"),n.__currentData=null)}),!0)),this.lf.on("node:contextmenu",(function(e){var t,i,o=e.data,r=e.position,a=e.e,s=r.domOverlayPosition,l=s.x,u=s.y,c=o.id,d=n.lf.graphModel.getNodeModelById(c);if(d&&!n.__isSilentMode){var h=[],f=null===(t=n.menuTypeMap)||void 0===t?void 0:t.get(d.type);h=d&&d.menu&&Array.isArray(d.menu)?d.menu:f||(null===(i=n.menuTypeMap)||void 0===i?void 0:i.get(tm)),n.__currentData=o,n.showMenu(l,u,h,{width:d.width,height:d.height,clientX:a.clientX,clientY:a.clientY})}})),this.lf.on("edge:contextmenu",(function(e){var t,i,o,r=e.data,a=e.position,s=e.e,l=a.domOverlayPosition,u=l.x,c=l.y,d=r.id,h=n.lf.graphModel.getEdgeModelById(d);if(h&&!n.__isSilentMode){var f=[],p=null===(t=n.menuTypeMap)||void 0===t?void 0:t.get(h.type);f=h&&h.menu&&Array.isArray(h.menu)?h.menu:p||(null!==(o=null===(i=n.menuTypeMap)||void 0===i?void 0:i.get(nm))&&void 0!==o?o:[]),n.__currentData=r,n.showMenu(u,c,f,{width:h.width,height:h.height,clientX:s.clientX,clientY:s.clientY})}})),this.lf.on("blank:contextmenu",(function(e){var t,i,o=e.position;if(!n.__isSilentMode){var r=null!==(i=null===(t=n.menuTypeMap)||void 0===t?void 0:t.get(im))&&void 0!==i?i:[],a=o.domOverlayPosition,s=a.x,l=a.y;n.__currentData=v({},o.canvasOverlayPosition),n.showMenu(s,l,r)}})),this.lf.on("selection:contextmenu",(function(e){var t,i=e.data,o=e.position;if(!n.__isSilentMode){var r=null===(t=n.menuTypeMap)||void 0===t?void 0:t.get(om),a=o.domOverlayPosition,s=a.x,l=a.y;n.__currentData=i,n.showMenu(s,l,r)}})),this.lf.on("node:mousedown",(function(){n.__menuDOM.style.display="none"})),this.lf.on("edge:click",(function(){n.__menuDOM.style.display="none"})),this.lf.on("blank:click",(function(){n.__menuDOM.style.display="none"})))},e.prototype.destroy=function(){var e;this.__editConfigChangeHandler&&this.lf.off("editConfig:changed",this.__editConfigChangeHandler),this.__menuDOM&&(null===(e=null==this?void 0:this.__container)||void 0===e||e.removeChild(this.__menuDOM),this.__menuDOM=void 0)},e.pluginName="menu",e}(),lm="menu-common",um=function(){function e(e){var t=e.lf,n=this;this.menuTypeMap=new Map,this.listenDelete=function(){n.hideContextMenu()},this.lf=t,this.__menuDOM=document.createElement("div"),this.__menuDOM.className="lf-inner-context",this.menuTypeMap.set(lm,[]),this.lf.setContextMenuByType=function(e,t){n.setContextMenuByType(e,t)},this.lf.setContextMenuItems=function(e){n.setContextMenuItems(e)},this.lf.showContextMenu=function(e){n.showContextMenu(e)},this.lf.hideContextMenu=function(){n.hideContextMenu()}}return e.prototype.render=function(e,t){var n=this;this.container=t,e.on("node:click",(function(e){var t=e.data;n._activeData=t,n.createContextMenu()})),e.on("edge:click",(function(e){var t=e.data;n._activeData=t,n.createContextMenu()})),e.on("blank:click",(function(){n.hideContextMenu()}))},e.prototype.setContextMenuByType=function(e,t){this.menuTypeMap.set(e,t)},e.prototype.hideContextMenu=function(){this.__menuDOM.innerHTML="",this.__menuDOM.style.display="none",this.isShow&&this.container.removeChild(this.__menuDOM),this.lf.off("node:delete,edge:delete,node:drag,graph:transform",this.listenDelete),this.isShow=!1},e.prototype.showContextMenu=function(e){e&&e.id&&(this._activeData=e,this.createContextMenu())},e.prototype.setContextMenuItems=function(e){this.menuTypeMap.set(lm,e)},e.prototype.getContextMenuPosition=function(){var e=this._activeData,t=this.lf.graphModel.getElement(e.id);if(t){var n,i;if("edge"===t.BaseType){n=Number.MIN_SAFE_INTEGER,i=Number.MAX_SAFE_INTEGER;var o=t.getData();n=Math.max(o.startPoint.x,n),i=Math.min(o.startPoint.y,i),n=Math.max(o.endPoint.x,n),i=Math.min(o.endPoint.y,i),o.pointsList&&o.pointsList.forEach((function(e){n=Math.max(e.x,n),i=Math.min(e.y,i)}))}return"node"===t.BaseType&&(n=e.x+t.width/2,i=e.y-t.height/2),this.lf.graphModel.transformModel.CanvasPointToHtmlPoint([n,i])}},e.prototype.createContextMenu=function(){var e=this;if(!this.lf.options.isSilentMode){var t=C(C([],E(this.menuTypeMap.get(this._activeData.type)||[]),!1),E(this.menuTypeMap.get(lm)||[]),!1),n=document.createDocumentFragment();t.forEach((function(t){var i=document.createElement("div");i.className="lf-context-item";var o=document.createElement("img");o.src=t.icon,o.className="lf-context-img",t.className&&(i.className="".concat(i.className," ").concat(t.className)),o.addEventListener("click",(function(){e.hideContextMenu(),t.callback?t.callback(e._activeData):e.addNode({sourceId:e._activeData.id,x:e._activeData.x,y:e._activeData.y,properties:t.properties,type:t.type})})),i.appendChild(o),n.appendChild(i)})),this.__menuDOM.innerHTML="",this.__menuDOM.appendChild(n),this.showMenu()}},e.prototype.addNode=function(e,t){var n=void 0!==t;void 0===t&&(t=e.y);var i=this.lf.getNodeModelById(e.sourceId);if(i){var o=e.x-i.width+200,r=t-e.y/2-20,a=e.x+i.width+200,s=t+e.y/2+20;if(this.lf.getAreaElement([o,r],[a,s]).length)return t+=100,void this.addNode(e,t);if(e.type){var l=this.lf.addNode({type:e.type,x:e.x+200,y:t,properties:e.properties}),u=void 0,c=void 0;n&&(u={x:e.x,y:e.y+i.height/2},c={x:l.x-l.width/2,y:l.y}),this.lf.addEdge({sourceNodeId:e.sourceId,targetNodeId:l.id,startPoint:u,endPoint:c})}}},e.prototype.showMenu=function(){var e=this.getContextMenuPosition();if(e){var t=E(e,2),n=t[0],i=t[1];this.__menuDOM.style.display="flex",this.__menuDOM.style.top="".concat(i,"px"),this.__menuDOM.style.left="".concat(n+10,"px"),this.container.appendChild(this.__menuDOM),!this.isShow&&this.lf.on("node:delete,edge:delete,node:drag,graph:transform",this.listenDelete),this.isShow=!0}},e.pluginName="contextMenu",e}(),cm=function(){function e(e){var t=e.lf,n=this;this.lf=t,this.lf.setPatternItems=function(e){n.setPatternItems(e)}}return e.prototype.render=function(e,t){var n=this;this.destroy(),this.shapeList&&0!==this.shapeList.length?(this.panelEl=document.createElement("div"),this.panelEl.className="lf-dndpanel",this.shapeList.forEach((function(e){var t;null===(t=n.panelEl)||void 0===t||t.appendChild(n.createDndItem(e))})),t.appendChild(this.panelEl),this.domContainer=t):this.domContainer=t},e.prototype.destroy=function(){this.domContainer&&this.panelEl&&this.domContainer.contains(this.panelEl)&&this.domContainer.removeChild(this.panelEl)},e.prototype.setPatternItems=function(e){this.shapeList=e,this.domContainer&&this.render(this.lf,this.domContainer)},e.prototype.createDndItem=function(e){var t=this,n=document.createElement("div");n.className=e.className?"lf-dnd-item ".concat(e.className):"lf-dnd-item";var i=document.createElement("div");if(i.className="lf-dnd-shape",e.icon&&(i.style.backgroundImage="url(".concat(e.icon,")")),n.appendChild(i),e.label){var o=document.createElement("div");o.innerText=e.label,o.className="lf-dnd-text",n.appendChild(o)}return e.disabled?(n.classList.add("disabled"),n.onmousedown=function(){e.callback&&e.callback(t.lf,t.domContainer)},n):(n.onmousedown=function(){e.type&&t.lf.dnd.startDrag({type:e.type,properties:e.properties,text:e.text}),e.callback&&e.callback(t.lf,t.domContainer)},n.ondblclick=function(n){t.lf.graphModel.eventCenter.emit("dnd:panel-dbclick",{e:n,data:e})},n.onclick=function(n){t.lf.graphModel.eventCenter.emit("dnd:panel-click",{e:n,data:e})},n.oncontextmenu=function(n){t.lf.graphModel.eventCenter.emit("dnd:panel-contextmenu",{e:n,data:e})},n)},e.pluginName="dndPanel",e}(),dm=function(){function e(e){var t=e.lf,n=e.LogicFlow,i=e.options,o=this;this.width=200,this.height=150,this.scale=1,this.translateX=0,this.translateY=0,this.showEdge=!1,this.viewPortTop=0,this.viewPortLeft=0,this.viewPortWidth=150,this.viewPortHeight=75,this.isShow=!1,this.isShowHeader=!1,this.isShowCloseIcon=!1,this.headerTitle="导航",this.disabledPlugins=["miniMap","control","selectionSelect"],this.onGraphResize=function(){o.updateViewPortBounds(),o.isShow&&o.updateViewPort()},this.render=function(e,t){o.container=t,o.lf.on("history:change",(function(){o.isShow&&o.setView()})),o.lf.on("graph:transform",(function(){o.isShow&&o.setView(!1)}))},this.show=function(e,t){o.isShow||(o.createMiniMap(e,t),o.setView()),o.isShow=!0},this.hide=function(){o.isShow&&(o.removeMiniMap(),o.lf.emit("miniMap:close",{})),o.isShow=!1},this.updatePosition=function(e){if("object"==typeof e)void 0===e.left&&void 0===e.right||(o.leftPosition=e.left,o.rightPosition=e.right),void 0===e.top&&void 0===e.bottom||(o.topPosition=e.top,o.bottomPosition=e.bottom);else switch(e){case"left-top":o.leftPosition=0,o.rightPosition=void 0,o.topPosition=0,o.bottomPosition=void 0;break;case"right-top":o.leftPosition=void 0,o.rightPosition=0,o.topPosition=0,o.bottomPosition=void 0;break;case"left-bottom":o.leftPosition=0,o.rightPosition=void 0,o.topPosition=void 0,o.bottomPosition=0;break;case"right-bottom":o.leftPosition=void 0,o.rightPosition=0,o.topPosition=void 0,o.bottomPosition=0}o.updateMiniMapPosition()},this.reset=function(){o.lf.resetTranslate(),o.lf.resetZoom()},this.setShowEdge=function(e){o.showEdge!==e&&(o.showEdge=e,o.setView())},this.startDrag=function(e){document.addEventListener("mousemove",o.drag),document.addEventListener("mouseup",o.drop);var t=e.x,n=e.y;o.startPosition={x:t,y:n}},this.drag=function(e){var t=e.x,n=e.y,i=(t-o.startPosition.x)/o.scale,r=(n-o.startPosition.y)/o.scale,a=o.viewPortLeft+i+o.viewPortWidth/o.scale/2,s=o.viewPortTop+r+o.viewPortHeight/o.scale/2;o.startPosition={x:t,y:n},o.lf.focusOn({coordinate:{x:a,y:s}})},this.drop=function(){document.removeEventListener("mousemove",o.drag),document.removeEventListener("mouseup",o.drop)},this.mapClick=function(e){var t=e.offsetX,n=e.offsetY,i=o.translateX+t/o.scale,r=o.translateY+n/o.scale;o.lf.focusOn({coordinate:{x:i,y:r}})},this.lf=t,this.LFCtor=n,i&&this.setOption(i),this.viewPortWidth=t.graphModel.width,this.viewPortHeight=t.graphModel.height;var r={left:0,right:this.viewPortWidth,top:0,bottom:this.viewPortHeight};this.bounds=r,this.elementAreaBounds=r,this.viewPortBounds=r,this.initMiniMap(),t.on("graph:resize",this.onGraphResize)}return e.prototype.setOption=function(e){var t=e.width,n=void 0===t?150:t,i=e.height,o=void 0===i?220:i,r=e.showEdge,a=void 0!==r&&r,s=e.isShowHeader,l=void 0!==s&&s,u=e.isShowCloseIcon,c=void 0!==u&&u,d=e.leftPosition,h=e.topPosition,f=e.rightPosition,p=void 0===f?0:f,g=e.bottomPosition,v=void 0===g?0:g,m=e.headerTitle,y=void 0===m?"导航":m;this.width=n,this.height=o,this.showEdge=a,this.isShowHeader=l,this.isShowCloseIcon=c,this.leftPosition=d,this.rightPosition=void 0!==d?void 0:p,this.topPosition=h,this.bottomPosition=void 0!==h?void 0:v,this.headerTitle=y},e.prototype.initMiniMap=function(){var e=document.createElement("div");e.className="lf-mini-map-graph",e.style.width="".concat(this.width,"px"),e.style.height="".concat(this.height,"px"),this.lfMap=new this.LFCtor({container:e,grid:!1,isSilentMode:!0,stopZoomGraph:!0,stopScrollGraph:!0,stopMoveGraph:!1,history:!1,snapline:!1,disabledPlugins:this.disabledPlugins}),n.createTeleportContainer(e,this.lfMap.graphModel.flowId),this.miniMapWrap=e,this.createViewPort(),e.addEventListener("click",this.mapClick)},e.prototype.createMiniMap=function(e,t){var n,i=document.createElement("div");this.miniMapContainer=i,i.appendChild(this.miniMapWrap),i.style.position="absolute",void 0===e&&void 0===t||(this.leftPosition=e||0,this.topPosition=t||0,this.rightPosition=void 0,this.bottomPosition=void 0),this.updateMiniMapPosition(),i.className="lf-mini-map",this.isShowCloseIcon||i.classList.add("lf-mini-map-no-close-icon"),this.isShowHeader||i.classList.add("lf-mini-map-no-header"),null===(n=this.container)||void 0===n||n.appendChild(i),this.miniMapWrap.appendChild(this.viewport);var o=document.createElement("div");o.className="lf-mini-map-header",o.innerText=this.headerTitle,i.appendChild(o);var r=document.createElement("span");r.className="lf-mini-map-close",r.addEventListener("click",this.hide),i.appendChild(r)},e.prototype.updateMiniMapPosition=function(){if(this.miniMapContainer){var e=this.miniMapContainer.style;void 0!==this.rightPosition?(e.right="".concat(this.rightPosition,"px"),e.left=""):(e.left="".concat(this.leftPosition,"px"),e.right=""),void 0!==this.bottomPosition?(e.bottom="".concat(this.bottomPosition,"px"),e.top=""):(e.top="".concat(this.topPosition,"px"),e.bottom="")}},e.prototype.removeMiniMap=function(){var e;this.miniMapContainer&&(null===(e=this.container)||void 0===e||e.removeChild(this.miniMapContainer))},e.prototype.updateBounds=function(e){e&&this.updateElementAreaBounds(e),this.updateViewPortBounds(),this.bounds={left:Math.min(this.elementAreaBounds.left,this.viewPortBounds.left),right:Math.max(this.elementAreaBounds.right,this.viewPortBounds.right),top:Math.min(this.elementAreaBounds.top,this.viewPortBounds.top),bottom:Math.max(this.elementAreaBounds.bottom,this.viewPortBounds.bottom)}},e.prototype.updateElementAreaBounds=function(e){var t={left:0,right:0,top:0,bottom:0},n=e.nodes;n&&n.length>0&&n.forEach((function(e){var n,i,o=e.x,r=e.y,a=null!==(n=e.width)&&void 0!==n?n:200,s=null!==(i=e.height)&&void 0!==i?i:200,l=o-a/2,u=o+a/2,c=r-s/2,d=r+s/2;t.left=Math.min(l,t.left),t.right=Math.max(u,t.right),t.top=Math.min(c,t.top),t.bottom=Math.max(d,t.bottom)})),this.elementAreaBounds=t},e.prototype.updateViewPortBounds=function(){var e=this.lf.getTransform(),t=e.TRANSLATE_X,n=e.TRANSLATE_Y,i=e.SCALE_X,o=e.SCALE_Y,r=this.lf.graphModel,a=r.width,s=r.height;this.viewPortBounds={left:-t/i,right:(-t+a)/i,top:-n/o,bottom:(-n+s)/o}},e.prototype.resetData=function(e){var t=e.nodes,n=e.edges;return t.forEach((function(e){e.text=void 0})),this.showEdge&&n.forEach((function(e){e.text=void 0})),{nodes:t,edges:this.showEdge?n:[]}},e.prototype.setView=function(e){var t,n;if(void 0===e&&(e=!0),e){var i=this.lf.getGraphRawData(),o=this.resetData(i),r=this.lf.viewMap,a=this.lf.graphModel.modelMap,s=this.lfMap.viewMap;try{for(var l=w(r.keys()),u=l.next();!u.done;u=l.next()){var c=u.value;s.has(c)||this.lfMap.register({type:c,view:r.get(c),model:a.get(c)})}}catch(e){t={error:e}}finally{try{u&&!u.done&&(n=l.return)&&n.call(l)}finally{if(t)throw t.error}}this.lfMap.render(o),this.updateBounds(o)}else this.updateBounds();var d=this.bounds,h=d.left,f=d.top,p=d.right-h,g=d.bottom-f,v=this.width/p,m=this.height/g,y=Math.min(v,m);this.scale=y;var b=h-(this.width/y-p)/2,x=f-(this.height/y-g)/2;if(this.lfMap.graphModel.transformModel.translate(-b+this.translateX,-x+this.translateY),this.translateX=b,this.translateY=x,this.miniMapWrap.firstChild){var E=this.miniMapWrap.firstChild.style;E.pointerEvents="none",E.transform="matrix(".concat(y,", 0, 0, ").concat(y,", 0, 0)"),E.transformOrigin="left top",E.height="".concat(this.height/y,"px"),E.width="".concat(this.width/y,"px"),this.updateViewPort()}},e.prototype.updateViewPort=function(){var e=this.viewport.style,t=this.lf.getTransform(),n=t.TRANSLATE_X,i=t.TRANSLATE_Y,o=t.SCALE_X,r=t.SCALE_Y,a=this.lf.graphModel,s=a.width,l=a.height;this.viewPortLeft=-n/o,this.viewPortTop=-i/r,this.viewPortWidth=s/o*this.scale,this.viewPortHeight=l/r*this.scale,e.width="".concat(this.viewPortWidth,"px"),e.height="".concat(this.viewPortHeight,"px"),e.left="".concat((this.viewPortLeft-this.translateX)*this.scale,"px"),e.top="".concat((this.viewPortTop-this.translateY)*this.scale,"px")},e.prototype.createViewPort=function(){var e=document.createElement("div");e.className="lf-minimap-viewport",e.addEventListener("mousedown",this.startDrag),e.addEventListener("click",(function(e){e.stopPropagation()})),this.viewport=e},e.prototype.destroy=function(){n.destroyTeleportContainer(this.lfMap.graphModel.flowId),this.lf.off("graph:resize",this.onGraphResize)},e.pluginName="miniMap",e}(),hm=function(){function e(e){var t,n=e.lf,i=e.options,o=this;this.disabled=!0,this.isWholeNode=!0,this.isWholeEdge=!0,this.exclusiveMode=!1,this.mouseDownInfo=null,this.originalStopMoveGraph=!1,this.handleBlankMouseDown=function(e){var t=e.e;o.handleMouseDown(t)},this.draw=function(e){var t=o.lf.getPointByClient(e.clientX,e.clientY).domOverlayPosition,n=t.x,i=t.y;if(o.endPoint={x:n,y:i},o.startPoint){var r=o.startPoint,a=r.x,s=r.y,l=a,u=s,c=n-a,d=i-s;n0&&o.lf.emit("selection:drop",{e:e}),o.lf.emit("selection:selected",{elements:v,leftTopPoint:c,rightBottomPoint:d})}o.wrapper&&(o.wrapper.oncontextmenu=null,o.container&&o.wrapper.parentNode===o.container&&o.container.removeChild(o.wrapper),o.wrapper=void 0)},this.lf=n,this.exclusiveMode=null!==(t=null==i?void 0:i.exclusiveMode)&&void 0!==t&&t,n.openSelectionSelect=function(){o.openSelectionSelect()},n.closeSelectionSelect=function(){o.closeSelectionSelect()},n.setSelectionSelectMode=function(e){o.setExclusiveMode(e)},this.handleMouseDown=this.handleMouseDown.bind(this),this.draw=this.draw.bind(this),this.drawOff=this.drawOff.bind(this)}return e.prototype.render=function(e,t){this.container=t},e.prototype.cleanupSelectionState=function(){this.wrapper&&(this.wrapper.oncontextmenu=null,this.container&&this.wrapper.parentNode===this.container&&this.container.removeChild(this.wrapper),this.wrapper=void 0),this.startPoint=void 0,this.endPoint=void 0,this.mouseDownInfo=null,document.removeEventListener("mousemove",this.draw),document.removeEventListener("mouseup",this.drawOff)},e.prototype.setExclusiveMode=function(e){void 0===e&&(e=!1),this.exclusiveMode!==e&&(this.cleanupSelectionState(),this.exclusiveMode=e,this.container&&!this.disabled&&(this.removeEventListeners(),this.addEventListeners()))},e.prototype.addEventListeners=function(){this.container&&(this.exclusiveMode?(this.container.style.pointerEvents="auto",this.container.addEventListener("mousedown",this.handleMouseDown)):(this.container.style.pointerEvents="none",this.lf.on("blank:mousedown",this.handleBlankMouseDown)))},e.prototype.removeEventListeners=function(){this.container&&(this.container.style.pointerEvents="none",this.container.removeEventListener("mousedown",this.handleMouseDown)),this.lf.off("blank:mousedown",this.handleBlankMouseDown)},e.prototype.handleMouseDown=function(e){var t;if(this.container&&!this.disabled&&!(2===e.button)){this.cleanupSelectionState(),this.mouseDownInfo={x:e.clientX,y:e.clientY,time:Date.now()},this.originalStopMoveGraph=this.lf.getEditConfig().stopMoveGraph,this.lf.updateEditConfig({stopMoveGraph:!0});var n=this.lf.getPointByClient(e.clientX,e.clientY).domOverlayPosition,i=n.x,o=n.y;this.startPoint={x:i,y:o},this.endPoint={x:i,y:o};var r=document.createElement("div");r.className="lf-selection-select",r.oncontextmenu=function(e){e.preventDefault()},r.style.top="".concat(this.startPoint.y,"px"),r.style.left="".concat(this.startPoint.x,"px"),null===(t=this.container)||void 0===t||t.appendChild(r),this.wrapper=r,document.addEventListener("mousemove",this.draw),document.addEventListener("mouseup",this.drawOff)}},e.prototype.setSelectionSense=function(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0),this.isWholeEdge=e,this.isWholeNode=t},e.prototype.openSelectionSelect=function(){this.disabled||this.closeSelectionSelect(),this.container&&(this.cleanupSelectionState(),this.addEventListeners(),this.open())},e.prototype.closeSelectionSelect=function(){if(this.container){if(this.wrapper&&this.startPoint&&this.endPoint){var e=Bs(this.endPoint),t=new MouseEvent("mouseup",{clientX:e.x,clientY:e.y});this.drawOff(t)}this.cleanupSelectionState(),this.removeEventListeners(),this.close()}},e.prototype.open=function(){this.disabled=!1},e.prototype.close=function(){this.disabled=!0},e.pluginName="selectionSelect",e}(),fm=function(e,t){var n=[],i=[],o=function(e,i,r){e&&(r&&i.unshift.apply(i,C([],E(t.getEdgeModels({sourceNodeId:e.id,targetNodeId:null==r?void 0:r.id}).map((function(e){return e.id}))),!1)),i.includes(e.id)?n.push(i):(i.unshift(e.id),e.incoming.nodes.length?e.incoming.nodes.forEach((function(t){o(t,i.slice(),e)})):n.push(i)))},r=function(e,n,o){e&&(o&&n.push.apply(n,C([],E(t.getEdgeModels({sourceNodeId:null==o?void 0:o.id,targetNodeId:e.id}).map((function(e){return e.id}))),!1)),n.includes(e.id)?i.push(n):(n.push(e.id),e.outgoing.nodes.length?e.outgoing.nodes.forEach((function(t){r(t,n.slice(),e)})):i.push(n)))};return o(e,[]),r(e,[]),C([],E(new Set(C(C([],E(n.flat()),!1),E(i.flat()),!1))),!1)},pm=function(){function e(e){var t=e.lf,n=e.options;this.mode="path",this.enable=!0,this.tempStyles={};var i=n.mode,o=void 0===i?"path":i,r=n.enable,a=void 0===r||r;this.lf=t,this.mode=o,this.enable=a}return e.prototype.setMode=function(e){this.mode=e},e.prototype.setEnable=function(e){this.enable=e},e.prototype.highlightSingle=function(e){var t=this.lf.getModelById(e);"node"===(null==t?void 0:t.BaseType)?t.updateStyles(this.tempStyles[e]):"edge"===(null==t?void 0:t.BaseType)&&(t.updateStyles(this.tempStyles[e]),t.sourceNode.updateStyles(this.tempStyles[t.sourceNode.id]),t.targetNode.updateStyles(this.tempStyles[t.targetNode.id])),this.lf.emit("highlight:single",{data:t})},e.prototype.highlightNeighbours=function(e){var t=this,n=this.lf.getModelById(e),i=[];if("node"===(null==n?void 0:n.BaseType)){n.updateStyles(this.tempStyles[e]);var o=n.incoming,r=o.nodes,a=o.edges,s=n.outgoing,l=s.nodes,u=s.edges;js(r,l).forEach((function(e){e.updateStyles(t.tempStyles[e.id])})),js(a,u).forEach((function(e){e.updateStyles(t.tempStyles[e.id])})),i=qf(js(i,r,l,a,u),"id")}else"edge"===(null==n?void 0:n.BaseType)&&(n.updateStyles(this.tempStyles[e]),n.sourceNode.updateStyles(this.tempStyles[n.sourceNode.id]),n.targetNode.updateStyles(this.tempStyles[n.targetNode.id]),i=[n.sourceNode,n.targetNode]);this.lf.emit("highlight:neighbours",{data:n,relateElements:i})},e.prototype.highlightPath=function(e){var t=this,n=function(e,t){var n=t.getModelById(e);return fm("node"===(null==n?void 0:n.BaseType)?n:null==n?void 0:n.targetNode,t)}(e,this.lf),i=[];n.forEach((function(e){var n=t.lf.getModelById(e);null==n||n.updateStyles(t.tempStyles[e]),i.push(n)})),this.lf.emit("highlight:path",{data:this.lf.getModelById(e),relateElements:i})},e.prototype.highlight=function(e,t){var n=this;(void 0===t&&(t=this.mode),this.enable)&&(Object.keys(this.tempStyles).length&&this.restoreHighlight(),Object.values(this.lf.graphModel.modelsMap).forEach((function(e){var t="node"===e.BaseType?e.getNodeStyle():e.getEdgeStyle();n.tempStyles[e.id]=v({},t),e.setStyles({opacity:.1})})),{single:this.highlightSingle.bind(this),neighbour:this.highlightNeighbours.bind(this),path:this.highlightPath.bind(this)}[t](e))},e.prototype.restoreHighlight=function(){var e=this;Object.keys(this.tempStyles).length&&(Object.values(this.lf.graphModel.modelsMap).forEach((function(t){var n,i=null!==(n=e.tempStyles[t.id])&&void 0!==n?n:{};t.updateStyles(v({},i))})),this.tempStyles={})},e.prototype.render=function(){var e=this;this.lf.on("node:mouseenter",(function(t){var n=t.data;return e.highlight(n.id)})),this.lf.on("edge:mouseenter",(function(t){var n=t.data;return e.highlight(n.id)})),this.lf.on("node:mouseleave",this.restoreHighlight.bind(this)),this.lf.on("edge:mouseleave",this.restoreHighlight.bind(this)),this.lf.on("history:change",this.restoreHighlight.bind(this))},e.prototype.destroy=function(){},e.pluginName="highlight",e}(),gm={tr:"tl",lb:"tl",tl:"tr",rb:"tr",br:"bl",lt:"bl",bl:"br",rt:"br"};function vm(e,t,n,i){var o,r="",a="";e[0]===t[0]?r=e[1]>t[1]?"t":"b":e[1]===t[1]&&(r=e[0]>t[0]?"l":"r"),t[0]===n[0]?a=t[1]>n[1]?"t":"b":t[1]===n[1]&&(a=t[0]>n[0]?"l":"r");var s=Math.min(Math.hypot(t[0]-e[0],t[1]-e[1])/2,Math.hypot(n[0]-t[0],n[1]-t[1])/2,i)||.2*i,l="".concat(r).concat(a),u=gm[l]||"-",c="L ".concat(e[0]," ").concat(e[1]);if("-"===u)c+="L ".concat(t[0]," ").concat(t[1]," L ").concat(n[0]," ").concat(n[1]);else{var d=E(function(e,t,n,i){var o=[e[0],e[1]],r=[e[0],e[1]];switch(n){case"tl":return"tr"===t?(o[1]+=i,r[0]+=i):"lb"===t&&(o[0]+=i,r[1]+=i),[o,r];case"tr":return"tl"===t?(o[1]+=i,r[0]-=i):"rb"===t&&(o[0]-=i,r[1]+=i),[o,r];case"bl":return"br"===t?(o[1]-=i,r[0]+=i):"lt"===t&&(o[0]+=i,r[1]-=i),[o,r];case"br":return"bl"===t?(o[1]-=i,r[0]-=i):"rt"===t&&(o[0]-=i,r[1]-=i),[o,r];default:return[]}}(t,l,u,s),2),h=d[0],f=d[1];h&&f&&(c+="L ".concat(h[0]," ").concat(h[1]," Q ").concat(t[0]," ").concat(t[1]," ").concat(f[0]," ").concat(f[1]),o=E(f,2),t[0]=o[0],t[1]=o[1])}return c}function mm(e,t){var n=0,i="";if(2===e.length)i+="M".concat(e[n][0]," ").concat(e[n++][1]," L ").concat(e[n][0]," ").concat(e[n][1]);else{for(i+="M".concat(e[n][0]," ").concat(e[n++][1]);n+11&&setTimeout((function(){var e;t.updatePointsByNodes((null===(e=t.properties)||void 0===e?void 0:e.node_selection_ids)||[])}))},t.prototype.getNodeStyle=function(){var t=e.prototype.getNodeStyle.call(this);return t.stroke=this.properties.strokeColor||"#008000",t.strokeDasharray="10 5",t},t.prototype.getDefaultAnchor=function(){return[]},t.prototype.updatePoints=function(e){this.points=e},t.prototype.updateCoordinate=function(e){var t=e.x,n=e.y;this.x=t,this.y=n},t.prototype.updatePointsByNodes=function(e){var t=this,n=[],i=1/0,o=1/0,r=-1/0,a=-1/0;e.forEach((function(e){var n=t.graphModel.getNodeModelById(e);if(n){var s=n.width,l=n.height,u=n.x,c=n.y;i=Math.min(i,u-s/2-t.d),o=Math.min(o,c-l/2-t.d),r=Math.max(r,u+s/2+t.d),a=Math.max(a,c+l/2+t.d)}})),n.push([i,o],[r,o],[r,a],[i,a]),[i,o,r,a].some((function(e){return Math.abs(e)===1/0}))||(this.updatePoints(n),this.updateCoordinate({x:(r+i)/2,y:(a+o)/2}))},t.prototype.resize=function(t){var n;this.isResize=!0;for(var i=t.width,o=t.height,r=i/this.width,a=o/this.height,s=(this.properties.node_selection_ids||[]).slice(),l=[],u=new Set;s.length;){var c=s.shift(),d=null===(n=this.graphModel.nodesMap[c])||void 0===n?void 0:n.model;d&&(Nm(d)?u.has(d.id)||(u.add(d.id),s.push.apply(s,C([],E(d.properties.node_selection_ids||[]),!1))):l.push(d))}var h=this.x-this.width/2,f=this.y-this.height/2,p=e.prototype.resize.call(this,t),g=this.x-this.width/2,v=this.y-this.height/2;return l.forEach((function(e){e.width=e.width*r,e.height=e.height*a;var t=(e.x-h)*r+g-e.x,n=(e.y-f)*a+v-e.y;e.move(t,n,!0)})),this.isResize=!1,p},t}(t.PolygonNodeModel),Em="node-selection",Cm=function(){function e(e){var t=e.lf;this.selectNodes=[],this.d=10,this.lf=t,t.register({type:Em,view:xm,model:wm})}return Object.defineProperty(e.prototype,"selectNodesIds",{get:function(){return this.selectNodes.map((function(e){return e.id}))},enumerable:!1,configurable:!0}),e.prototype.addNodeSelection=function(){this.lf.addNode({type:"node-selection",text:"",properties:{node_selection_ids:this.selectNodesIds},x:0,y:0}).updatePointsByNodes(this.selectNodesIds)},e.prototype.updateNodeSelection=function(){var e,t=this.getNodeSelection();t&&(this.lf.setProperties(t.id,{node_selection_ids:this.selectNodesIds}),null===(e=this.lf.getNodeModelById(t.id))||void 0===e||e.updatePointsByNodes(this.selectNodesIds))},e.prototype.getNodeSelection=function(){var e=this,t=this.selectNodesIds,n=this.lf.getGraphRawData(),i=t.filter((function(t){return t!==e.currentClickNode.id}));return n.nodes.find((function(e){if("node-selection"===e.type){var t=Fo(e,"properties.node_selection_ids",[]);return i.every((function(e){return t.includes(e)}))}return!1}))},e.prototype.onNodeChange=function(e,t){var n=e.graphModel.nodes.filter((function(e){return!!Nm(e)&&(e.properties.node_selection_ids||[]).includes(t.id)}));Promise.resolve().then((function(){n.forEach((function(e){e.updatePointsByNodes(e.properties.node_selection_ids||[])}))}))},e.prototype.render=function(e){var t=this;this.lf=e,e.on("node:click",(function(n){var i;if(n.e.shiftKey&&n.data.type!==Em){t.currentClickNode=n.data;var o=!1;t.selectNodesIds.includes(n.data.id)&&(null===(i=t.lf.getNodeModelById(n.data.id))||void 0===i||i.setSelected(!1),o=!0);var r=e.getSelectElements(!0).nodes;t.selectNodes=r,1===t.selectNodes.length?o?t.updateNodeSelection():t.addNodeSelection():t.selectNodes.length>1&&t.updateNodeSelection()}})),e.graphModel.addNodeMoveRules((function(n,i,o){if(t.onNodeChange(e,n),Nm(n)&&!n.isResize){var r=n.properties.node_selection_ids||[];return e.graphModel.moveNodes(r,i,o,!0),!0}return!0})),e.graphModel.addNodeResizeRules((function(n){return Nm(n)||t.onNodeChange(e,n),!0}))},e.pluginName="node-selection",e}(),Nm=function(e){return!(!e||e.type!==Em)},_m=function(e){function n(){return null!==e&&e.apply(this,arguments)||this}return g(n,e),n.prototype.getLabelShape=function(){var e=this.props.model,n=e.x,i=e.y,o=e.width,r=e.height,a=e.properties;return t.h("text",{x:n-o/2+5,y:i-r/2+16,fontSize:12,fill:"blue"},a.moreText)},n.prototype.getShape=function(){var e=this.props.model,n=e.x,i=e.y,o=e.width,r=e.height,a=this.props.model.getNodeStyle();return t.h("g",{},[t.h("rect",v(v({},a),{fill:"#FFFFFF",x:n-o/2,y:i-r/2})),this.getLabelShape()])},n}(t.RectNode),Sm={pluginName:"rectLabelNode",install:function(e){e.register({type:"rect-label",model:t.RectNodeModel,view:_m})}};e.AutoLayout=Jv,e.BPMNAdapter=Kg,e.BPMNBaseAdapter=Vg,e.BPMNElements=sg,e.BoundaryEventFactory=we,e.BpmnAdapter=de,e.BpmnElement=q,e.BpmnXmlAdapter=he,e.ContextMenu=um,e.Control=em,e.CurvedEdge=ym,e.CurvedEdgeModel=bm,e.DiamondResize=zp,e.DiamondResizeModel=Hp,e.DiamondResizeView=Wp,e.DndPanel=cm,e.DynamicGroup=ov,e.DynamicGroupNode=Qg,e.DynamicGroupNodeModel=ev,e.EllipseResize=Fp,e.EllipseResizeModel=Bp,e.EllipseResizeView=jp,e.EndEventFactory=ye,e.EndEventModel=k,e.EndEventView=R,e.ExclusiveGatewayModel=L,e.ExclusiveGatewayView=B,e.FlowPath=Kv,e.GatewayNodeFactory=Pe,e.Group=eg,e.GroupNode=Zp,e.GroupNodeModel=$p,e.Highlight=pm,e.HtmlResize=qp,e.HtmlResizeModel=Gp,e.HtmlResizeView=Up,e.InsertNodeInPolyline=dv,e.IntermediateCatchEventFactory=be,e.IntermediateThrowEventFactory=Ee,e.Label=Fv,e.Menu=sm,e.MiniMap=dm,e.NodeResize=Yp,e.NodeSelection=Cm,e.ProximityConnect=Qv,e.RectLabelNode=Sm,e.RectResize=Kp,e.RectResizeModel=Xp,e.RectResizeView=Vp,e.SelectionSelect=hm,e.SequenceFlowModel=O,e.SequenceFlowView=P,e.ServiceTaskModel=F,e.ServiceTaskView=H,e.Snapshot=Vv,e.StartEventFactory=xe,e.StartEventModel=M,e.StartEventView=T,e.SubProcessFactory=tg,e.TaskNodeFactory=Le,e.UserTaskModel=z,e.UserTaskView=G,e.bpmnUtils=me,e.convertNormalToXml=Hg,e.convertXmlToNormal=Wg,e.dynamicGroup=nv,e.gateway={exclusive:0,inclusive:1,parallel:2},e.gatewayComposable=[[1,1,0],[0,0,1],[0,1,1]],e.getCurvedEdgePath=mm,e.handleAttributes=$,e.icons=Oe,e.lfJson2Xml=Q,e.lfXml2Json=ne,e.multiInstanceIcon=Ie,e.sequenceFlowFactory=ig,e.toLogicflowData=function(e){var t={nodes:[],edges:[]},n=e.flowElementList;return n&&n.length>0&&n.forEach((function(e){if(e.type===Yg.SEQUENCE_FLOW){var n=function(e){var t=e.incoming,n=e.outgoing,i=e.properties,o=e.key,r=e.type,a=i.text,s=i.name,l=i.startPoint,u=i.endPoint,c=i.pointsList,d={id:o,type:$g[r],sourceNodeId:t[0],targetNodeId:n[0],text:a||s,properties:{}};l&&(d.startPoint=JSON.parse(l)),u&&(d.endPoint=JSON.parse(u)),c&&(d.pointsList=JSON.parse(c));var h=["startPoint","endPoint","pointsList","text"];return Object.keys(e.properties).forEach((function(t){-1===h.indexOf(t)&&(d.properties[t]=e.properties[t])})),d}(e);t.edges.push(n)}else{var i=function(e){var t=e.properties,n=e.key,i=e.type,o=e.bounds,r=t.x,a=t.y,s=t.text;if(void 0===r){var l=E(o,2),u=l[0],c=u.x,d=u.y,h=l[1];r=(c+h.x)/2,a=(d+h.y)/2}var f={id:n,type:$g[i],x:r,y:a,text:s,properties:{}},p=["x","y","text"];return Object.keys(e.properties).forEach((function(t){-1===p.indexOf(t)&&(f.properties[t]=e.properties[t])})),f}(e);t.nodes.push(i)}})),t},e.toNormalJson=ae,e.toTurboData=function(e){var t=new Map,n={flowElementList:[]};return e.nodes.forEach((function(e){var i=function(e){var t=e.id,n=e.type,i=e.x,o=e.y,r=e.text,a=void 0===r?"":r,s=e.properties;return{incoming:[],outgoing:[],dockers:[],type:Zg(n),properties:v(v({},s),{name:a&&a.value||"",x:i,y:o,text:a}),key:t}}(e);n.flowElementList.push(i),t.set(e.id,i)})),e.edges.forEach((function(e){var i=function(e){var t=e.id,n=e.type,i=e.sourceNodeId,o=e.targetNodeId,r=e.startPoint,a=e.endPoint,s=e.pointsList,l=e.text,u=void 0===l?"":l,c=e.properties;return{incoming:[i],outgoing:[o],type:Zg(n),dockers:[],properties:v(v({},c),{name:u&&u.value||"",text:u,startPoint:JSON.stringify(r),endPoint:JSON.stringify(a),pointsList:JSON.stringify(s)}),key:t}}(e);t.get(e.sourceNodeId).outgoing.push(i.key),t.get(e.targetNodeId).incoming.push(i.key),n.flowElementList.push(i)})),n},e.toXmlJson=re,e.useDefinition=ag})); +//# sourceMappingURL=index.min.js.map